springmvc入门

第一步:要明白springmvc的原理

                       springmvc和struts2一样在mvc中充当视图层的任务,负责页面的跳转和页面数据的传送和接受。

                        springmvc接受请求和转发请求的流程:

                           1.客户发出请求

                            2.前端控制器DispatcherServlet(通过监听)接受用户的请求

                            3.前端控制器要根据请求向处理器映射器HandlerMapper查找对应的Handler。  

                            4.处理器映射器返回i一个执行链。handleExecutionChain{ handlerInterceptor1

                                                                                                                      handlerInterceptro2

                                                                                                                       handler}  

                            5.前端控制器可以根据执行链,向处理器适配器去请求处理客户请求

                            6.handler适配器进行处理,并且返回ModelAndView

                           7.前端控制器再找视图解析器来解析ModelAndView

                           8.视图解析器解析后返回给前端控制器

                            9.前端在进行视图渲染,将模型数据填充到reequest域中去

                           10.将结果返回给用户

 第二部:了解六大组件的作用和如何开发

                 1.前端控制器:用来接受请求,响应结果。大部分都是他和其他组建进行通话,其他组件之间几乎无交流。可以减少其他组件之间的耦合度。是中央控制器。非常重要,所以页决定了不需要程序员开发。

                  对于他,就是来拦截请求,所以就像servlet的拦截器作用一样。So,配置就是在web.xml中以servlet的方式进行配置。

    示例代码:

                  <!-- springMVC的前端控制器 -->
  <servlet>
     <servlet-name>springmvc</servlet-name>
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <!-- contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器,适配器等)
              如果你不配置contextConfigLocation,则默认加载的是/WEB-INF/servlet名称-servlet.xml(springmvc-servlet.xml)
              
       -->
         <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>classpath:springmvc.xml</param-value>
         </init-param>
  </servlet>
    <servlet-mapping>
        <!-- 
           第一种:*.action.访问以.action结尾的由DispatcherServlet进行解析
         第二种:/,所有访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析
           使用这一种方法可以使用RESTful风格的url 
        第三种:/*,这样配置不对,使用这种配置,最终要 转发到一个jsp页面时,仍然由DispatcherServlet进行解析 ,根据jsp页面找不到handel,会报错
                 -->
            <servlet-name>springmvc</servlet-name>
       <url-pattern>*.action</url-pattern>

    </servlet-mapping>

*****注意一点,由于前端控制器和其他组件的联系紧密,前端控制器需要知道其他组件的位置,而处理器映射器,适配器等配置在springmvc加载的配置文件中so需要在配置前端控制器的时候指定springmvc配置文件的位置。、

          2。由于映射器是url和handler的映射,这里我们先学习处理适配器HandlerAdapter的作用和配置

            适配器的作用就是按照特定的规则去执行handler。handler需要我们编写,即适配器就是提供了一个接口,决定了我们handler的编写格式,对hadler的编写进行约束。

            so适配器以前不需要我们编写,我们所做的就是springmvc.xml中将这个接口引入。

 实例代码:

                  <!-- 处理器适配器
所有的处理器适配器都实现HanderAdapter接口
 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>

         

               3.现在有了handler的编写规范,我们就根据规范,实现接口,编写handler

             示例代码:

                           public class ItemsController1 implements Controller{  //实现接口,否则无法执行


@Override  //实现接口的方法
public ModelAndView handleRequest(HttpServletRequest req,
HttpServletResponse resp) throws Exception {


        List<Items>itemsList=new ArrayList<Items>();
//向list添加数据
         Items items_1=new Items();
         items_1.setName("电脑");
         items_1.setPrice(6000f);
         items_1.setDetail("联想笔记本壳。");
         itemsList.add(items_1);
         
         Items items_2=new Items();
         items_2.setName("手机");
         items_2.setPrice(7000f);
         items_2.setDetail("联想手机。");
         itemsList.add(items_2);
         
         Items items_3=new Items();
         items_3.setName("鼠标");
         items_3.setPrice(10000f);
         items_3.setDetail("联想鼠标。");
         itemsList.add(items_3);
         
         //返回ModelAndView
         ModelAndView modelAndView=new ModelAndView();

         //相当于reques的setAtrribute,在jsp页面中通过itemsList来获取数据    

         (两个作用体现出来了,1.设置页面的跳转2.设置返回页面的数据)

         modelAndView.addObject("itemsList", itemsList);
         //制定视图
          modelAndView.setViewName("/WEB-INF/JSP/itemsList.jsp");
         
          return modelAndView;
}
}

    handler编写完成之后需要在springmvc中配置,让他在spring中加载

 实例代码:

     <!-- 配置handler -->   //这时的name设置了访问路径
 <bean name="/queryItems.action" class="ItemsController1"></bean>

4.有了跳转路径,需要将跳转路径对应的页面编写好。

5.一切准备完毕,需要将handler和url联系起来,即配置映射器

          在springmvc中配置映射器:

             <!-- 配置处理器映射器 -->  处理器映射器会将handler的beanname作为url查找,所以在配置handler时一定要将url设置beanname中。
  <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
  

6.最后即为视图解析器的配置:

    示例代码:

        <!-- 配置视图解析器
  解析jsp默认使用jstl标签,calsspath下要有jstl的包
  -->
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
  


第三部:总结


     综上所述,springmvc的配置即为前端控制器,处理适配器,handaler,处理映射器,视图,视图解析器的配置。

             其中前端控制器为在web.xml中配置

            处理适配器和处理映射器和视图解析器不需要程序员编写,由别人编好,我们仅仅需要通过bean的方式在springmvc.xml中引入。同时注意,他们可以有很多引入的类,不同的类之间的作用和格式可能有所不同。

               对于handler要根据处理器适配器的要求来实现对应的接口和规范来编写

               对于视图就是jsp等文件,需要接收数据显示在页面上,需要使用到jstl标签。

            







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值