码迷,mamicode.com
首页 > 其他好文 > 详细

小白的进阶之路14

时间:2018-08-10 23:24:20      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:常用   rac   方式   iso   获得   配置   utils   浏览器   属性   

---恢复内容开始---

servlet 是Javaweb的三大组件之一。

三大组件:servlet,filter,lisoner

客户端通过服务器想浏览器发出请求。

我们所写的AServlet、BServlet,都是由我们实现servlet接口的实现类。

servlet是单例的,一个类一个servlet,他们的功能是不同的。但他是线程不安全的,而且效率是高的。有可能出现一个servlet处理同时处理多个请求,所以最好不要在servlet中随便创建成员变量,有可能出现一个线程是读操作,另一个线程是写操作,这样就出现线程不安全的问题。但如果是只读,或者只写操作还可以。

servlet 类我们写(比如执行什么功能),但是对象由Tomcat创建。

servlet完成的三大块:

获取请求数据、  请求处理、完成响应。

servlet的三大生命周期方法:init(),//第一次请求servlet则创建。destroy()//Tomcat关闭则死亡。

service(),,,//可以多次调用,每次处理请求都会调用。

而这些方法都是由Tomcat调用,调用destory则servlet死亡,关闭Tomcat则死亡。

tomcat怎么访问servlet,servlet只是一个java类???

需要用xml配置文件,将servlet和URL的路径绑在一起。

技术分享图片

在xml配置中,获取初始化参数。

技术分享图片

获取初始化参数

技术分享图片

技术分享图片

需要调用service时,Tomcat将service的两个参数强转成httpservletrequest,和 httpservletresponse类型。然后通过httpservletreques得到当前的请求方式,是post还是get,如果是post,则调用doPost方法,如果是get,则调用get方法。

技术分享图片

4打头,是客户端的错误。

技术分享图片

一般情况下,servlet的创建时第一次被调用的时候,但是可以设置xml文件实现服务器开启时就创建。

技术分享图片

图中的<load-on-startup> 表示第一次开启的时候就创建的顺序。

 ServletContext==application

生命周期在服务器开启时创建,服务器关闭时死亡。

一个项目只有一个servletcontext对象。

servletconfig()。getservletContext();

正常我们创建一个servlet会继承httpservlet

public void servlet extends httpservlet(){

………………}

但其实,httpservlet继承了servletconfig接口。

技术分享图片

javaweb中有四大域对象,即pageContext,servletContext,servletrequest,httpsession。

域对象是什么?有什么作用?

域对象不需要创建直接在servlet区域中调用,作用是保存数据以及servlet之间的数据传递。所以域对象有两大功能,第一存数据,第二取数据。

技术分享图片

servletcontext可以设置全局的初始化参数,此初始化参数不属于任何一个servlet

下面是一个小练习:

访问量的统计。

第一次访问的时候建立一个int型的变量在servletcontext这个对象中,之后的每次访问都+1;

首先,第一次访问的时候用setattribute()这个函数来创建一个属性,

技术分享图片

将输入流转化为字符串,需要用到commons.ioUtils这个工具类。

URI=项目名+servlet路径:、/goods/AServlet

URL:不包含路径的参数的请求路径。即?之后全没有

 技术分享图片

获取请求参数,用户向服务器发出请求,如果请求参数在请求体中,则是post请求,如果是URL中,则是get请求。

技术分享图片

其中第一个和最后一个最为常用。

转发是一个请求,跨多个servlet,但是使用一个request和response域。

技术分享图片

这是转发,request.getRequestDispatcher("/TwoServlet").forword(request,reponse);

请求转发是只显示转发至的servlet响应体。

在转发中,留头不留体,比如AServlet转发至BServlet,在A中设置响应头和响应体,在B中设置响应体,那么,A中只会留头(为了证明|A参与)不会留体,只会留B中的体。、

转发地址栏不会发生变化,如果想地址栏发生变化,那么必须使用重定向。如果想在下一个servlet中获得request域中的数据,那么必须使用转发。

服务器默认编码是iso8859-1;而浏览器默认的编码是gbk;但是Tomcat8的默认编码是utf-8;

响应编码:不乱码,只需加上response.setContextType("text/thml";"charset=utf-8");

请求编码:页面是什么编码,那么获得请求参数就是什么编码。在获得请求参数之前,要加上request.setCharacterEncoding("utf-8");然后在用request.getParameter("XXX");

技术分享图片

技术分享图片

以“/”开头,则是绝对路径,绝对路径要加项目名+。。。

不以“/”开头,则是相对路径

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

---恢复内容结束---

小白的进阶之路14

标签:常用   rac   方式   iso   获得   配置   utils   浏览器   属性   

原文地址:https://www.cnblogs.com/hanmengdi/p/9457202.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!