尚学堂049天总结+Servlet

049天

行百里者半九十,想要在一个行业里成为顶尖人才,一定满足一万小时定律,要想学好JAVA,需要持之以恒不断地努力,每天都要勤思考+善于询问+解决问题!

知识温故而知新>>>>>>>

IO流体系总结


因为最近忙于学校里考试的测验,时间交错不开,所以耽误了这边的学习,后期我会尽快补上,加快学习速度!

HTTPServletRequest的介绍和特点

request对象的作用是什么。

获取请求报文中的所有数据 

1、获取请求参数【input表单项提交的数据】

2、获取url地址中的所有数据

3、获取请求转发器转发请求

request对象的特点是什么?

request对象是由谁创建的?

由Web容器创建的

request获取请求行数据和根据键名获取请求头数据

请说出request对象获取请求行的方法及其作用

请求方式:"+request.getMethod()

请求URL:"+request.getRequestURL()

请求URL中附带的参数:"+request.getQueryString()

请求资源:"+request.getRequestURI()

getHeader方法的作用及特点

获取指定的头信息:采用 request.getHeader("头名称") 方法。

request获取请求头键名枚举和根据键名获取实体数据和获取同名不同值数据

简要说明getHeaderNames的作用?

获取HTTP协议中的请求头

获取请求实体数据的方法是?区别是?

直接使用request.getQueryString()获取String

当请求方式为“Post”时,读取InputStream(request.getInputStream())

区别是请求方式不同

request获取请求实体键名枚举和获取请求相关网络数据

请列举获取网络信息的方法是哪些及其作用

请说名getParameterNames的作用是什么,以及需要注意什么?

request.getParameterNames()方法是将发送请求页面中form表单里所有具有name属性的表单对象获取(包括button).返回一个Enumeration类型的枚举.

通过Enumeration的hasMoreElements()方法遍历.再由nextElement()方法获得枚举的值.此时的值是form表单中所有控件的name属性的值.

最后通过request.getParameter()方法获取表单控件的value值.

response设置响应行和设置响应头

说明addHeader和setHeader的方法的作用和区别

setHeader(name, value):如果Header中没有定义则添加,如果已定义则用新的value覆盖原用value值。

addHeader(name, value):如果Header中没有定义则添加,如果已定义则保持原有value不改变。

说明sendError的作用

 sendError(int errnum )说明:用来向客户端发送错误信息,这对调试程序有很大帮助。

response设置响应实体

响应实体是什么?

响应实体:正文,服务器返回给浏览器的信息

响应实体和响应头有啥区别?

响应头:消息报头,客户端使用的附加信息

乱码问题解决

请说明get和post请求乱码的解决方案

post乱码:

原因:

对于POST方式,它采用的编码是由页面来决定的即ContentType("text/html; charset=GBK")。当通过点击页面的submit按钮来提交表单时,浏览器首先会根据ContentType的charset编码格式来对POST表单的参数进行编码然后提交给服务器,在服务器端同样也是用ContentType中设置的字符集来进行解码,这就是通过POST表单提交的参数一般而言都不会出现乱码问题。

当然这个字符集编码我们是可以自己设定的:request.setCharacterEncoding(charset)设置编码,然后通过request.getParameter获得正确的数据。

解决方案:

springMVC已经提供了轮子给我们使用,在web.xml添加post乱码filter

在web.xml中加入:

<filter>

<filter-name>CharacterEncodingFilter</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>utf-8</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>CharacterEncodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

以上可以解决post请求乱码问题。

get乱码:

原因:

对于GET方式,我们知道它的提交是将请求数据附加到URL后面作为参数,这样依赖乱码就会很容易出现,因为数据name和value很有可能就是传递的为非ASCII码。

当URL拼接后,浏览器对其进行encode,然后发送到服务器。具体规则见URL编码规则。

tomcat服务器在进行解码过程中URIEncoding就起到作用了。tomcat服务器会根据设置的URIEncoding来进行解码,如果没有设置则会使用默认的ISO-8859-1来解码。假如我们在页面将编码设置为UTF-8,而URIEncoding设置的不是或者没有设置,那么服务器进行解码时就会产生乱码。

这个时候我们一般可以通过new String(request.getParameter("name").getBytes("iso-8859-1"),"utf-8") 的形式来获取正确数据,或者通过更改服务器的编码方式: tomcat 设置中<Connector port="8080"protocol="HTTP/1.1"  maxThreads="150" connectionTimeout="20000"redirectPort="8443"URIEncoding="客户端编码"/> (默认是iso-8859-1)。

服务器获取的数据都是ASCII范围内的请求头字符,其中请求URL里面带有参数数据,如果是中文或特殊字符,那么encode后的%XY(编码规则中的十六进制数)通过request.setCharacterEncoding()是不管用的。这时候我们就能发现出现乱码的根本原因就是客户端一般是通过用UTF-8或GBK等对数据进行encode的,到了服务器却用iso-8859-1方式decoder。

解决方案:

1.修改tomcat配置文件添加编码与工程编码一致,如下:

<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

2.对参数进行重新编码:

String userName new

String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")

请求说明如何解决响应数据乱码

1、设置缓存区编码格式为UTF-8,使用 setCharacterEncoding() 方法。

2、在响应中主动告诉浏览器使用UTF-8编码格式接收数据,使用 setHeader() 方法。

3、使用封装类简写Content-Type,使用 setContentType() 方法则无需使用 setCharacterEncoding() 方法,推荐使用这种方法。

简单的登录练习

什么是Servlet?

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

Servlet的特点是什么?

性能明显更好。

Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。

Servlet 是独立于平台的,因为它们是用 Java 编写的。

服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。

Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。

写出视频中对Servlet总结的内容

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

推荐阅读更多精彩内容

  • 引言 火箭联盟是一款由 Psyonix 开发并于 2015 年 7 月发行的竞速/体育游戏,游戏将足球和赛车融合,...
    Squirrelseu阅读 536评论 0 1
  • 周卫平焦点网络第十期坚持分享第1 49天 1.对于这个孩子我最喜欢的是什么? 孩子的问题是什么? 2.我的孩子有哪...
    心所安处阅读 153评论 0 0
  • “今天就写到这里,请记住关键词:事上磨练。” 今天读了猫叔的碎碎念 记住了一个关键词“事上磨炼” 所以呀 庆幸自己...
    绿水青山空谷幽兰阅读 96评论 0 0