Servlet知识梳理

一 Tomcat配置

② 在不配置JAVAHOME的前提下启动tomcat

startup.bat的第25行中添加set JAVA_HOME=JDK路劲  


二 虚拟目录

需求当我们把 web 应用放到 webapps目录,tomcat会自动管理,如果我们希望tomcat可以管理其它目录下的web应用?->虚拟目录配置

 比如   盘有一个web应用.

配置虚拟目录

在server.xml文件中

 编辑host节点 添加Context path

server.xml中添加:<Context path="/myweb2" docBase="d:\web2"/>

myweb2:是访问时输入的web,实际取出的是web2中的资源

"d:\web2"绝对路径下web2中存放资源如:hello2.html

实际访问时输入的地址:http://localhost:8088/myweb2/hello2.html

path:项目名  docBase:资源所在路径

reloadable  ;如果设为ture ,表示 tomcat 会自动更新 web应用,这个开销大,建议在开发过程中,可以设为true, 但是一旦真的发布了,则应当设为false;

upackWAR如果设为 ture ,则自动解压,否则不自动解压.

war包 cd:d/web2 然后jar cvf web2.war *

三去掉项目名部署网站

<Host name="www.sina.com" appBase="d:\web3>

<Context path="/" docBase="d:\web3" />

</Host>

四 Servlet的生命周期

当客户端第一次向web服务器发出一个servlet请求时,web服务器将会创建一个该servlet的实例,并且调用servletinit()方法;如果当服务器已经存在了一个servlet实例,那么,将直接使用此实例;然后再调用service()方法,service()方法将根据客户端的请求方式来决定调用对应的doXXX()方法;当 web应用 reload 或者 关闭 tomcat 或者 关机,web服务器将调用destroy()方法,将该servlet从服务器内存中删除。

生命全过程:

1.加载

2.实例化

 3.初始化

 4.处理请求

 5.退出服务

五Servlet部署

将该Servlet部署到web.xml文件中:

<!--根据serlvet规范,需要将Servlet部署到web.xml文件,该部署配置可以从examples下拷贝-->

 <servlet>

<!--servlet-name 给该Servlet取名该名字可以自己定义:默认就使用该Servlet的名字-->

      <servlet-name>MyGenericServlet</servlet-name>

  <!--servlet-class要指明该Servlet 放在哪个包下 的,形式是 包//../-->

      <servlet-class>com.hsp.MyGenericServlet</servlet-class>

    </servlet>

<!--Servlet的映射-->

 <servlet-mapping>

<!--这个Servlet-name要和上面的servlet-name名字一样-->

        <servlet-name>MyGenericServlet</servlet-name>

<!--url-pattern 这里就是将来访问该Servlet的资源名部分,默认命名规范:

就是该Servlet的名字-->

        <url-pattern>/MyGenericServlet</url-pattern>

</servlet-mapping>

  get  提交 和  post 的提交的区别

① 从安全看 get<post 因为get 会把提交的信息显示到地址栏

② 从提交内容看 get<post get 一般不要大于2k, post理论上无限制,但是在实际              开发中,建议不要大于64k

③ 从速度看 get>post

④ Get可以保留uri中的参数,利于收藏

 servlet 中的 <load-on-startup> 配置

需求当我们的网站启动的时候,可能会要求初始化一些数据,(比如创建临时表), 在比如:

我们的网站有一些要求定时完成的任务定时写日志,定时备份数据.. 定时发送邮件..]

解决方法: 可以通过 <load-on-startup> 配合 线程知识搞定.

 

先说明<load-on-startup>: 通过配置<load-on-startup> 我们可以指定某个Servlet 自动创建.


八 url 和 uri 的区别

比如:

Url=http://localhost:8088/servletPort3/GetinfoServlet 完整的请求

Uri=/servletPort3/GetinfoServlet web应用的名称+资源的名称

 九request,response

http://blog.csdn.net/m87138/article/details/38335463

1跳转方式

request是在服务器端跳转,她的路径是相对于项目的路径,只能跳转到项目内的一些地址

response是在客户端跳转的,她的路径是相对于服务器的根路径,可以跳转到任何地址

2数据共享

3请求次数

从2可以看出request跳转时客户端只发送一次请求,response跳转时,客户端发送两次请求

4地址改变

request跳转时发生在服务器端,浏览器被瞒住了,所以url不变,response跳转时,浏览器会会自动向新的页面发送response,所以浏览器知道url改变了,所以url会改变

十Cookie  vs  Session

① 存在的位置

Cookie存在客户端的临时文件夹

Session存在在服务器内存中,一个session域对象为一个用户浏览器服务。

② 安全性

Cookie是以明文方式存放在客户端的,所以说安全性相对较弱.可以MD5加密再存放。

Session是存放服务器内存中的,安全性相对较强。

③ 网络传输量

Cookie会传递信息给服务器

Session属性值不会传递给客户端。

④ 生命周期

Cookie的生命周期是累积时间,即到点就失效。即我们给cookie设置setAge(30); 30秒后及失效。

Session 的声明周期间隔时间,即从最后一次访问后开始计时。即我们设置Session20分钟,如果20分钟内没有访问,Session即失效。

以下情况Session也会失效

A.关闭tomcat

B.重启web应用

C.时间到

D..调用session.invalidate();

⑤ 使用原则

因为Session会占用服务器内存,因此不要往session中存放过多过大的对象。

每个站点最多20cookie 每个cookie大小限制在4K以内。

Cookie:

Cookie存放中文怎么处理

存放时:

String val = java.net.URLEncoder.encode("顺平","UTF-8");

Cookie cookie = new Cookie("uname",val);

取出时:

String val = java.net.URLEncoder.decode(cookie.getValue(),"UTF-8");

Out.println("uname="+val);

setMaxAge(负数),相当于该cookie的生命周期是会话级的。

如何实现IE禁用cookie后我们还能继续使用session

1:把session ID回写到cookie

//cookie名字必须为JSESSION 区分大小写

Cookie cookie = new Cookie("JSESSION",session.getID());

cookie.setMaxAge(60*30);

response.addCookie(cookie); 

2:URL地址重写

 //使用一次session 以便获得sessionID,把sessionid放在url后面


十一ServletContext 

1.ServletContext 是在服务器创建

2.ServletContext被所有客户端共享

3.ServletContext web应用启动时自动创建,

ServletContext web应用关闭 重启动 或服务器关闭时都会造成ServletContext

 


 








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值