先搞一波效果圖
1.Controller
package com.tz.controller; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Required; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.CookieValue; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import com.tz.domain.Course; @Controller public class RequestController { /** * @PathVariable("user"):獲取路徑中的值/handler/{user} * @RequestParam("user"):獲取請求參數/hander/{user}?user=coco * * @param userName * @return */ @RequestMapping("/handle") public String handler(@RequestParam(value="user",required=false) String userName){ //userName = request.getParameter("user"); System.out.println(userName); return "success"; } @RequestMapping("/handle2") public String handler02(@RequestParam(value="user",required=false,defaultValue="你沒有帶參數") String userName, @RequestHeader(value="User-Agent",required=false) String user_Agent, @CookieValue("JSESSIONID") String js){ //userName = request.getParameter("user"); System.out.println(userName); System.out.println(user_Agent); System.out.println(js); return "success"; } /** * springmvc可以在參數上寫servlet常用的api * HttpServletRequest * HttpServletResponse * Httpsession * * InputStream:request.getInputStream(); * OutputStream:response.getOutputStream(); * Reader:request.getReader(); * Writer:response.getWriter(); * * 請求:客戶端-->服務端(客戶端顯示亂碼) * 修改tomcat配置文件 * GET有效 * <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/> * 第一次獲取請求參數之前:request.setCharacterEncoding("UTF-8"); * * 響應:服務端-->客戶端(服務端顯示亂碼) * reponse.setContentType("text/html;charset=utf-8"); * @param c * @return */ @RequestMapping("/addCourse") public String addCourse(Course c){//springMVC會自動為我們定義的類型進行賦值 /** * 1.將對象中的每一個屬性從request參數中嘗試取出來,並進行封裝 * request.getParameter("參數名");如果有值,就會取出來封裝到實體類的屬性中(調用set方法) */ System.out.println(c); return "success"; } @RequestMapping("/handle04") public String handle04(HttpSession session,HttpServletRequest request){ session.setAttribute("session","session域"); request.setAttribute("request","request域"); return "success"; } }
2.配置文件web.xml(最重要的就是設置那個字符編碼過濾器)
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>springmvc_Day01</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- <init-param> <param-name>contextConfigLocation</param-name> 指定springmvc配置文件的位置 <param-value>classpath:springmvc.xml</param-value> </init-param> --> <!-- 如果在web.xml不指定文件位置,也會找默認的文件 /WEB-INF/xxx-servlet.xml --> <!-- 啟動加載時期 --> <!-- servlet是當服務器啟動的時候加載創建對象,值越小,代表優先級越高,就越先創建對象 --> <!-- <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> --> <!-- 如果在web.xml中找不到文件位置,也會默認找文件 /WEB-INF/xxx-servlet.xml --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> <!-- /和/*都是用來攔截所有請求,但是/*的范圍更大,還會攔截到*.jsp請求,一旦攔截,則訪問jsp頁面就不會顯示了 /也會攔截所有請求,但是不會攔截.jsp,可以保證jsp頁面訪問正常 *.do *.action *.hah /:不攔截jsp *.jsp /*:攔截jsp --> </servlet-mapping> <!-- 配置字符編碼過濾器 保證該過濾器在所有的過濾器之前,避免請求后攔截不了 最好在第一個 --> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <!-- encoding:指定解決請求亂碼 forceRequestEncoding:指定請求與響應的編碼集格式為eccoding forceResponseEncoding --> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceRequestEncoding</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>forceResponseEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- reset風格的請求 get 查詢 put 請求修改 delect刪除 post新增 --> <filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>HiddenHttpMethodFilter</filter-name> <!-- 這里將.jsp也過濾掉 --> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>