美文网首页
MVC应用开发

MVC应用开发

作者: CokeCode | 来源:发表于2021-07-28 23:10 被阅读0次

    1. 目录

    1.1. HTTP 状态保持

    1. URL重写
    2. 隐藏域
    3. cookies
    4. sessions

    1.2. Servlet

    1. Spring Boot注册过滤器Filter

    1.3. Spring MVC

    1. 转发
    2. 重定向
    3. 请求参数@RequestParam
    4. 路径变量@PathVariable
    5. 模型属性@ModelAttribute

    2. HTTP 状态保持

    2.1. URL重写

    2.2. 隐藏域

    2.3. Cookie

    2.3.1. 特性

    1. 由服务端生成,可以通过HTTP头发送给浏览器,由浏览器存储在本地;
    2. 浏览器在访问同一Web服务器时,会将之前收到的Cookie携带在HTTP请求头中一并发送。

    Cookie的缺陷

    1. cookie会被附加在每个HTTP请求中,所以无形中增加了流量。
    2. cookie在HTTP请求中是明文传递的,所以安全性成问题。(除非用HTTPS)
    3. cookie的大小限制在4KB左右。对于复杂的存储需求来说是不够用的。
    4. 用户出于安全考虑,可以通过改变浏览器设置拒绝接受cookies。

    2.3.2. 创建Cookie

    import javax.servlet.http.Cookie;
    
    Cookie cookie = new Cookie(name, value);
    

    2.3.3. Cookie的属性

    • domain:
    • path:
    • maxAge:cookie的过期时间。
    • httpOnly:

    2.3.4. 服务器发送Cookie到浏览器

    • 接口:HttpServletResponse#addCookie(Cookie):void

    服务器端发送cookie给客户端,使用HTTP头的Set-Cookie字段。包括了对应的cookie的名称,值,以及各个属性。例如:

    Set-Cookie: lu=YLjVg7qi3bZjzgRg3vHJZneh; Expires=Tue, 15 Jan 2021 22:37:38 GMT; Path=/; Domain=.it168.com; HttpOnly
    
    Set-Cookie: made_write_conn=1295214458; Path=/; Domain=.it168.com
    
    Set-Cookie: reg_fb_gate=deleted; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Path=/; Domain=.it168.com; HttpOnly
    

    2.3.5. 浏览器提交cookie到服务端

    浏览器发送cookie给服务器的时候,是不发送cookie的各个属性的,而只是发送对应的名称和值。使用HTTP头的Cookie字段:

    GET /spec.html HTTP/1.1  
    Host: www.example.org  
    Cookie: name=value; name2=value2  
    Accept: */*
    

    服务端提取Cookie使用如下接口:HttpServletRequest#getCookies():Cookie[]

    2.3.6. 查找指定名称的Cookie

    public static Cookie findCookie(String cookieName) {
        if (cookieName == null) {
            return null;
        }
        for (Cookie c : httpServletRequest.getCookies()) {
            if (cookieName.equals(c.getName())) {
                    return c;
            }
        }
        return null;
    }
    

    2.3.7. 删除Cookie

    创建一个同名Cookie,设置maxAge为0,添加到HttpServletResponse中,相当于删除同名cookie:

    Cookie cookie = new Cookie("name", "");
    cookie.setMaxAge(0);
    httpServletResponse.addCookie(cookie);
    

    2.4. Session

    2.4.1. 特性

    1. 由服务端创建和维护,不会发送给客户端,只会将其唯一ID发送给客户端
    2. 服务端发送Session id给客户端通常有两种方式:(1)创建一个名为JSESSIONID的cookie,其值为会话ID,(2)在URL后附加一个名为jsessionid的参数

    3. Servlet

    3.1. Spring Boot下注册过滤器

    4. Spring MVC

    4.1. 转发

    4.2. 重定向

    4.3. 请求参数@RequestParam

    4.4. 路径变量@PathVariable

    4.5. 模型属性@ModelAttribute

    4.6. 上传文件

    4.7. 下载文件

    相关文章

      网友评论

          本文标题:MVC应用开发

          本文链接:https://www.haomeiwen.com/subject/kpstvltx.html