SpringMVC理解

SpringMVC 的简介与运行原理如下:

Spring MVC 中的MVC (modal、view、controller)分别是 模型、视图、控制器

Spring的模型-视图-控制器(MVC),该框架是围绕一个DispatcherServlet来设计的,这个DispatcherServlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、等,甚至还能支持文件上传等功能。

springMVC的执行流程如下:

 

1. 客户端发起请求到前端控制器(DispatcherServlet)

2. 前端控制器请求处理器映射器(HandlerMapping)查找Handler。(可以根据xml配置、注解的方式进行查找)

3. 处理器映射器向前端控制器返回Handler

4. 前端控制器调用处理器适配器(HandlerAdapter)去执行Handler

5. 处理器适配器执行Handler

6. Handler执行完成后给适配器返回ModelAndView

7. 处理器适配器向前端控制器返回ModelAndView

8. 前端控制器请求视图解析器(ViewResolver)进行视图解析

9. 视图解析器向前端控制器返回view

10. 前端控制器进行视图渲染

11. 前端控制器向用户响应结果

(总之,dispatcherServlet就相当于中央处理器,大脑一样,接收请求,做发出请求什么的)

MVC组件:

前端控制器DispacherServlet:

      接收请求,相应结果,相当于转发器,中央处理器,减少其他组件的耦合度

处理器映射器HandlerMapping:

      根据请求的url查找相应的Handler

Handler处理器:

      是项目的controller,开发的时候,要按照HandlerAdapter开发,这样适配器才会去执行

处理器适配器HandlerAdapter:

      按照特定的规则执行Handler

视图解析器ViewResolver:

      根据视图的名称,解析成view

视图View:

      一个接口,实现类可以去支持不同类型(jsp...freemarker)

springMVC也有两种形式来实现。xml配置实现,或者通过注解的形式实现

web.xml

<!-- 配置前端控制器 -->
  <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>/WEB-INF/classes/config/springmvc_anno.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>

默认去填写的路径去找Springmvc的配置文件,如果和web.xml同级,则直接写/web-inf/springmvc.xml。

<init-param>配置contextConfigLocation,配置映射器和处理器,如果不配置的话,默认加载的是web-inf下的名为:servlet名字-servlet.xml

 <!-- post请求乱码 -->
    <filter> 
        <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name> 
        <url-pattern>/*</url-pattern> 
    </filter-mapping>
<error-page>
      <error-code>404</error-code>
      <location>/404.jsp</location>
    </error-page>

springMVC.xml

<!-- 开启注解扫描 -->
    <context:component-scan base-package="cn.com.mvc" />
    <!-- 处理器解析器和适配器 -->
    <mvc:annotation-driven />
    <!-- 视图解析器 -->
    <!-- 动态返回jsp路径(前缀+名称+后缀): /jsp/index+.jsp -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

然后在controller上加上注解标签@RequestMapping。定义了controller的方法对应的url。限制get和post请求的方法@RequestMapping(value="/queryUser",method={RequestMethod.POST,RequestMethod.GET,})Method默认不写的话,get和post都支持。@Controller方法的返回值作为方法参数的常见类型:基本类型,类类型,集合类型,request,response,session,Model

返回modelandView:addObject相当于setAttribute。setViewName设置jsp的名字,然后在视图解析器动态拼接。

返回String

  

通过形参中的model,将数据回传给页面。

返回void

Return “ forward:update.action”

Return “ redirect:update.action”

Request.getRequestDispatcher(“/WEB-INF/jsp/update.jsp”).forward(request,respons)

如果参数为javabean,则需要控件的name和javabean中的name一致。

多删除的话,可以直接通过表单跳转,后台会自动用int[] userid 数组接收。

queryPojo 接收批量提交的信息,存储在itemList集合里。

后台可以用pojo的类去接收。条件:表单;控件name一致。

 

 

 

 

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值