第一个Spring MVC简单的入门程序

SpringMVC和之前我们自己写的MVC程序的好处是,我感觉哈,SpringMVC已经帮我们把好多事情搞好了,之前我写的MVC,有前端控制器,很多很多个后端控制器,配置文件啥的,SpringMVC也有这些,我们在使用SpringMVC的时候我们不需要写前端控制器了,但是可能对我们说,我们要进行各种各样的配置,比如我们要建立一个maven项目,我数了一下,有三个配置文件,可能对初学的我们对这些多的配置是很烦的,还不如用我们之前的MVC,原因是什么呢?因为我们之前的MVC已经写得很熟了,现在刚刚接触Spring框架,很流利的上手是会有点难,像这些框架是是简化我们代码的,像工具一样,熟能生巧。

SpringMVC入门程序:

一、首先我们创建一个maven项目,在pom.xml配置文件添加相应的jar包。(上一个博客有贴jar包代码)

之后我们在web.xml配置文件配置我们的DispatcherServlet(前端)控制器,

	<servlet>
		<!-- 这里的名字可以随便起,但是为了我们方便管理,最好是项目名称 -->
		<servlet-name>SpringBasicMVC01</servlet-name>
		<!-- 前端控制器的完全限定名,可以通过从我们的jar包中拿到这个名字 -->
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<!-- 这个是DispatcherServlet控制器要读取的字段名,不可以随便起! -->
			<param-name>contextConfigLocation</param-name>
			<!-- 按照这个格式填写,SpringBasicMVC01.xml这个配置文件名和接下来我们在资源文件中创建的文件名要一致
				之后DispatcherServlet控制器会读取里面的配置信息
			 -->
			<param-value>classpath:SpringBasicMVC01.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<!-- 这个要和上面的servlet-name名称保持一致! -->
		<servlet-name>SpringBasicMVC01</servlet-name>
		<!-- 拦截的url,这样写的是任意以.do结尾的请求都会进入DispatcherServlet控制器 -->
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

二、我们写一个index.jsp页面,用一个超链接来演示

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="${pageContext.request.contextPath }/test.do">1.访问Controller</a>
</body>
</html>

这里的${pageContext.request.contextPath }/test.do是url,之后电击这个超链接会被DispatcherServlet拦截到,${pageContext.request.contextPath }这个是EL表达式,网页上显示的是项目名,这样为了灵活,不写死。

三、写后端控制器和SpringBasicMVC02.xml配置文件

(后端控制器是相对前端而言的,为了便于区分,不混淆。)

/**
 * 后端控制器
 * 实现Controller接口,实现接口的handleRequest方法
 * 当然实现哪个接口根据我们SpringBasicMVC01.xml配置文件中的处理器决定的
 * @author: 满脑子代码的祝大朋
 * @date: 2019年1月10日 下午7:05:48
 */
public class WebAction implements Controller
{
	@Override
	public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp ) throws Exception
	{
		//实例化ModelAndView对象
		ModelAndView mv = new ModelAndView();
		//添加模型数据
		mv.addObject("data", "66666");
		//设置下一视图
		mv.setViewName("main");
		//返回
		return mv;
	}
}

接下来要在SpringBasicMVC02.xml配置文件配置相关的处理器,映射器,视图解析器

处理器决定自定义的Controller如何实现

映射器决定客户端传递过来的url如何映射到对象的Controller

视图解析器决定如何生成响应给客户端

<!-- 配置处理器 -->
   <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
   
   <!-- 配置映射器 -->
   <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
   
   <!-- 配置视图解析器 -->
   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   	<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
   	<!--prefix:前缀 suffix:后缀 这样写的话,/WEB-INF/jsp/main.jsp这样一个连接,只需要在后端控制器写 mian 就行了 -->
   	<property name="prefix" value="/WEB-INF/jsp/"/>
   	<property name="suffix" value=".jsp"/>
   </bean>

   <!-- 设置映射关系,DispatcherServlet(前端)控制器会根据/test.do找到后端控制器(WebAction) -->
   <bean name="/test.do" class="com.study.web.WebAction" />

 此时当我在页面点击超链接,这个请求会进前端控制器,前端控制器会根据这个请求url找到后端控制器,有后端控制器进行相关业务操作之后,返回下一个视图的url再到前端控制器中,前端控制器再进行转向。此时我们转向/WEB-INF/jsp/main.jsp页面

当然,刚刚点在后端控制器代码注释了,实现的接口可以不一样!这些都取决我们的配置文件,感兴趣的可以看一下jar包,里面有很多接口,都有着不能的功能!

/**
 * 实现HttpRequestHandler,上一个实现 Controller接口的话
 * 两者实现的方法就不一样了,这里做个对比
 * Controller接口
 * 		有返回值,返回值类型是ModelAndView
 * 		通过addObject()把信息存入模型数据,模型数据会存入request作用域
 * 		通过setViewName()设置转向下一个视图的名称。
 * HttpRequestHandler接口
 * 		无返回值
 * 		把数据存入到request作用域中和转向方法和我们之前写的一样
 * @author: 满脑子代码的祝大朋
 * @date: 2019年1月10日 下午7:44:36
 */
public class WebAction implements HttpRequestHandler
{
	@Override
	public void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
	{
		req.setAttribute("data", "66666");
		req.getRequestDispatcher("/WEB-INF/jsp/main.jsp").forward(req, resp);
	}
}

 配置也需要改变,需要改处理器和映射器!

代码如下

 <!-- 配置处理器 -->
   <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
   <!-- 配置映射器 -->
	<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="/test.do">webAction</prop>
			</props>
		</property>
	</bean>   
<bean id="webAction" class="com.study.web.WebAction" />

当然,关系映射器和之前一样。 

四、main.jsp代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	This is a main.jsp;
</body>
</html>

经过运行就可以完成这个SpringMVC的简单入门程序了!

记录,总结,分享!学习永远在路上!

猜你喜欢

转载自blog.csdn.net/qq_35340913/article/details/86247596