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