SpringMVC流程



工作空間調整
在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會產生這樣的錯誤,所以才可以使用這種模式進行操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM