工作空間調整
在eclipse的preferences里面設置
springmvc是spring的web模塊,是依賴spring的核心模塊
核心容器模塊和web模塊
2.導入依賴包 后期直接maven導入就可以
3.
4.然后書寫后端控制器代碼
5.
配置相關的位置
6.
7.
8.package com.atguigu.controller;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
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.atguigu.book.Book;
@Controller
public class HelloController {
/**
* request.getParameter("").....
*
* @return
*/
@RequestMapping("/hello")
public String handle01() {
System.out.println("handle01...");
return "success";
}
/**
* SpringMVC如何獲取請求帶來的各種信息 默認方式獲取請求參數: 直接給方法入參上寫一個和請求參數名相同的變量。這個變量就來接收請求參數的值;
* 帶:有值,沒帶:null;
*
* @RequestParam:獲取請求參數的;參數默認是必須帶的;
* @RequestParam("user")String username username =
* request.getParameter("user")
*
*
* @RequestParam("user")
* @PathVariable("user")
* /book/【{user}pathvariable】?【user=admin(requestparam)
* 】
*
* value:指定要獲取的參數的key required:這個參數是否必須的
* defaultValue:默認值。沒帶默認是null;
*
*
* @RequestHeader:獲取請求頭中某個key的值; request.getHeader("User-Agent");
* @RequestHeader("User-Agent")String userAgent userAgent =
* request.getHeader("User-Agent")
* 如果請求頭中沒有這個值就會報錯; value() required()
* defaultValue()
*
* @CookieValue:獲取某個cookie的值; 以前的操作獲取某個cookie; Cookie[] cookies =
* request.getCookies(); for(Cookie c:cookies){
* if(c.getName().equals("JSESSIONID")){ String
* cv = c.getValue(); } }
* value()
* required()
* defaultValue()
*/
@RequestMapping("/handle01")
public String handle02(
@RequestParam(value = "user", required = false, defaultValue = "你沒帶") String username,
@RequestHeader(value = "AHAHA", required = false, defaultValue = "她也沒帶") String userAgent,
@CookieValue(value="JSESSIONID",required=false)String jid) {
System.out.println("這個變量的值:" + username);
System.out.println("請求頭中瀏覽器的信息:" + userAgent);
System.out.println("cookie中的jid的值"+jid);
return "success";
}
/**
* 如果我們的請求參數是一個POJO;
* SpringMVC會自動的為這個POJO進行賦值?
* 1)、將POJO中的每一個屬性,從request參數中嘗試獲取出來,並封裝即可;
* 2)、還可以級聯封裝;屬性的屬性
* 3)、請求參數的參數名和對象中的屬性名一一對應就行
*
*
* 提交的數據可能有亂碼:
* 請求亂碼:
* GET請求:改server.xml;在8080端口處URIEncoding="UTF-8"
* POST請求:
* 在第一次獲取請求參數之前設置
* request.setCharacterEncoding("UTF-8");
* 自己寫一個filter;SpringMVC有這個filter
*
* 響應亂碼:
* response.setContentType("text/html;charset=utf-8")
* @param book
* @return
*/
@RequestMapping("/book")
public String addBook(Book book){
System.out.println("我要保存的圖書:"+book);
return "success";
}
/**
* SpringMVC可以直接在參數上寫原生API;
*
* HttpServletRequest
* HttpServletResponse
* HttpSession
*
*
* java.security.Principal
* Locale:國際化有關的區域信息對象
* InputStream:
* ServletInputStream inputStream = request.getInputStream();
* OutputStream:
* ServletOutputStream outputStream = response.getOutputStream();
* Reader:
* BufferedReader reader = request.getReader();
* Writer:
* PrintWriter writer = response.getWriter();
*
* @throws IOException
*
*
*/
@RequestMapping("/handle03")
public String handle03(HttpSession session,
HttpServletRequest request,HttpServletResponse response) throws IOException {
request.setAttribute("reqParam", "我是請求域中的");
session.setAttribute("sessionParam", "額我是Session域中的");
return "success";
}
}
在url中加入占位符
將屬性隱藏
高版本的tomcat會產生這樣的錯誤,所以才可以使用這種模式進行操作