SpringMVC返回值类型
-
准备测试使用的ReturnTypeController:
-
测试使用页面 web/WEB-INF/jsp/returnType/index.jsp :
-
返回String类型
1、 返回逻辑视图名称,根据由于springMVC-servlet.xml配置文件中配置图解析器解析成物理视图
2、 测试:
1、 编写控制器方法returnString:(通过“springMVC-servlet.xml”中的配置的视图解析器,解析并响应 prefix+returnValue+suffix 对应的视 图)
2、 新建 web/WEB-INF/jsp/returnType/returnString.jsp :() -
返回ModelAndView 类型(ModelAndView相对于String的返回类型的优势可以携带参数传递到页面)
1、 编写控制器方法returnMV:
2、 新建 web/WEB-INF/jsp/returnType/returnMV.jsp
3、 测试: -
返回void类型(一般配合PrintWriter使用,和Servlet用户类似)
1、 编写测试方法returnVoid:
2、 测试: -
返回JSON类型
1、 添加Json相关jar包(jackson):
1、jackson-annotations-2.11.4.jar
2、jackson-core-2.11.4.jar
3、jackson-databind-2.11.4.jar
2、 配置mvc:annotation-driven/
1、 在springMVC-servlet.xml中添加:
2、 mvc:annotation-driven/会自动注册RequestMappingHandlerMapping、RequestMappingHandlerAdapter 与xceptionHandlerExceptionResolver 三个bean。
3、 还将提供以下支持:
1、 支持使用 ConversionService 实例对表单参数进行类型转换;
2、 支持使用 @NumberFormat annotation、@DateTimeFormat;
3、 注解完成数据类型的格式化;
4、 支持使用 @Valid 注解对 JavaBean 实例进行 JSR 303 验证;
5、 支持使用 @RequestBody 和 @ResponseBody 注解; -
配置静态资源(以JQuery为例)
1、 在web目录下添加 js目录
2、 注意:千万不要放到WEB-INF下,WEB-INF下的资源是受保护的,外部无法访问的
3、 将JQuery的js添加到js目录下:
4、 在springMVC-servlet.xml中配置静态资源映射: -
测试返回JSON数据
1、编写测试用pojo类:com.gx.model.User
2、编写Controller方法:
3、修改页面 web/WEB-INF/jsp/returnType/index.jsp :
4、测试 -
SpringMVC 中文乱码解决
1、在web.xml中添加spring 中文过滤器
2、对应返回void类型使用PrintWriter返回时,还要设置一下 -
SpringMVC 获取请求参数(提前准备测试相关Controller和Jsp页面:)
1、准备GetParameterController:
2、页面: web/WEB-INF/jsp/getParamter/index ,用于编写测试表单:
3、页面 web/WEB-INF/jsp/getParamter/result.jsp ,用于显示表单提交结果: -
自动类型匹配
1、针对少量的参数,可以考虑直接使用“自动类型匹配”方式来获取参数。
2、要求:请求参数名和Controller方法的形参参数名一致。
3、控制器中的方法:
4、测试表单: -
自动封装pojo(自动装箱)(自动装箱主要针对大量参数提交的情况。 要求:请求参数名和Controller方法形参参数对象的中的属性名称一致)
1、使用com.gx.model.User
2、控制器中的方法:
3、测试表单:
4、测试 -
使用request获取请求参数(使用request获取请求参数,使用方式就和Servlet类似。本方式通过“自动封装pojo”把 javax.servlet.http.HttpServletRequest 给了Controller的方法,然后通过 request.getParameter(“参数名”) 的方式获取参数)
1、控制器中的方法:
2、测试表单: -
使用@RequestParam获取参数(使用@RequestParam获取参数)
1、控制器中的方法:
2、测试表单: -
RESTFUL风格使用@PathVariable获取参数
1、restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用 于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等 机制
2、RESTful的关键是定义可表示流程元素/资源的对象。在REST中,每一个对象都是通过URL来表示的,对 象用户负责将状态信息打包进每一条消息内,以便对象的处理总是无状态的。
3、RESTFUL对于资源的具体操作类型,由HTTP动词表示。
4、常用的HTTP动词有下面五个
1、GET(SELECT):从服务器取出资源(一项或多项)
HTTP GET /user/1 :获得id=1的user
HTTP GET /user :获取所有的用户信息
2、POST(CREATE):在服务器新建一个资源。
HTTP POST /user :新增一个user,需要把提交的user信息放在请求的body中提交
3、PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
HTTP PUT /user/1 :修改id=1的user信息,需要把修改的user信息放在请求的body中提交
4、PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
HTTP PATCH /user/1 :修改id=1的user信息,需要把修改的user信息放在请求的body中提交
5、DELETE(DELETE):从服务器删除资源。
HTTP DELETE /user/1:删除id=1的user
5、 控制器中的方法:
6、 页面测试代码: -
接收ajax提交的复杂数据类型
1、控制器中的方法:
2、页面的测试代码
3、com.gx.model.User中存在Date类型的数据birthday,需要添加格式化的注解 -
@DateTimeFormat与@JsonFormat(@DateTimeFormat只会处理可以直接从request中获取得到,对于传输的JSON字符串中的日期格 式,由@JsonFormat处理。)
1、控制器中的方法:
2、页面的测试代码 -
SpringMVC Controller传递数据到Jsp视图(总结)
1、SpringMVC中 Controller传递数据到Jsp视图有三种常用的方法
1、使用request传递参数
2、使用Model传递参数
3、使用ModelAndView传递参数
2、控制器SendParameterController:
3、web/WEB-INF/jsp/sendParameter/index.jsp
4、web/WEB-INF/jsp/sendParameter/result.jsp -
@ModelAttribute
1、@ModelAttribute主要有两种用法:
1、标注在非功能方法上,每次执行方法时都会先执行@ModelAttribute注解的方法@ModelAttribute注解的方法可以:
1、在参数中获取使用Model,HttpServletRequest,HttpServletResponse等
2、也可以正常获取请求的数据
3、也可以正常获取请求的数据,若该方法有返回值时:自动把返回的数据添加到Modal中,对于此时的Key值有两种情况
1、如果@ModelAttribute没有指定value值,那么添加的key就是类型名称首字母小写
2、如果指定了value值会在①的基础上额外添加一个,key就是指定的值
2、用在方法的参数上,将注解的参数添加到Model中,Key值有两种情况
1、若@ModelAttribute未指定value值,那么Key值就是类型名称首字母小写
2、若@ModelAttribute指定value值,那么key值就是指定的值 -
@SessionAttributes与@SessionAttribute的使用
1、pring MVC中有两个长得非常像的注解:@SessionAttributes 和 @SessionAttribute。
2、@SessionAttributes用于在请求之间的HTTP Servlet会话中存储model属性。 它是类型级别的注解,用 于声明特定控制器使用的会话属性。会筛选该控制器下的所有添加到Model中的数据,将符合筛选条件 的数据自动添加到Session中。
3、@SessionAttribute 用在方法的形参上,从session中获取指定名称的的数据,并把数据给形参参数。