- 浏览: 825375 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (488)
- struts1 (4)
- spring (13)
- extjs (36)
- mysql (3)
- sqlserver (2)
- oracle (37)
- 杂谈 (11)
- 面试相关 (35)
- Java基础知识总结 (5)
- Java重要知识点 线程和io流知识点 (6)
- 服务器相关 (1)
- 生活 (1)
- jsp (7)
- servlet (2)
- junit (3)
- struts2 (9)
- 开发必备 (4)
- 使用开发工具总结的知识 (4)
- ibatis (12)
- ajax (2)
- dwr (2)
- jquery (1)
- 设计模式 (4)
- Lucene的学习 (5)
- 经验总结 (19)
- mysql全文搜索相关 (7)
- hibernate (33)
- Sphinx (1)
- log4j的总结 (1)
- 敏捷开发 (9)
- 持续集成 (15)
- UML使用总结 (1)
- Scrum (1)
- OO(面向对象编程) (1)
- struts1和struts2总结 (1)
- 数据库加密 (1)
- 多线程和Socket编程 (6)
- PowerDesigner (2)
- 权限相关 (1)
- ant应用总结 (4)
- 面试必知知识点总结 (6)
- io流与nio流总结 面试相关 (1)
- 敏捷管理工具的使用 (7)
- hsqldb相关 (1)
- svn源码相关 (2)
- debug调试技巧总结 (1)
- hibernate和ibatis对比相关 (6)
- eclipse mylyn 插件的使用总结 (2)
- fisheye使用总结 (2)
- java泛型总结 (1)
- ssh整合总结 (10)
- SpringSide的学习总结 (1)
- JPA学习总结 (2)
- RoR 总结 (2)
- 模型驱动 总结 (1)
- Oracle SQL优化技巧 (4)
- 数据库相关资料 (1)
- oracle练习相关 (4)
- PowerDesigner 使用总结 (2)
- Struts实现国际化相关 (2)
- 权限框架 Spring Security (1)
- freemarker使用总结 (1)
- jsp servlet总结相关 (3)
- Java NIO总结 (1)
- 自己学习必须 (3)
- 蝴蝶容器相关 (2)
- eclipse插件的使用 (1)
- myeclipse的使用 (1)
- flex相关 (1)
- javaeye重生后总结的知识点 (2)
- 公司学习总结 (3)
- JAXB 相关 (1)
- ECSide (1)
- EdoJs 企业ajax框架 (1)
- RSA加密算法 (1)
- jbpm相关 (1)
- JMF原理 (1)
- MyEclipse使用总结 (1)
- Funsion Charts 相关总结 (3)
- 常用知识2011 (2)
- Flex与Java整合 (1)
- IBM WebSphere相关 (1)
- jQuery使用技巧 (2)
- 2011年面试相关知识点总结 (2)
- sqlserver开发相关 (8)
- eclipse 打jar相关 (2)
- Oracle/Mysql/SqlServer比较 (1)
- WebService Axis1.4开发相关 (4)
- 进制数的转换 总结 (1)
- WebService Axis2.0开发相关 (0)
- iteye Struts2 Spring Hibernate整合相关 (3)
- iteye osgi资料相关总结 (1)
- iteye ifos相关相关 (1)
- iteye 国际化相关 (1)
- iteye Hibernate缓存机制 (4)
- iteye Struts2 总结 (1)
- iteye Struts标签总结 (0)
- iteye web配置文件大全 (6)
- iteye Efs 框架总结 (1)
- iteye sql优化 (2)
- iteye 大数据量高并发的数据库优化 (1)
- iteye 开发相关 (1)
- iteye s1sh 和 s2sh整合中的问题以及解决 (1)
- iteye s1sh整合实例 (1)
- iteye s2sh整合实例 (1)
- iteye 面试相关 基础篇 (1)
- iteye Android相关 (1)
- iteye 面试相关 Web篇 (1)
- iteye Sql Server相关 (0)
- iteye struts1与struts2比较 (1)
- iteye jquery 和Struts2 (0)
- iteye struts2与其他插件整合 (0)
- iteye jquery 开发相关 (1)
- iteye eclipse结合spket(Ext,Jquery)开发相关 (0)
- iteye myeclipse 使用技巧相关 (0)
- iteye Memcached 缓存系统相关 (0)
- iteye 常用软件相关 (0)
- iteye 最新技术预览 AjaxSwing (0)
- iteye struts上传下载相关 (0)
- iteye 新技术相关 (0)
- test (0)
- iteye 开发Java游戏相关 (0)
- iteye Java反编译 (0)
- iteye XML解析相关 (0)
- iteye 压缩ZIP相关 (0)
- iteye 面试相关 (0)
- iteye Android开发相关 (4)
- csdn (0)
- e-inoc (0)
- iteye http错误码对应说明 (0)
- iteye 面试扩展知识点 (0)
- iteye oracle面试相关 存储过程,触发器,游标等 (0)
- iteye english study (0)
- iteye starflow工作流引擎 (0)
- iteye IBM WebSphere Application Server Toolkit使用相关 (0)
- iteye spring3 (0)
- iteye mybatis (0)
- iteye js技巧总结 (0)
- iteye SEO优化相关 (2)
- iteye QUI网页界面集成框架 (1)
- iteye AjaxAnywhere (1)
- iteye Nutz相关 (1)
- iteye ibatis技巧 (0)
- iteye dwz (0)
- 128个ajax/javascript框架 (0)
- iteye 2012 Java Swing教程 (1)
- iteye 码头集装箱相关 (1)
- iteye swing (2)
- 兼职工作 (0)
- 2012 新总结的面试相关知识点 常用知识点 (1)
- 淘宝网店相关 (0)
- oracle 常用函数 2012新总结 (1)
- 我的时尚潮流屋 (0)
- 2012 年 面试新总结知识 (1)
- 技巧 (1)
- 2013总结 (1)
- 2015工作相关 (3)
- springmvc (5)
- EasyPR-Java (1)
- java (2)
- editplus 4.0 注册码 (1)
- android (1)
- oracle连接数据库相关 (1)
- 编程资料总结 (2)
- 20160808 (1)
- visio 2013 (1)
最新评论
-
drew926:
泛型的类型参数可以有多个?这是java哪个版本支持的?
java泛型总结 -
listenan:
赞!非常感谢。
Scrum总结 -
cwscwj:
写的很深刻,谢谢,看了一遍,过段时间打算再看一遍。
Scrum总结 -
hwedwin:
w
Struts 2中的OGNL\EL的使用总结 -
lanni2460:
不错 很好 支持……
sqlserver三个驱动包下载
servlet总结
Servlet
C/S--->client/service
优点:
1)运行效率较高
2)交互性强适合局域网,
缺点:升级维护困难
B/S-->WEB应用 browser浏览器 Service
优点:无需关心客户端,升级维护,只需操作服务器即可.比较方便.
缺点:
1)交互性是请求/响应式,需要通过网络进行交互,效率相对c/s架构的软件来说较低.
2)要开发交互性较强的界面比较困难.
CGI:最早开发b/s架构的一门技术
从CGI分出 1)微软的ASP--->ASP.NET
2)JAVA的Servlet--->jsp
开发技术:
静态网页技术:
HTML,JS,CSS
动态网页技术:(动态说的是数据动态)
CGI,ASP,ASP.net,servlet,php,jsp等
url:
http://192.168.1.250:8888/poll/login.jsp
协议://地址(ip-->域名):端口(如果是80,可以省略)/web应用名/资源名
web服务器: (微软的)IIS:
(apache的)tomcat(开源的):等..
servlet:
1)属于j2ee的其中一个技术,是一个规范
2)servlet是一个web组件(包含servlet类和他的描述信息) 组件如java bean 可复用的
3)servlet运行的时候就是一个java对象(创建.调用.管理由web服务器(web容器)完成).web容器是web服务器的线程 tomcat的web容器是CATALINA
web 容器调用servlet对象的方法
首先由web容器创建两个对象:
1.HttpServletRequest:
包含了客户端提交的所以信息,在servlet中 ,可以通过这个对象获得客户端传递过来的数据.
2.HttpServletResponse:
通过这个对象可以向客户端返回数据
public void service(ServletRequest req,ServletResponse res){
}
web应用的目录结构:
应用名:(web应用的根目录的名字)
WEB-INF(必须):浏览器不能直接访问
classes(存放.class文件)
lib(存放第三方的.jar文件)
web.xml(描述servlet,包括类名和访问标识)
html/first.html
js/my.js
css/my.css
jsp/first.jsp
META-INF
tomcat服务器的目录结构:
bin:存放一些可执行文件:比如startup.sh,shutdown.sh
common:存放tomcat服务器和所以web应用都可以使用的类和jar包
conf:存放tomcat服务器使用的一些配置文件.比如 service.xml中可改端口号
logs:存放tomcat服务器和web应用输出的日志信息的文件
server:存放一些只能由tomcat服务器使用的类和jar包,以及tomcat自带的web应用
shared:存放一些只能由web应用使用的类和jar包
temp:存放一些临时文件
*webapps:用来部署web应用
work:存放jsp文件被翻译和编译以后的.java和.class文件.
web工程(IDE):通过工程可创建web应用
web应用:(成品软件)
javax.servlet.Servlet(接口)
javax.servlet.GenericServlet(抽象类)
javax.servlet.http.HttpServlet(抽象类)(建议使用)
Service-->doGet/doPost(根据客户端请求方式调用,不是非要同时调用)
tomcat由于已经启动无法启动 用命令 ps -ef|grep tomcat 在kill -9 进程号
form表单处理:
1.提供表单
a)提供一个html页面包含一个form表单
b)提供一个servlet返回一个form表单
form表单action属性指定的路径
a)相对路径
register
b)绝对路径
/servlet/form/register
2.中文乱码问题
a)get方式提交
解决办法,在服务器中设置客户端提交请求的URI的编码类型
在server.xml中 <Connector 加 URIEncoding="UTF-8"
b)post方式提交
在server中获得客户端提交的参数之前,调用req对象的setCharacterEncoding方法设定编码类型。
c)响应
在server中获得输出流之前,调用response对象的的setCharacterEncoding方法设定编码类型。
3.method="get"和method="post" (form表单的两种提交方式比较)
get请求:
a)直接在浏览器地址栏输入请求的URL发起的请求:
b)点击一个超连接发起的请求
c)提交一个form表单但form表单的method不指定或指定get的时候
特点:
提交的数据放在请求的头部,一般在查询数据的时候我们会选择get方法发起请求
post请求:
a)提交一个method属性指定为post的表单发起的请求.
特点:
提交的数据放在请求体部,在向客户端提交数据的时候我们会选择使用post方式发起请求.
4.request/response对象中的方法
request.getContextPath();返回web的应用的根路径
request.getMethod();返回请求方式,get或post
request.getParameterMap();获得客户端提交的所有参数,包括参数名字和值
request.getParameterNames();获得客户端参数名字
request.getQueryString();返回URI后面所跟着的参数 如果是post方式提交返回null
request.setCharacterEncoding("UTF-8");设定客户端提交的内容的编码类型
5.servlet的url-pattern的写法(补充)
a)以"/"开始,后面跟着具体的内容
b)前通配(*) :如 *.do,*.action
c)后通配 如: /form/*,/basic/*
Servlet的生命周期(四个阶段)
1)装载和实例化阶段
创建者:web容器
创建情况:
(1)第一次访问的时候创建
<load-on-startup>num</load-on-startup>(num默认为-1)
当num<0时,第一次访问时创建servlet实例
(2)web应用被安装的时候创建(启动服务器)
当num >=0时,servlet在web应用被安装的时候创建
创建顺序:
num=0,最晚被创建
num>0,值越小越早被创建
2)初始化阶段
调用者:web容器
public void init(ServletConfig config){}
在GenericServlet中已经对有参的init方法作了实现
public abstract class GenericServlet implement Servlet{
private ServletConfig config;
public void init(ServletConfig config){
this.config=config;
this.init();
}
public void init(){
}
}
3)服务阶段
调用者:web容器
public void service(ServletRequest req,ServletResponse res){
}
在HttpServlet中已经对service方法作了实现
public abstract class HttpServlet extends GenericServlet{
public void service(ServletRequest req,ServletResponse res){
HttpServletRequest hReq=(HttpServletRequest)req;
HttpServletResponse hRes=(HttpServletResponse)res;
service(hReq,hRes);
}
public void service(HttpServletRequest hReq, HttpServletResponse hRes){
String method=hReq.getMethod();
if(method.equals("GET")){
doGet(hReq,hRes);
}else if(method.equals("POST")){
doPost(hReq,hRes);
}
}
//被子类覆盖
public void doGet(HttpServletRequest request, HttpServletResponse response) {
}
//被子类覆盖
public void doPost(HttpServletRequest request, HttpServletResponse response){
}
}
4)销毁阶段
调用者:web容器
public void destory{
}
注:init(),service(),destroy()称为servlet对象的生命周期回掉方法.
web应用的逻辑分层:
model(模型):
javabean,ejb..
view(显示):
servlet,jsp等
control(控制):
servlet,jsp....
请求的转发:
1)服务器内部跳转
请求转发器:RequestDispather
创建:
1.调用request对象的方法
指定的转发路径可以相对也可以是绝对的
相对路径:根据当前servlet的路径和转发的路径进行计算
绝对路径:就是转发的servlet的url-pattern
2.调用servletContext对象的方法
指定的路径必须是绝对路径
forward:
在转发请求之前首先调用response对象的resetBuffer方法,清空缓存.
include(包含):
将请求转发到其他servlet之前不会清空缓存
2)服务器外部重定向
RedirectServlet
通过服务器外部重顶向进行请求的转发 里面的路径可以相对可以绝对
绝对路径写法: 应用根路径+servlet的url-pattern
例:response.sendRedirect(request.getContextPath()+"/resource/view");
相对路径写法:例:response.sendRedirect("view");
服务器内部跳转和服务器外部重定向的比较
1)服务器内部跳转所有的servlet共享同一个请求,而服务器外部重定向,每个Servlet接受的请求都不相同
2)服务器内部跳转是在服务器实现的,而服务器外部重定向是由浏览器实现的
3)服务器内部跳转是通过request对象来完成的,而服务器外部重定向是通过response对象来完成的.
作业:
1.findUser.html
2.FindUserServlet:
1.负责接收客户端查找用户的请求
2.调用UserMange的findUser(String name)
3.将找到的User对象交给ViewUserServlet显示
ViewUserServlet
1.首先判段有没有需要显示的user,如果没有 提示
2.如果有,则将用户的详细信息进行显示
3.在UserManager中提供查询用户的方法.
Context ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup(jndiName);
通过jndi从目录服务器上查找DataSource对象
DataSource( 连接池);
06 02 2008 JNDI:java name directory interface
创建DataSource对象
1.通过new 的方式创建.
2.通过web服务器提供的配置的方式,来创建DataSource(这种方式创建的DataSource已经存放在目录服务器上).
1)将oracle的驱动包放入到tomcat的common/lib目录下
2)JNDI Name:jdbc/ds
数据库的URL Data Source URL:jdbc:oracle:thin:@192.168.1.220:1521:briupdb
数据库驱动名:JDBC Driver Class:oracle.jdbc.driver.OracleDriver
数据库用户名:User Name:jd0804
数据库用户密码:Password:jd0804
最大活动的连接数:Max. Active Connections:
Max. Idle Connections:(当连接池没有连接的时候,再创建的连接数)
使用DataSource
1.如果是通过new的方式创建的DataSource,可以直接调用他的getConnection方法来获得连接
2.通过jndi访问目录服务器,查找DataSource,调用方法获得连接.
ch05 状态持久。
为什么需要状态持久?
因为http协议是无状态的,客户端发起一个请求的时候,会跟服务器建立socket连接,一旦响应,就会关闭socket连接,所以为了让服务器端知道某个客户端的状态信息,我们需要将状态进行持久化
cookie
创建: name value
Cookie cookie = new Cookie("isLogin", "true");
cookie.setMaxAge(time);
response.addCookie(cookie);
当time<0,表示cookie保存在浏览器进程中,一旦浏览器进程结束,cookie就消失
当time=0,表示删除客户端同名的cookie
当time>0,表示cookie将在浏览器端保存起来,超过time后才会消失
获取:
Cookie[] cookies=request.getCookies();
session(结合cookie使用):创建和保存都在服务器端
由web服务器维护
HttpSession session = request.getSession();
或者
HttpSession session = request.getSession(boolean create);
当create==true时,这个方法的作用跟无参的getSession()方法作用一样
当create==false时,这个方法的作用是:根据客户端传递过来的session的id,寻找服务器端的session,如果找到返回,如果没有找到,返回null;
String ID=session.getId();
session.setAttribute("isLogin", true);
当对客户端作出响应的时候,会将session的ID包装成一个cookie对象(名字为JSESSIONID,值为session的id),返回给客户端
HttpSession消失的情况:
1)web应用停止
2)超时(上一次访问开始的时间到当前时间,如果这个时间超过了指定的超时时间,那么就认为是超时了)
可在web.xml中可配置session的超时时间:
3)调用session对象的invalidate方法
通过URL重写解决cookie禁用sesion不能访问的问题:
当客户端禁用cookie之后,无法通过cookie保存session的id我们可以通过URL重写来保存session的id
url;jsessionid=HJGKJWBDRUWRGW
String oldUrl = "sessionCheck";
String newUrl = response.encodeURL(oldUrl);// encodeUrl已不建议使用
三个范围(scope)
requestScope(ServletRequest):在多个servlet之间进行服务器内部跳转的时候,我们可以通过将数据放在request对象中进行数据的传递。
request.setAttribute(key,value);
Object value=request.getAttribute(key);
request.removeAttribute(key);
sessionScope(HttpSession):session中一般存放一些状态信息,或者在整个会话中经常要使用的数据(不建议存放过多数据(影响服务器效率))
session.setAttribute(key,value);
Object value=session.getAttribute(key);
session.removeAttribute(key);
applicationScope(ServletContext):ServletContext一般存放整个系统运行过程中,经常要使用的数据
ctx.setAttribute(key,value);
Object value=ctx.getAttribute(key);
ctx.removeAttribute(key);
过滤器:Filter
web应用的事件的处理机制
1.事件源
web容器
2.事件对象:由web容器创建
在web应用启动和停止的时候产生:ServletContextEvent 在javax.servlet 包中
会话开始和结束的时候产生:HttpSessionEvent 在javax.servlet.http 包中
请求开始和结束的时候:ServletRequestEvent
对application范围中的数据操作的时候产生:ServletContextAttributeEvent
对session范围内的数据进行操作的时候产生: HttpSessionBindingEvent
对requset范围中的数据操作进行操作的时候产生: ServletRequestAttributeEvent
3.监听器
处理ServletContextEvent事件对应ServletContextListener 接口(执行时间:web应用启动和停止)
处理HttpSessionEvent事件 HttpSessionListener 执行时间:session(会话)开始和结束
处理ServletRequestEvent 事件 ServletRequestListener 执行时间:请求的开始和结束
处理ServletContextAttributeEvent 事件 ServletContextAttributeListener
执行时间:加入数据,删除数据,替换数据
HttpSessionBindingEvent HttpSessionAttributeListener 执行时间:加入数据,删除数据,替换数据
ServletRequestAttributeEvent ServletRequestAttributeListener
执行时间:加入数据,删除数据,替换数据
注册监听器:在web.xml中描述就可以完成监听器的工作.
Servlet
C/S--->client/service
优点:
1)运行效率较高
2)交互性强适合局域网,
缺点:升级维护困难
B/S-->WEB应用 browser浏览器 Service
优点:无需关心客户端,升级维护,只需操作服务器即可.比较方便.
缺点:
1)交互性是请求/响应式,需要通过网络进行交互,效率相对c/s架构的软件来说较低.
2)要开发交互性较强的界面比较困难.
CGI:最早开发b/s架构的一门技术
从CGI分出 1)微软的ASP--->ASP.NET
2)JAVA的Servlet--->jsp
开发技术:
静态网页技术:
HTML,JS,CSS
动态网页技术:(动态说的是数据动态)
CGI,ASP,ASP.net,servlet,php,jsp等
url:
http://192.168.1.250:8888/poll/login.jsp
协议://地址(ip-->域名):端口(如果是80,可以省略)/web应用名/资源名
web服务器: (微软的)IIS:
(apache的)tomcat(开源的):等..
servlet:
1)属于j2ee的其中一个技术,是一个规范
2)servlet是一个web组件(包含servlet类和他的描述信息) 组件如java bean 可复用的
3)servlet运行的时候就是一个java对象(创建.调用.管理由web服务器(web容器)完成).web容器是web服务器的线程 tomcat的web容器是CATALINA
web 容器调用servlet对象的方法
首先由web容器创建两个对象:
1.HttpServletRequest:
包含了客户端提交的所以信息,在servlet中 ,可以通过这个对象获得客户端传递过来的数据.
2.HttpServletResponse:
通过这个对象可以向客户端返回数据
public void service(ServletRequest req,ServletResponse res){
}
web应用的目录结构:
应用名:(web应用的根目录的名字)
WEB-INF(必须):浏览器不能直接访问
classes(存放.class文件)
lib(存放第三方的.jar文件)
web.xml(描述servlet,包括类名和访问标识)
html/first.html
js/my.js
css/my.css
jsp/first.jsp
META-INF
tomcat服务器的目录结构:
bin:存放一些可执行文件:比如startup.sh,shutdown.sh
common:存放tomcat服务器和所以web应用都可以使用的类和jar包
conf:存放tomcat服务器使用的一些配置文件.比如 service.xml中可改端口号
logs:存放tomcat服务器和web应用输出的日志信息的文件
server:存放一些只能由tomcat服务器使用的类和jar包,以及tomcat自带的web应用
shared:存放一些只能由web应用使用的类和jar包
temp:存放一些临时文件
*webapps:用来部署web应用
work:存放jsp文件被翻译和编译以后的.java和.class文件.
web工程(IDE):通过工程可创建web应用
web应用:(成品软件)
javax.servlet.Servlet(接口)
javax.servlet.GenericServlet(抽象类)
javax.servlet.http.HttpServlet(抽象类)(建议使用)
Service-->doGet/doPost(根据客户端请求方式调用,不是非要同时调用)
tomcat由于已经启动无法启动 用命令 ps -ef|grep tomcat 在kill -9 进程号
form表单处理:
1.提供表单
a)提供一个html页面包含一个form表单
b)提供一个servlet返回一个form表单
form表单action属性指定的路径
a)相对路径
register
b)绝对路径
/servlet/form/register
2.中文乱码问题
a)get方式提交
解决办法,在服务器中设置客户端提交请求的URI的编码类型
在server.xml中 <Connector 加 URIEncoding="UTF-8"
b)post方式提交
在server中获得客户端提交的参数之前,调用req对象的setCharacterEncoding方法设定编码类型。
c)响应
在server中获得输出流之前,调用response对象的的setCharacterEncoding方法设定编码类型。
3.method="get"和method="post" (form表单的两种提交方式比较)
get请求:
a)直接在浏览器地址栏输入请求的URL发起的请求:
b)点击一个超连接发起的请求
c)提交一个form表单但form表单的method不指定或指定get的时候
特点:
提交的数据放在请求的头部,一般在查询数据的时候我们会选择get方法发起请求
post请求:
a)提交一个method属性指定为post的表单发起的请求.
特点:
提交的数据放在请求体部,在向客户端提交数据的时候我们会选择使用post方式发起请求.
4.request/response对象中的方法
request.getContextPath();返回web的应用的根路径
request.getMethod();返回请求方式,get或post
request.getParameterMap();获得客户端提交的所有参数,包括参数名字和值
request.getParameterNames();获得客户端参数名字
request.getQueryString();返回URI后面所跟着的参数 如果是post方式提交返回null
request.setCharacterEncoding("UTF-8");设定客户端提交的内容的编码类型
5.servlet的url-pattern的写法(补充)
a)以"/"开始,后面跟着具体的内容
b)前通配(*) :如 *.do,*.action
c)后通配 如: /form/*,/basic/*
Servlet的生命周期(四个阶段)
1)装载和实例化阶段
创建者:web容器
创建情况:
(1)第一次访问的时候创建
<load-on-startup>num</load-on-startup>(num默认为-1)
当num<0时,第一次访问时创建servlet实例
(2)web应用被安装的时候创建(启动服务器)
当num >=0时,servlet在web应用被安装的时候创建
创建顺序:
num=0,最晚被创建
num>0,值越小越早被创建
2)初始化阶段
调用者:web容器
public void init(ServletConfig config){}
在GenericServlet中已经对有参的init方法作了实现
public abstract class GenericServlet implement Servlet{
private ServletConfig config;
public void init(ServletConfig config){
this.config=config;
this.init();
}
public void init(){
}
}
3)服务阶段
调用者:web容器
public void service(ServletRequest req,ServletResponse res){
}
在HttpServlet中已经对service方法作了实现
public abstract class HttpServlet extends GenericServlet{
public void service(ServletRequest req,ServletResponse res){
HttpServletRequest hReq=(HttpServletRequest)req;
HttpServletResponse hRes=(HttpServletResponse)res;
service(hReq,hRes);
}
public void service(HttpServletRequest hReq, HttpServletResponse hRes){
String method=hReq.getMethod();
if(method.equals("GET")){
doGet(hReq,hRes);
}else if(method.equals("POST")){
doPost(hReq,hRes);
}
}
//被子类覆盖
public void doGet(HttpServletRequest request, HttpServletResponse response) {
}
//被子类覆盖
public void doPost(HttpServletRequest request, HttpServletResponse response){
}
}
4)销毁阶段
调用者:web容器
public void destory{
}
注:init(),service(),destroy()称为servlet对象的生命周期回掉方法.
web应用的逻辑分层:
model(模型):
javabean,ejb..
view(显示):
servlet,jsp等
control(控制):
servlet,jsp....
请求的转发:
1)服务器内部跳转
请求转发器:RequestDispather
创建:
1.调用request对象的方法
指定的转发路径可以相对也可以是绝对的
相对路径:根据当前servlet的路径和转发的路径进行计算
绝对路径:就是转发的servlet的url-pattern
2.调用servletContext对象的方法
指定的路径必须是绝对路径
forward:
在转发请求之前首先调用response对象的resetBuffer方法,清空缓存.
include(包含):
将请求转发到其他servlet之前不会清空缓存
2)服务器外部重定向
RedirectServlet
通过服务器外部重顶向进行请求的转发 里面的路径可以相对可以绝对
绝对路径写法: 应用根路径+servlet的url-pattern
例:response.sendRedirect(request.getContextPath()+"/resource/view");
相对路径写法:例:response.sendRedirect("view");
服务器内部跳转和服务器外部重定向的比较
1)服务器内部跳转所有的servlet共享同一个请求,而服务器外部重定向,每个Servlet接受的请求都不相同
2)服务器内部跳转是在服务器实现的,而服务器外部重定向是由浏览器实现的
3)服务器内部跳转是通过request对象来完成的,而服务器外部重定向是通过response对象来完成的.
作业:
1.findUser.html
2.FindUserServlet:
1.负责接收客户端查找用户的请求
2.调用UserMange的findUser(String name)
3.将找到的User对象交给ViewUserServlet显示
ViewUserServlet
1.首先判段有没有需要显示的user,如果没有 提示
2.如果有,则将用户的详细信息进行显示
3.在UserManager中提供查询用户的方法.
Context ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup(jndiName);
通过jndi从目录服务器上查找DataSource对象
DataSource( 连接池);
06 02 2008 JNDI:java name directory interface
创建DataSource对象
1.通过new 的方式创建.
2.通过web服务器提供的配置的方式,来创建DataSource(这种方式创建的DataSource已经存放在目录服务器上).
1)将oracle的驱动包放入到tomcat的common/lib目录下
2)JNDI Name:jdbc/ds
数据库的URL Data Source URL:jdbc:oracle:thin:@192.168.1.220:1521:briupdb
数据库驱动名:JDBC Driver Class:oracle.jdbc.driver.OracleDriver
数据库用户名:User Name:jd0804
数据库用户密码:Password:jd0804
最大活动的连接数:Max. Active Connections:
Max. Idle Connections:(当连接池没有连接的时候,再创建的连接数)
使用DataSource
1.如果是通过new的方式创建的DataSource,可以直接调用他的getConnection方法来获得连接
2.通过jndi访问目录服务器,查找DataSource,调用方法获得连接.
ch05 状态持久。
为什么需要状态持久?
因为http协议是无状态的,客户端发起一个请求的时候,会跟服务器建立socket连接,一旦响应,就会关闭socket连接,所以为了让服务器端知道某个客户端的状态信息,我们需要将状态进行持久化
cookie
创建: name value
Cookie cookie = new Cookie("isLogin", "true");
cookie.setMaxAge(time);
response.addCookie(cookie);
当time<0,表示cookie保存在浏览器进程中,一旦浏览器进程结束,cookie就消失
当time=0,表示删除客户端同名的cookie
当time>0,表示cookie将在浏览器端保存起来,超过time后才会消失
获取:
Cookie[] cookies=request.getCookies();
session(结合cookie使用):创建和保存都在服务器端
由web服务器维护
HttpSession session = request.getSession();
或者
HttpSession session = request.getSession(boolean create);
当create==true时,这个方法的作用跟无参的getSession()方法作用一样
当create==false时,这个方法的作用是:根据客户端传递过来的session的id,寻找服务器端的session,如果找到返回,如果没有找到,返回null;
String ID=session.getId();
session.setAttribute("isLogin", true);
当对客户端作出响应的时候,会将session的ID包装成一个cookie对象(名字为JSESSIONID,值为session的id),返回给客户端
HttpSession消失的情况:
1)web应用停止
2)超时(上一次访问开始的时间到当前时间,如果这个时间超过了指定的超时时间,那么就认为是超时了)
可在web.xml中可配置session的超时时间:
3)调用session对象的invalidate方法
通过URL重写解决cookie禁用sesion不能访问的问题:
当客户端禁用cookie之后,无法通过cookie保存session的id我们可以通过URL重写来保存session的id
url;jsessionid=HJGKJWBDRUWRGW
String oldUrl = "sessionCheck";
String newUrl = response.encodeURL(oldUrl);// encodeUrl已不建议使用
三个范围(scope)
requestScope(ServletRequest):在多个servlet之间进行服务器内部跳转的时候,我们可以通过将数据放在request对象中进行数据的传递。
request.setAttribute(key,value);
Object value=request.getAttribute(key);
request.removeAttribute(key);
sessionScope(HttpSession):session中一般存放一些状态信息,或者在整个会话中经常要使用的数据(不建议存放过多数据(影响服务器效率))
session.setAttribute(key,value);
Object value=session.getAttribute(key);
session.removeAttribute(key);
applicationScope(ServletContext):ServletContext一般存放整个系统运行过程中,经常要使用的数据
ctx.setAttribute(key,value);
Object value=ctx.getAttribute(key);
ctx.removeAttribute(key);
过滤器:Filter
web应用的事件的处理机制
1.事件源
web容器
2.事件对象:由web容器创建
在web应用启动和停止的时候产生:ServletContextEvent 在javax.servlet 包中
会话开始和结束的时候产生:HttpSessionEvent 在javax.servlet.http 包中
请求开始和结束的时候:ServletRequestEvent
对application范围中的数据操作的时候产生:ServletContextAttributeEvent
对session范围内的数据进行操作的时候产生: HttpSessionBindingEvent
对requset范围中的数据操作进行操作的时候产生: ServletRequestAttributeEvent
3.监听器
处理ServletContextEvent事件对应ServletContextListener 接口(执行时间:web应用启动和停止)
处理HttpSessionEvent事件 HttpSessionListener 执行时间:session(会话)开始和结束
处理ServletRequestEvent 事件 ServletRequestListener 执行时间:请求的开始和结束
处理ServletContextAttributeEvent 事件 ServletContextAttributeListener
执行时间:加入数据,删除数据,替换数据
HttpSessionBindingEvent HttpSessionAttributeListener 执行时间:加入数据,删除数据,替换数据
ServletRequestAttributeEvent ServletRequestAttributeListener
执行时间:加入数据,删除数据,替换数据
注册监听器:在web.xml中描述就可以完成监听器的工作.
相关推荐
jsp servlet开发总结文档 jsp Servlet总结jsp Servlet总结jsp Servlet总结
servlet 总结 一、HTML 基础 HTML(HyperText Markup Language)是用于创建网页的标记语言。它由一系列的元素组成,每个元素都有其特定的功能。HTML 的基本结构由 `<html>`、`<head>` 和 `<body>` 组成,分别对应...
- **请求转发**:在`Servlet总结02——请求转发.docx`中详细介绍了,请求转发是服务器端内部的跳转,使用`RequestDispatcher`的`forward()`方法,转发后,URL不会改变,多个资源可以共享同一个请求对象。...
servlet总结 都是基础和重要的知识点 大学软件专业的上课资料 想巩固基础知识请进
Tomcat开发jsp与servlet总结参考.pdf
总结来说,开发JSP与Servlet的过程涉及多个方面,包括编写代码、配置部署描述文件、编译、部署和测试,最终通过服务器的配置来访问Web应用。Tomcat作为中间件,提供了运行这些应用所需的环境和框架支持。在开发过程...
【Servlet 概述】 Servlet 是 JavaEE(Java Platform, Enterprise Edition)中的核心组件,主要用于处理 Web 应用中的服务器端任务。它与 HTTP 协议紧密相关,能够处理 HTTP 请求的各个方面,包括接收请求、处理...
### Servlet基础知识总结 #### 一、Servlet简介 Servlet是一种服务器端的小程序,是Java平台上的一个重要的技术之一,主要用于处理客户端的HTTP请求并生成动态网页。Servlet是在服务器端运行的,能够提供各种服务...
Java web 开发,servlet ppt 教学用,自学用
JSP & Servlet 技术总结 JSP技术总结 2 1. JSP页面元素构成 2 2. JSP脚本元素 2 3. 注释 2 4. JSP指令 2 5. JSP动作元素 3 6. JSP内置对象 5 7. JSP内置对象及其作用 5 8. 获取页面参数 5 9. 重定向...
自己总结的servlet与jsp部分 希望对大家有所帮助
黑马 程序员-方立勋老师-javaWeb开发-03-Web开发入门和 04-Servlet开发和ServletConfig和ServletContex对象 知识总结记录
### JavaWeb-Servlet学习与总结 #### 一、Servlet简介 Servlet是一种运行在服务器端的小程序,主要用于处理客户端发送的HTTP请求并返回响应结果。它作为Java Web开发的基础技术之一,广泛应用于各种Web应用程序中...
jsp servlet面试题总结 jsp 中九大内置对象为: 1. request 请求对象,类型 javax.servlet.ServletRequest,作用域 Request 2. response 响应对象,类型 javax.servlet.SrvletResponse,作用域 Page 3. ...
总结来说,`servlet.jar.zip`是用于开发基于Java Servlet的web应用的重要工具,其中的`servlet.jar`提供了Servlet API,使得开发者能够编写与HTTP服务器交互的Java代码,而`license.txt`则需仔细阅读,遵循其中的...
总结一下,Java EE的Servlet API是Web开发的关键组件,它定义了处理HTTP请求的规范,使得开发者能够用Java语言构建动态Web应用。通过`servlet-api.jar`库,我们可以实现Servlet和Filter,参与到HTTP请求的生命周期中...