SpringMVC响应
第一章:数据处理及跳转
1. 结果跳转方式
①.ModelAndView
设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面 .
<!--配置视图解析器-->
<bean id="viewResolver" class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
<property name="order" value="1"/>
<property name="characterEncoding" value="UTF-8"/>
<property name="templateEngine" ref="templateEngine"/>
</bean>
<!-- templateEngine -->
<bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver"/>
</bean>
<bean id="templateResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
<!-- 页面返回导那个文件夹(html的文件夹)-->
<property name="prefix" value="/html/" />
<!-- 访问页面的后缀,如访问suc,视图解析器就会为他加上.html的后缀,匹配上地址,变成/html/suc.html-->
<property name="suffix" value=".html" />
<property name="templateMode" value="HTML5"/>
</bean>
对应的controller类
/**
* 返回ModelAndView对象的方式
* @return
*/
@RequestMapping("/save3")
public ModelAndView save3(){
System.out.println("执行了...");
// 创建mv对象
ModelAndView mv = new ModelAndView();
// 把一些数据,存储到mv对象中
mv.addObject("msg","用户名或者密码已经存在");
// 设置逻辑视图的名称
mv.setViewName("suc");
return mv;
}
②.ServletAPI
通过设置ServletAPI , 不需要视图解析器 .(需要导入servlet相关依赖包)
- 1、通过HttpServletResponse进行输出
- 2、通过HttpServletResponse实现重定向
- 3、通过HttpServletResponse实现请求转发
@RequestMapping("/myServlet")
public void myServlet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setCharacterEncoding("utf-8");//数据返回形式 //返回字符集
response.setContentType("text/json;charset=utf-8");
String json = "{\"code\":\"200\",\"message\":\"成功\"}";
response.getWriter().append(json);
}
请求转发
- 请求转发是request对象的方法,是同一个请求内,共享该请求的资源
- 请求地址不改变是,服务器端的行为
- 通过setAttribute进行数据传递(set向request写入key-vale的数据),可以通过getAttribute(通过key获取)
- 请求转发可以转发到页面或者servlet
@RequestMapping("/test1")
public void test1(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setCharacterEncoding("utf-8");//数据返回形式 //返回字符集
response.setContentType("text/json;charset=utf-8");
request.setAttribute("msg","请求转发");
System.out.println("test1 value="+request.getParameter("name"));
//请求转发
//request.getRequestDispatcher("/dept/test2").forward(request,response);
//转发到页面
request.getRequestDispatcher("/html/suc.html").forward(request,response);
}
@RequestMapping("/test2")
public void test2(HttpServletRequest request, HttpServletResponse response) throws IOException {
System.out.println("test2 value="+request.getParameter("name"));
Object msg = request.getAttribute("msg");
System.out.println(msg);
}
重定向
-
重定向是response对象的方法,是不同一个请求内
-
由服务器端指导,是客户端的行为
-
请求地址会改变,不共享数据
-
重定向可以解决跨域的问题
**跨域:**我们当前的访问地址不是当前项目的地址,如重定向到百度
@RequestMapping(&#