您的位置:首页 > 运维架构 > Tomcat

servlet和tomcat相关知识

2009-12-08 22:26 225 查看
 

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



服务器有




Tomcat







Jboss



等,我们所用到的



Tomcat



是一个开源的服务器,



Tomcat



是一个用



java



语言编写的



web



服务器



,所以需要有相应的



java



运行环境,也就是



JVM



,还要配置



tomcat



的具体路径。



2.



配置环境变量:



CATALINA_HOME=/XXXX/XXX



3.tomcat



是否启动:地址栏输入



ttp://localhost:8080/





[/b]

http://127.0.0.1:8080/



可以访问到



tomcat



的主页就是启动成功了。



4.



要想停止



tomcat



服务器要使用



shutdown.sh







windows



中使用



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

把客户请求正确的映射到相应的函数上:



<form
method="get







post" 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



对象。



七、



cookie







session



会话



Cookie







Cookie



是服务器发送给浏览器的纯文本信息,用户以后访问同一个



Web



服务器时浏览器会把它们原样发送给服务器。通过让服务器读取它原先保存到客户端的信息,网站能够为浏览者提供一系列的方便



.(



例如不用经常写登陆信息



)



Session



:session

总是放在服务器上的,每个客户会跟一个sessionID

(为了标识他是那个客户端的)对应。因为HTTP

是无连接的,如何区分同一个客户的多次请求呢,就需要客户端每次发请求的时候,发送相应的sessionID





 



 



 



Cookie







session



的比较:



1



、存在的位置:



cookie



保存在客户端,



session



保存在服务器端



2



、安全性:



cookie



的安全性比



session







3



、网络传输量



cookie



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



session ID







 



 



 



 



 



 



 



 



 



 



 



重写URL



把 session ID

加到一个连接可以使用一对方法来简化:response.encodeURL()

使 URL

包含 session ID

,如果你需要使用重定向,可以使用 response.encodeRedirectURL ()

来对 URL

进行编码。



"<a
href="+resp.encodeURL(req.getRequestURL().toString())+">test</a



>



"//



重写



URL







encodeURL(),



如果浏览器的



cookie



没有禁掉,则这句话没有对



req.getRequestURL().toString()



作任何处理,还是保持这个字符串的原样;如果



cookie



被禁掉了



,



则在字符串的后面加上一字符串



"







"+session ID



encodeURL ()



及 encodeRedirectedURL ()

方法首先判断 cookies

是否被浏览器支持;如果支持,则参数 URL

被原样返回,session ID

将通过 cookies

来维持。



 



 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息