一 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,responsehttp://blog.youkuaiyun.com/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销