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>