springmvc
文章目录
一、响应返回值
返回值为String
当返回值为String时,会执行springmvc中的视图解析器,找到对应的"返回的String字符串.jsp",并跳转到界面。
@RequestMapping("/testString")
public String testString(Model model){
System.out.println("testString执行。。。");
//模拟查询数据库的对象
User user = new User();
user.setUsername("老王");
user.setPassword("123");
user.setAge(23);
//将用户信息存入request域中,传到界面
model.addAttribute("user", user);
return "success";
}
返回值为void
当返回值为void时,需要使用原始的请求转发、重定向、直接响应三种方式进行跳转。它不经过springmvc中的视图解析器。
请求转发:
@RequestMapping("/testVoid")
public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("testVoid执行了。。。");
//请求转发方式
request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);
return;
}
重定向:
@RequestMapping("/testVoid")
public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("testVoid执行了。。。");
//请求转发方式
//request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);
//重定向(注意:重定向进不去WEB-INF目录,故跳转不了到success界面)
response.sendRedirect(request.getContextPath()+"/index.jsp");
return;
}
直接响应:
@RequestMapping("/testVoid")
public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("testVoid执行了。。。");
//请求转发方式
//request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);
//重定向(注意:重定向进不去WEB-INF目录,故跳转不了到success界面)
//response.sendRedirect(request.getContextPath()+"/index.jsp");
//直接响应
//1.设置中文编码
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
//2.响应到界面
response.getWriter().write("你好");
return;
}
返回值是ModelAndView类型
springmvc提供的类,经过springmvc.xml中的视图解析器。
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
//创建ModelAndView对象
ModelAndView modelAndView = new ModelAndView();
//模拟查询数据库的对象
User user = new User();
user.setUsername("老王");
user.setPassword("123");
user.setAge(23);
//把user对象存入mv对象中,也存入request域中
modelAndView.addObject("user",user);
//跳转界面(经过springmvc.xml中的视图解析器)
modelAndView.setViewName("success");
return modelAndView;
}
二、响应json数据(过滤静态资源)
1.导入js,并编写界面
编写.jsp界面
<script src="js/jquery.min.js"></script>
<script>
$(function () {
$("#btn").click(function () {
alert("按钮被点击");
});
});
</script>
<button id="btn">发送ajax的请求</button>
2.过滤静态资源(配置springmvc.xml)
<!--前端控制器,设置静态资源不被拦截-->
<mvc:resources location="/css/" mapping="/css/**"/> <!-- 样式 -->
<mvc:resources location="/images/" mapping="/images/**"/> <!-- 图片 -->
<mvc:resources location="/js/" mapping="/js/**"/> <!-- javascript -->
3.发送ajax请求
将数据传到服务器。(在服务器能拿到请求体的数据)
封装数据到javabean对象中(即:实体类)
需要导入jackson的jar包。
作用:json数据封装到javabean;javabean转换为json。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
<script>
$(function () {
$("#btn").click(function () {
// alert("按钮被点击");
// 发送ajax请求
$.ajax({
url:"userController/testAjax",
// 给服务器传json数据
contentType:"application/json;charset=UTF-8",
data:'{"username":"老李","password":"123","age":20}',
dataType:"json",
type:"POST",
success:function (data) {
alert(data);
alert(data.username);
alert(data.password);
alert(data.age);
}
});
});
});
</script>