您的位置:首页 > 其它

Servlet知识梳理

2014-10-21 07:52 169 查看
一 Tomcat配置

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

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

二 虚拟目录

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

比如 d 盘有一个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的实例,并且调用servlet的init()方法;如果当服务器已经存在了一个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 的声明周期间隔时间,即从最后一次访问后开始计时。即我们设置Session为20分钟,如果20分钟内没有访问,Session即失效。

以下情况Session也会失效

A.关闭tomcat

B.重启web应用

C.时间到

D..调用session.invalidate();

⑤ 使用原则

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

每个站点最多20个cookie 每个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销
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: