isELIgnored="false"
${user.username}
${user.password}
/** * 返回String * @param model * @return */ @RequestMapping("/testString") public String testString(Model model){ System.out.println("testString方法执行了..."); // 模拟从数据库中查询出User对象 User user = new User(); user.setUsername("美美"); user.setPassword("123"); user.setAge(30); // model对象 model.addAttribute("user",user); return "success"; }
/** * 是void * 请求转发一次请求,不用编写项目的名称 */ @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); // 重定向 // response.sendRedirect(request.getContextPath()+"/index.jsp"); // 设置中文乱码 response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); // 直接会进行响应 response.getWriter().print("你好"); return; }
*默认状况下,访问user/tsetVoid.jspcss
*两种解决办法:(1)新建WEB-INF/pages/setVoid.jsphtml
(2)获取原生API,编写底层转发代码前端
* 请求转发一次请求,不用编写项目的名称 request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);java
*重定向是两次跳转,须要完整的项目名字response.sendRedirect(request.getContextPath()+"/index.jsp");jquery
*直接相应(须要设置编写乱码)web
*与model功能同样,写法不一样ajax
*springMVC提供的一个类spring
*两个方法数据库
// 把user对象存储到mv对象中,也会把user对象存入到request对象 mv.addObject("user",user);
// 跳转到哪一个页面 mv.setViewName("success");
配合视图解析器,跳转到WIN-INF/pages/success.jsp
/** * 返回ModelAndView * @return */ @RequestMapping("/testModelAndView") public ModelAndView testModelAndView(){ // 建立ModelAndView对象 ModelAndView mv = new ModelAndView(); System.out.println("testModelAndView方法执行了..."); // 模拟从数据库中查询出User对象 User user = new User(); user.setUsername("小凤"); user.setPassword("456"); user.setAge(30); // 把user对象存储到mv对象中,也会把user对象存入到request对象 mv.addObject("user",user); // 跳转到哪一个页面 mv.setViewName("success"); return mv; }
*该模式下没法使用视图解析器json
*返回字符串
*本身写对路径
*在这里重定向,不须要写项目名(虚拟路径),框架底层帮你加上了
/** * 使用关键字的方式进行转发或者重定向 * @return */ @RequestMapping("/testForwardOrRedirect") public String testForwardOrRedirect(){ System.out.println("testForwardOrRedirect方法执行了..."); // 请求的转发 return "forward:/WEB-INF/pages/success.jsp"; // 重定向 return "redirect:/index.jsp";根目录下的jsp,不须要项目名称 }
5.使用@ResponseBody 注解实现将 controller 方法返回对象转换为 json 响应给客户端。
*前端控制器设置拦截全部请求
<!--配置前端控制器--> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern>拦截全部请求 </servlet-mapping>
*告诉dispatchServlet静态资源不拦截(js/jquery.min.js)
<!--前端控制器,哪些静态资源不拦截--> <mvc:resources location="/css/" mapping="/css/**"/> <mvc:resources location="/images/" mapping="/images/**"/> <mvc:resources location="/js/" mapping="/js/**"/>
<script> // 页面加载,绑定单击事件 $(function(){ $("#btn").click(function(){ // alert("hello btn"); // 发送ajax请求 $.ajax({ // 编写json格式,设置属性和值 url:"user/testAjax", contentType:"application/json;charset=UTF-8", data:'{"username":"hehe","password":"123","age":30}',json格式键值对 dataType:"json", type:"post", success:function(data){ // data服务器端响应的json的数据,进行解析 alert(data); alert(data.username); alert(data.password); alert(data.age); } }); }); });
*dataType:服务器返回类型值
type:默认get
/** * 模拟异步请求响应 */ @RequestMapping("/testAjax") public @ResponseBody User testAjax(@RequestBody User user){ System.out.println("testAjax方法执行了..."); // 客户端发送ajax的请求,传的是json字符串,后端把json字符串封装到user对象中 System.out.println(user); // 作响应,模拟查询数据库 user.setUsername("haha"); user.setAge(40); // 作响应 return user; }
*@RequestBody User user客户端发送ajax的请求,传的是json字符串,后端把json字符串封装到user对象中
*做响应直接return @ResponseBody User
*要求key与javaBean的属性名同样
*须要导入相应jar包(json字符串与javaBean转换)
<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>