SpringMVC参数传递 HttpServletRequest,HttpServletResponse和HttpSession (2)



3. 获得客户机请求参数(客户端提交的数据)

    getParameter(name)方法 获取请求中的参数,该参数是由name指定
    getParameterValues(String name)方法 获取指定名称参数的所有值数组。它适用于一个参数名对应多个值的情况。如页面表单中的复选框,多选列表提交的值。
    getParameterNames() 方法返回一个包含请求消息中的所有参数名的Enumeration对象。通过遍历这个Enumeration对象,就可以获取请求消息中所有的参数名。
    getCharacterEncoding() 返回请求的字符编码方式
    getAttributeNames()返回当前请求的所有属性的名字集合赋值:setAttribute()
    getAttribute(String name) 返回name指定的属性值
    getsession()返回和客户端相关的session,如果没有给客户端分配session,则返回null
    getParameterMap():返回一个保存了请求消息中的所有参数名和值的Map对象。Map对象的key是字符串类型的参数名,value是这个参数所对应的Object类型的值数组
    RequestDispatcher.forward() 方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。方法在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为。
    setCharacterEncoding(“utf-8”);
    getReader() 获取请求体的数据流
    getInputStream() 获取请求的输入流中的数据

HttpSerlvetResponse

HttpServletResponse对象代表服务器的响应。这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法。

主要功能:页面内容返回,cookie下发,Http字段设置,headers
1.响应行

    setStatus(int sc) 设置响应状态码

响应状态码:200=服务器端OK
404=NOT FOUND 请求资源不存在
500=服务器端代码错误

@Controller
public class IndexController {
    @RequestMapping("/request")
    @ResponseBody
    public String index(HttpServletResponse response) {
        response.setStatus(404);  //我们将状态设置成404
        return "hello";
    }
}



可以看到页面依然正常显示

SpringMVC参数传递 HttpServletRequest,HttpServletResponse和HttpSession


但是我们通过Restlet Client看其HTTP状态,为404

SpringMVC参数传递 HttpServletRequest,HttpServletResponse和HttpSession



2.响应头

    setHeader(String name,String value) //设置响应头信息
    sendRedirect(String location) //请求重定向
    addHeader(String name,String value) //增加相应头信息
    addCookie(Cookie cookie) //添加Cookie

response.setHeader("content-type", "text/html;charset=UTF-8");   //告知浏览器使用什么码表
//告知客户端不缓存
response.setHeader("pragma", "no-cache");
response.setHeader("cache-control", "no-cache");
response.setDateHeader("expires", 0);
//添加Cookie
response.addCookie(new Cookie(String name ,String value))


3.响应正文(主体)

    getWrite(); // 字符输出流
    getOutputStream(); //字节输出流
    setCharacterEncoding(String charset) //告知服务器使用什么编码
    setContentType(String type)

比如我们可以通过getOutputStream(); 返回图片,验证码等信息。

4.请求重定向

    response.sendRedirect()//请求重定向,让客户端去访问另一个服务器

例子

@Controller
public class IndexController {
    @RequestMapping("/request")
    @ResponseBody
    public String index(HttpServletResponse response)throws IOException {
        response.sendRedirect("/home");
        return "hello";  //也可以直接 return "redirect:/home"
    }

    @RequestMapping("/home")
    @ResponseBody
    public String home(HttpServletResponse response) {
        return "hahah";
    }
}


页面输出:hahah

PS:
一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理,称之为转发 /307
一个web资源收到客户端请求后,通知浏览器去访问另外一个web资源进行处理,称之为重定向/302



内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zysjys.html