springMVC学习笔记

Posted 拐柒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springMVC学习笔记相关的知识,希望对你有一定的参考价值。

springmvc对于rest风格支持

rest是一个url请求的风格,基于这种风格设计请求的url。
原有设计url风格是比如,获取id为1的用户
/user/getUserById.do?id=1,url中定义了操作(get,delete,update等),参数具体锁定到操作的元素。
rest风格,rest中人为互联网中的所有东西都是资源,就会有一个唯一的uri标识它,/user/1 代表id为1的记录。根据请求方式不同,代表不同的操作,RequestMethod.GET代表获取,RequestMethod.POST代表新增,RequestMethod.PUT代表更新,RequestMethod.DELETE 代表删除。rest风格带来了传递参数的方式变化,参数可以在uri中

@PathVariable

该注解可以帮助我们从uri中取出参数。

 @RequestMapping(value = "handle/{id}",method = {RequestMethod.GET})
    public String handle04(@PathVariable("id")Integer id){
        System.out.println(id);
        return "success";
    }

form表单缺失请求方式

在form表单中生命一个隐藏域,name为="_method" value=“put/delete”,同时需要在web.xml中进行配置过滤器。

<!--  springmvc请求方式转换过滤器,会检查请求参数中是否有_method参数,如果有就按照指定的请求方式转换-->
  <filter>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

乱码问题

post请求处理

web.xml

<!--  POST请求springmvc过滤器处理中文乱码-->
  <filter>
    <filter-name>encoding</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>encoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

get请求

配置tomcat 的server.xml 中connector标签中 URIEncoding=‘utf-8’

ajax json交互

@RequestBody

后端代码

 @RequestMapping(value = "handle07",method = {RequestMethod.POST})
    public String handle05(@RequestBody User user){
        System.out.println(user.getId());
        return "success";
    }

前端代码

$(function (){
        $("#ajaxBtn").bind("click",function (){
            $.ajax({
                url:"/demo/handle07",
                type:"post",
                data:'{"id":"1","userName":"李四"}',
                contentType:"application/json;charset=utf-8",
                success:function (data){
                    alert(data);
                }
            })
        })
    })

注意,使用RequestBody注解,须使用post请求方式,且指定contentType:“application/json;charset=utf-8”。

@ResponseBody

使用该注解之后,不在走视图解析器,而是使用response进行值的返回

springmvc拦截器使用

监听器、过滤器、拦截器、servlet对比

servlet

处理Request请求和response请求

过滤器(Filter)

对Request请求起到过滤的作用,作用在Servlet之前,如果配置为/*可以对所有资源访问进行过滤处理

监听器(Listener)

实现了ServletContextListListener接口的服务器端组件,它随web应用的启动而启动,只初始化一次,然后会一直运行监视,随web应用的停止而销毁
作用1:做一些初始化工作,web应用中spring容器启动 ContextListListener
作用2:监听web中的特定时间,比如httpsession,servletRequest的创建和销毁、修改等,可以在某些动作前后增加处理,实现监控,比如统计在线人数,利用HttpSessionLisener等。

拦截器(interceptor)

是springmvc、struts等表现层框架自己的组件,不会拦截jsp/html/css等静态资源,只会拦截handler方法。在handler业务逻辑执行之前拦截一次,在handler逻辑执行完毕但未跳转页面之前拦截一次,在跳转页面之后拦截一次。

 <mvc:interceptors>
<!--        拦截所有handler请求-->
<!--        <bean class="com.lagou.edu.interceptor.MyInterceptor01"></bean>-->
        <mvc:interceptor>
<!--            配置当前拦截器的url拦截规则,**代表当前目录下及其子目录下的所有url-->
            <mvc:mapping path="/**"/>
<!--            exclude-mapping可以在mapping的基础上排除一些url-->
<!--            <mvc:exclude-mapping path="/demo/**"/>-->
            <bean class="com.lagou.edu.interceptor.MyInterceptor01"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

以上是关于springMVC学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记——SpringMVC处理响应数据;SpringMVC处理请求域响应乱码问题

SpringMVC学习笔记2:快速入门

学习笔记——SpringMVC文件上传与下载

springmvc学习笔记(14)-springmvc校验

springmvc学习笔记-springmvc整合mybatis之controller

springmvc学习笔记-springmvc整合mybatis之service