servlet和tomcat相关知识

来源:互联网 发布:现金流量适合比率算法 编辑:程序博客网 时间:2024/04/30 14:02

 

Servlet相关知识

一、            servlet的定义

1.Servlet是接受来自网络的请求(form表单,以及其他的请求),并对不同请求作出不同的响应。

2.Servlet是一个位于服务器端的独立于平台和协议的Java应用程序,可以生成动态的web页面,也可以像jsp一样直接输出信息。

3. Servlet是基于Http协议运行在web容器中, web容器可以控制Servlet对象的生命周期,控制请求由Servlet对象处理。
   4.Servlet
必须在web.xml文件中注册服务器启动的时候,可以根据这些配置来加载Servlet类。

二、            tomcat

1. web服务器,常用的web服务器有TomcatJboss等,我们所用到的Tomcat是一个开源的服务器,Tomcat是一个用java语言编写的web服务器,所以需要有相应的java运行环境,也就是JVM,还要配置tomcat的具体路径。

2.配置环境变量:CATALINA_HOME=/XXXX/XXX

3.tomcat是否启动:地址栏输入ttp://localhost:8080/http://127.0.0.1:8080/可以访问到tomcat的主页就是启动成功了。

4. 要想停止tomcat服务器要使用shutdown.shwindows中使用shutdown.bat),如果直接关闭启动窗口,就会造成8080端口占用错误,这时可以在使用shutdown.sh关闭一下服务器。

   5. tomcat可以识别的资源只有在webapps文件夹下,webapps也就是web应用文件夹,webapps下的文件夹这些文件夹中存放的就是web应用。

6.web应用是有格式规范的:

       7. tomcat服务器中,访问应用下的资源可以在端口号后加上web应用文件夹的名字就可以看到资源http://localhost:8080/xxxxx/xxxx.html WEB-INF文件夹中的资源是受保护的,不能够通过网络访问到。

三、            Servlet的作用

1.Servlet主要用来在控制层结合mvc模式做控制转发.
2.Servlet
的应用:
   
表单是HTML中使用最广泛的传递信息的手段,Servlet使用HttpServlet类中的方法与表单进行交互,HttpServer把客户请求正确的映射到相应的函数上:

<formmethod="getpost" action=" url-pattern">

......

</form>
a) doGet
用于处理GET请求
b) doPost
用于处理POST请求

 

四、            Servlet中请求响应过程

 

五、Servlet的调用过程

1.   用户通过浏览器向web服务器发送请求

http://服务器ip地址:端口号/web应用名

2.   服务器为用户定位所需要的资源:

静态资源:

         XX.html静态页面,读取文件内容并发送到客户端

动态资源:

                  1解析web.xml定位Servlet类的名字

          2装载类(WEB-INF/classes的类文件或WEB-INF/lib下的jar文件)

3创建该对象的实例

    Class.forName("servle的类名").newInstance();

<servlet-mapping>

<servlet-name>servlet的名字(要和servlet标签中的相同)</servlet-name>

<url-pattern>/指定servlet相对于应用目录的路径</url-pattern>

</servlet-mapping>

url-parttern的配置,这个url就是Servlet的虚拟路径

    http://服务器ip地址:端口号/应用文件夹名/url-pattern

六、Servlet的生命周期分为以下四个阶段

1)创建Servlet对象,通过服务器反射机制创建Servlet对象,第一次请求时才会创建

2)调用Servlet对象的init()方法,初始化Servlet的信息,init()方法只会在创建后被调用一次

3)响应请求,调用service()或者是doGet()doPost()方法来处理请求,这些方法是运行的在多线程状态下的。

4)在长时间没有被调用或者是服务器关闭时,会调用destroy()方法来销毁Servlet对象。

七、cookiesession会话

CookieCookie是服务器发送给浏览器的纯文本信息,用户以后访问同一个Web服务器时浏览器会把它们原样发送给服务器。通过让服务器读取它原先保存到客户端的信息,网站能够为浏览者提供一系列的方便.(例如不用经常写登陆信息)

Sessionsession总是放在服务器上的,每个客户会跟一个sessionID(为了标识他是那个客户端的)对应。因为HTTP是无连接的,如何区分同一个客户的多次请求呢,就需要客户端每次发请求的时候,发送相应的sessionID

 

 

 

Cookiesession的比较:

1、存在的位置:

cookie保存在客户端,session保存在服务器端

2、安全性:

cookie的安全性比session

3、网络传输量

cookie通过网络在客户端和服务器端传输session ID

 

 

 

 

 

 

 

 

 

 

 

重写URL

session ID 加到一个连接可以使用一对方法来简化:response.encodeURL()使 URL 包含 session ID,如果你需要使用重定向,可以使用 response.encodeRedirectURL () 来对 URL 进行编码。

"<ahref="+resp.encodeURL(req.getRequestURL().toString())+">test</a>"//重写URLencodeURL(),如果浏览器的cookie没有禁掉,则这句话没有对 req.getRequestURL().toString()作任何处理,还是保持这个字符串的原样;如果cookie被禁掉了,则在字符串的后面加上一字符串""+session ID

encodeURL () encodeRedirectedURL () 方法首先判断 cookies 是否被浏览器支持;如果支持,则参数 URL 被原样返回,session ID 将通过 cookies 来维持。