当前位置: 移动技术网 > IT编程>开发语言>Java > SpringMVC与请求控制器

SpringMVC与请求控制器

2019年05月06日  | 移动技术网IT编程  | 我要评论

 

mvc设计模式

  视图(view)      -对应组件:jsp或者html文件

  控制器(controller) -对应组件:servlet

  模型(model)   -对应组件:javabean

  

 

mvc优点 

  多视图共享一个模型,大大提高代码的可重用性

  mvc三个模块相互独立,松耦合架构

  控制器提高了应用程序的灵活性和可配置性

  有利于软件工程化管理

mvc缺点 

  原理复杂

  增加了系统结构和实现的复杂性

  视图对模型数据的低效访问

spring mvc框架实现原理

  1. 发起请求到前端控制器(dispatcherservlet)
  2. 前端控制器请求handerrmapping查找handler(可根据xml配置,注解查找)
  3. 处理器映射器handlermapping向前端控制器返回handler
  4. 前端控制器调用处理器适配器执行handler
  5. 处理器适配器执行handler
  6. handler执行完成后给适配器返回modelandview
  7. 处理器适配器向前端控制器返回modelandview(springmvc底层对象,包含model和view)
  8. 前端控制器请求视图解析器进行解析(根据逻辑视图名解析真正的视图名(.jsp))
  9. 视图解析器向前端控制器返回view
  10. 前端控制器实行视图渲染(视图渲染将模型数据填充到request域中)
  11. 响应给客户端

spring mvc框架搭建步骤

  下载jar文件并导入工程

    

 

  配置文件->修改web.xml配置文件

<!-- 配置核心控制器 dispatcherservlet -->

  <servlet>

        <servlet-name>springmvc</servlet-name>

        <servlet-class>

        org.springframework.web.servlet.dispatcherservlet

        </servlet-class>

<!-- springmvc默认加载springmvc的配置文件,但是需要满足一下规则

命名规则:servlet-name-servlet.xml==> springmvc-servlet.xml

路径规则:springmvc-servlet.xml必须放在web-info下面-->

<!-- 定义读取的applicationcontext-mvc.xml文件 -->

         <init-param>

            <param-name>contextconfiglocation</param-name>  <param-value>classpath:applicationcontext-mvc.xml

</param-value>

       </init-param>

       <!-- 启动服务器即读取 -->

 <load-on-startup>1</load-on-startup>

  </servlet>

  <servlet-mapping>

        <servlet-name>springmvc</servlet-name>

         <url-pattern>/</url-pattern>

</servlet-mapping>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

创建spring mvc的配置文件(注:跟配置读取mvc.xml必须一致)

  

配置注解处理器映射器(mvc.xml文件配置)

<!-- 配置注解的处理器映射器  寻找执行类 controller -->

<bean class="org.springframework.web.servlet.mvc.method.annotation.requestmappinghandlermapping" />

配置注解处理器适配器(mvc.xml文件配置)

<!-- 配置注解的处理器适配器 执行controller -->

<bean class="org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter" />

开启指定目录注解扫描(mvc.xml文件配置)

   <!-- 开启注解扫描  cn.smbms替换controller所在包路径-->

<context:component-scan base-package="cn.smbms"/>

配置视图解析器(mvc.xml文件配置)

 <!-- 配置视图解析器  /web-inf/jsp/index.jsp-->

 <bean id="viewresolver"

class="org.springframework.web.servlet.view.internalresourceviewresolver">

        <!-- 配置前缀-->

        <property name="prefix" value="/web-inf/jsp/" />

        <!-- 配置后缀  -->

        <property name="suffix" value=".jsp" />

</bean>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

控制层方法上添加@controller注解,也可以@controller("xxx/xxx/")添加路径前缀

方法上添加@requestmapping注解 

  requestmapping(定义访问名)

    功能:请求映射

    写法:

      requestmapping(“index”)  可以匹配任何的扩展名

      requestmapping(“/index.do”)

      requestmapping(value=“/index.do”)

      requestmapping(value=“/index.do” method=requestmethod.get)

      requestmapping(value=“/index.do” method=requestmethod.post)

    浏览器直接写url或者a标签都是get请求

    一般情况下,如果使用from表单提交都是post请求,还有ajax请求指定post请求

springmvc基于注解封装参数   

  根路径注解requestmapper(“”) 是为了隔离不同的controller里面相同的方法

  springmvc没有成员变量,把需要的参数对象放入方法中,当你请求这个方法时候,这个方法里面对象会自动被创建,需要封装的参数自动被封装方法的对象.

  提交表单:

    例:<form action="${pagecontext.request.contextpath}/login" > 前面的参数是取得当前的绝对路径. 需要导入jsp-api包

    基本数据类型

   

    实体类

     

     包装类

      

    数组

      

    接收集合类型参数

      方法里面不能直接传递list集合和map集合类型参数,把list集合定义在包装类里面.

    list传递

      

     

    接收map类型参数

    

页面参数的回显

  springmvc使用model对象,model对象相当于application

  application对象中数据可以是el表达式进行获取

  

url模板映射

  主要是为请求restfull设计模式

  restfull软件架构设计模式:请求更简洁,更方便,更安全搜索引擎收录.

  普通修改数据

    <a ref="${pagecontext.request.contextpath}/index/update.do?id=${user.id}">编辑</a>

    初识restfull

    <a href="${pagecontext.request.contextpath}/index/update/${user.id }.do">编辑</a>

    

    绝对实现restfull风格

        

    如果在上面dispatcherservlet设置拦截权限为全局,则可绝对实现restfull风格.

     例:设置全局拦截

      

      则请求默认实现restfull风格

      

 

requestparam

  该注解可以给参数设置别名,设置默认值.

  内置属性:

    value=”属性别名”  设置参数属性别名,在页面使用别名进行传参.

     defaultvalue=”默认值”,设置默认属性值,当无值传入时,传入默认值.

    required=”true(默认)” 请求中一定要有相应的参数,否则报400错误.

  

转发和重定向

  forward:转发,不改变地址情况下的页面跳转

    return “forward: getlist”;//相对路径

    

    return “forward:/index/ getlist”;//根路径可随便指定已有的路径

    

  redirect:页面跳转,地址同步改变

    return "redirect:getlist";//相对路径跳转

      

    return "redirect:/index/getlist";//绝对路径重定向

       

<mvc:annotation-driven />   spring3.0.x后默认使用了

<mvc:annotation-driven />默认创建了处理器映射器和处理器适配器,还提供了json数据格式的支持

    

 

   

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网