springmvc核心配置文件以及spirngmvc工作流程(一)

一、三种URL映射方法
1、第一种通过beanname的方式查找对应的Controller
如下代码当访问http://localhost:8080/user.do此种url时,第一行中的代码会去下面查找是否有bean的name属性为user.do,从而找对对应的Controller控制类

 <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
  <bean name="/user.do " class="com.gyf.backoffice.web.controller.UserController"/>

2、第二种方式通过id查找
此方法会查找bean的id为userController 此时访问路径可以为多个方式例如user1.do
user2.do user3.do

 <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="mappings">
      <props>
          <prop key="/user1.do">userController</prop>
          <prop key="/user2.do">userController</prop>
          <prop key="/user3.do">userController</prop>
      </props>
  </property>
  </bean>
    <bean id="userController" class="com.gyf.backoffice.web.controller.UserController"/>

3、第三种方式直接通过类的控制器名称来访问.此时直接访问http://localhost:8080/userController.do就可以访问该控制类,只需要类名的首字母小写

<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
<bean  class="com.gyf.backoffice.web.controller.UserController"/>

二、配置控制器处理适配器
1、第一种方式简单的适配器,可以执行Controller调用Controller类中的handleRequest()方法返回ModelAndView 。此方法中的控制类实现的是Controller接口例如

public class UserController implements Controller{

    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {

        ModelAndView mav = new ModelAndView("user/userlist1");

        mav.addObject("name","gyf");
        return mav;
    }
}对应的DispatcherServlet-servlet.xml配置文件中控制器处理适配器的写法如下
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>

2、第二种方式
此种方式控制器实现的是HttpRequestHandler接口,接口中的方法返回的是void类型

public class HttpController implements HttpRequestHandler{
    @Override
    public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setAttribute("name","gyf102");
        request.getRequestDispatcher("WEB-INF/views/user/userlist1.jsp").forward(request,response);
    }
}对应的配置文件为
 <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
 <bean name="/http.do" class="com.gyf.backoffice.web.controller.HttpController"/>

如上配置后访问http://localhost:8080/http.do可以得到相同的结果

总结

DispatcherServlet-servlet.xml文件中的核心配置如下

 <!-- 1.配置url处理映射-->
   <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <!-- 2.配置控制器处理适配器-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
    <!-- 3.配置控制器-相当于配置了访问路径-->
    <bean name="/user.do " class="com.gyf.backoffice.web.controller.UserController"/>
    <!-- 4.配置资源视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/views/"></property>
        <!--后缀-->
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <!-- 配置:所有请求由SpringMVC管理 -->
    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <filter>
        <filter-name>EncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>EncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

核心部件分别为dispatcherServlet,handlermapping,handlerAdapter,Controller,viewResolver,view几个核心部件。
例如当访问http://localhost:8080/user.do时会先通过web.xml中的配置文件,此时文件上面配置了DispatcherServlet,此时会自动查找WEB-INF目录下的DispatcherServlet-servlet.xml文件。后台通过配置一中的url映射通过URL路径最后的user.do查找配置文件中是否有bean 的name为user.do至此找到了配置三对应的Controller类让后启动配置二的作用执行Controller类,并调用类中的handleRequest方法
此时进入Controller类中执行返回modelandview类,交给控制器是适配器。适配器将在将它交给dispatcherServlet(前端控制器),前端控制器在调用viewResolver(视频解析器)对view进行填充渲染,最后将处理后的view返回给用户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值