HttpServletRequest详解

一、HttpServletRequest详解

代表着客户端的请求。要客户的信息只要找这个对象即可,该对象由容器创建。
学习关键:时刻记住HTTP协议的请求部分的具体内容。

6.1常用简单方法
6.2获取请求消息头
6.3获取请求参数(内省)
6.4常用表单数据的获取
    表单输入域类型:
        radio checkbox,即使表单中有对应名称输入域,如果一个不选择,则什么数据不会带给服务器。(注意空指针异常)
        如果选择了其中的一个或多个,则把他们的value的取值提交给服务器。
        如果选择了其中的一个或多个,他们又没有value取值,则提交给服务器的值是on.
    请求参数的编码:
        浏览器当前使用什么编码,就以什么编码提交请求参数。<meta http-equiv="content-type" content="text/html; charset=UTF-8">
        
        request.setCharacterEncoding(编码):通知程序,客户端提交的数据使用的编码。但是只对POST请求方式有效
        
        如果是get请求提交数据,编码就是ISO-8859-1
        
    Tips:目前采用POST提交方式。
    
6.5域对象:
    ServletRequest也是一个域对象(内部维护了一个Map<String,Object>)
        Object getAttribute(Stirng name):
        void setAttribute(String name,Object value):
        void removeAttribute(String name):
    
6.6请求转发和重定向
    请求转发借助于RequestDispatcher
    如何得到RequestDispatcher对象:
        方式一:ServletContext.getRequestDispatcher(目标资源的URI);
        方式二:ServletRequest.getRequestDispatcher(目标资源的URI);
        区别:
            方式一中的目标资源的URI必须以"/"开头,否则报错,此"/"就表示的是当前应用(绝对路径表示法)
            方式二中的目标资源的URI如果以"/"开头,就表示的是当前应用(绝对路径表示法)。如果不以"/"开头,就表示相对路径。
            
    
(了解原则)6.7转发和重定向细节(实际开发中知道一个原则)
    1、请求转发:由源组件转发到目标组件时,容器会清空源组件输出的数据。因此,用户只会看到目标组件输出的页面结果。
                但是,响应头信息是不清空的。
    编码原则:不要在转发前后向页面输出数据,也不要关闭输出流。(做无用功)
(了解原则)6.8包含:(动态包含)
    由源组件包含到目标组件时,容器会清空目标组件的头。因此,源组件设置的头才有效。
                但是,响应体信息是不清空的。
    编码原则:不要在目标组件中设置响应头。(做无用功)

二、会话概述

1、会话过程就好比打电话。
2、学习会话要解决的问题是什么?
    会话过程中的数据保存。

三、Cookie和HttpSession简介

    Cookie是客户端技术
    HttpSession是服务器端技术

四、Cookie详细介绍

    javax.servlet.http.Cookie
    1、Cookie是什么?
        一个小信息,由服务器写给浏览器的。由浏览器来保存。
        客户端保存的Cookie信息,可以再次带给服务器。
    2、Cookie的属性:
        name:必须的
        value:必须的
        comment:可选的。注释
        path:可选的。
                写Cookie的程序的访问路径是:http://localhost:8080/day07/servlet/CookieDemo1
                        其中:localhost就是域名;/day07/servlet就是当前Cookie的path
                        
                        
                访问的地址的URI.startWith(cookie的路径),为true就带
                
                比如IE存的cookie的路径是/day07
                现在访问的地址是:http://localhost:8080/day07/servlet/CookieDemo1  带
                现在访问的地址是:http://localhost:8080/day07/CookieDemo1          带
                
                比如IE存的cookie的路径是/day07/servlet/
                现在访问的地址是:http://localhost:8080/day07/servlet/CookieDemo1  带
                现在访问的地址是:http://localhost:8080/day07/CookieDemo1          不带
                
                如果一个Cookie的路径设置成了/day07,意味着什么?当前应用下的所有资源浏览器都会带着它给服务器。
                
        domain:可选的。该Cookie所属的网站域名。(itcast.cn)默认值。
        maximum age:可选的。不设置就是会话过程(存在浏览器的内存中)。单位是秒
                        如果是0,说明要删除。
        version:可选的。
        
    3、如何向客户端写Cookie:HttpServletResponse.addCookie(javax.servlet.http.Cookie)(就是写了一个响应消息头:Set-Cookie:cookie的信息)
        特点:一个浏览器针对一个网站最多存20个Cookie;最多存300个Cookie,每个Cookie的长度不能超过4KB。(稀缺)
    
    4、服务器如何得到客户端传来的Cookie。HttpServletRequest.getCookies()
    5、如何区分Cookie:通过名称不行。
        domain+path+name来区分的。
        localhost/day07/servlet/lastAccessTime

五、Cookie案例:

    5.1记住用户最后一次的访问时间
    
    5.2记住用户登录时的用户名
    5.3电商网站:记住用户商品的历史浏览记录

六、各种URL地址的写法

    相对路径
    绝对路径:(建议的)
    绝对路径怎么写?什么时候需要加上应用名称"/day07"?
    原则:地址是不是给服务器用的,如果是,"/"就代表着当前应用。如果是给客户端用的绝对路径要加上应用名称。
    
    
    <link href=path/>                                要加/day07
    <script src=path/>                              要加/day07
    <img src=path/>                                 要加/day07
    <a href=path/>                                  要加/day07
    RequestDispatcher.include(path)                 不要加,"/"就代表着当前应用
    RequestDispatcher.forward(path)                 不要加,"/"就代表着当前应用
    HttpServletResponse.sendRedirect(path)          要加/day07
    ServletContext.getRealPath(path)                不要加,"/"就代表着当前应用
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容