SpringMVC框架的搭建(非注解形式)

六、SpringMVC框架的搭建(非注解形式)


按照如上描述,Spring的基本配置可以分为如下几步:
第一步:构建Web项目
第二步:导入所需jar包
第三步:配置核心处理器DispatcherServlet
第四步:构建处理器(重要)
第五步:配置处理器适配器(可省略)
第六步:配置处理器映射器(可省略)
第七步:配置处理器
第八步:配置视图解析器

6.1)构建web工程:
请在自己的IDE工具中选择合适的Dynamic Web Project工程创建
6.2)导入所需的jar包
在lib目录下放入如下jar包,这是初始jar包,根据后续需求会陆续加入jar包(发给大家的springmvc_jar文件下的所有的jar包)。

6.3)配置SpringMVC的核心控制器(DispatcherServlet)
SpringMVC的核心控制器DispatcherServlet对象就是一个Servlet对象,继承自HttpServlet,所以需要在web.xml文件中配置Servlet 和Servlet-Mapping。

SpringMVC是Spring提供的一个模块,Spring所有的模块都是基于Spring IOC功能的。所以SpringMVC的DispatcherServlet对象在初始化之前也会去实例化Spring的容器对象(ApplicationContext),那么就需要读取Spring的配置文件。默认SpringMVC会在你web应用的WEB-INF目录下查找一个名字为[servlet-name]-servlet.xml文件,并且创建在这个文件中定义的bean对象
例如:
<servlet>
<servlet-name>smvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>smvc</servlet-name>
<!--这里将url设置为*.action代表拦截所有以.action结尾的请求-->
<url-pattern>*.action</url-pattern>
</servlet-mapping>

如上配置,springMVC会去当前应用的WEB-INF目录下查找名字为smvc-servlet.xml文件。这个配置文件中将包含你的Spring Web MVC 指定的所有组件bean。你可以修改通过设置serlvet的初始化参数改变这个配置文件的位置:

<servlet>
<servlet-name>smvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springmvc-core.xml</param-value>
</init-param>
</servlet>

6.4)构建处理器(Handler/Controller)
Handler/Controller属于开发人员定义,用来接收DispatcherServlet对象转交过来的请求,根据请求不同,调用不同的业务逻辑,然后根据业务逻辑的返回结果返回不同的视图和模型。
因为Handler需要被DispatcherServlet对象识别并处理,所以所有的Handler都需要遵循相同的规则:也就是Spring提供的接口Controller.实际上这个对象控制程序的流向,所以一般我也叫它业务逻辑控制器。

例如:
public class FirstController implements Controller{


public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
//获取页面传递的参数,按照ServletAPI的操作
String param = request.getParameter("param");
System.out.println("页面获取的参数:"+param);
//ModelAndView对象中包含要返回的业务逻辑视图,和要渲染的数据模型
ModelAndView mv = new ModelAndView();
//设置视图名,可以是字符串,也可以是View对象 index.jsp的相对路径开始于工程
mv.setViewName("index.jsp");
//要返回给页面的数据模型,Model,可以再页面直接使用el表达式取值。
Map<String, String> map = new HashMap<String, String>();
map.put("rsKey","返回给页面的属性值");
//将数据模型添加到ModelAndView中,数据模型可以是任何javaBean对象。
mv.addAllObjects(map);
return mv;
}
}

Controller中只有一个需要实现的方法就是handleRequest方法,方法中接收两个参数,分别对应Servlet对象中的request,response对象。可以从request中获取客户端提交过来的请求参数。
返回值ModelAndView,既包含要返回给客户端浏览器的逻辑视图又包含要对视图进行渲染的数据模型。

6.5) 配置处理器适配器(可省略)
想要正确运行自定义的用来处理用户请求的处理器,需要配置处理器适配器,在spring的配置文件中(也就是刚刚在web.xml文件中配置的spring的配置文件),进行如下配置:
<!-- 配置处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>

note:可以省略的原因是SpringMVC提供的DispatcherServlet对象提供了,很多默认的配置(默认配置在:org.springframework.web.servlet包下的DispatcherServlet.properties文件中)。默认配置里边对SpringMVC的很多bean对象做了描述。接下来所有可省略的配置都是使用了默认配置。

6.6) 配置处理器映射器(可省略)
Spring容器需要根据处理器映射器来讲用户提交的请求url跟后台Handler进行绑定,所以需要使用处理器映射器来进行处理。
<!-- 配置处理器映射器 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
6.7).配置处理器
在处理器中只有唯一的一个非静态的方法需要运行,那么就需要构建处理器对象,这个对象按照spring的规则,需要让spring容器维护.而且我们也需要告诉SpringMVC的DispatcherServlet对象,当遇见一个什么样的url请求时,将请求转交给我们自定义的Controller对象。
<!-- 配置处理器 
name:代表了将来用户访问时,指明的url和name值一样时,访问class所指定的对象。
name的值需要带上路径信息,/不能省略
--> 
<bean name="/first.action" class="com.briup.controller.FirstController"></bean>

6.8).配置视图解析器(如无特殊需求,可省略)
当处理器执行完成后,返回给spring容器一个ModelAndView对象,这个对象需要能够被解析spring容器解析成相对应的视图,并且使用返回的Model数据对视图进行渲染。
<!-- 配置视图解析器 
如下注入的所有属性,如果不需要可以一个都没有。
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver”>
<!-- 如果要返回的所有的视图都在同一个package下,比如都在/WEB-INF下,可以使用同一的前缀 -->
<!-- <property name="prefix" value="/WEB-INF/"></property> -->
<!-- 如果所有页面返回的均是.jsp页面,可以省略后缀 -->
<!-- <property name="suffix" value=".jsp"></property> -->
</bean>

如果配置设置为如上操作,那么在自定义的Handler中返回的视图的名字不能有后缀.jsp,并且页面一定放在/WEB-INF目录下。

如上,基于SpringMVC的第一个应用程序的非注解形式的配置完成。但是在如上配置中,对于Spring配置文件中的处理器适配器,处理器映射器,视图解析器等都的配置都可以省略,他们在spring的jar中都拥有默认的配置的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值