Servlet总结
更新时间:2024-07-03 01:12:01 阅读量: 综合文库 文档下载
- servlet总结推荐度:
- 相关推荐
1、什么是Servlet?
Servlet是服务器端的程序,是运行在WEB服务器或者应用服务器上的JAVA程序。是基于Http协议的,用于处理和响应客户端请求,可以将Servlet看作是一个含有HTML的JAVA程序。
3、认识什么是Web容器?
是用来管理组件行为的一个集合工具,组件的行为包括与外部环境的交互、组件的生命周期、
组件之间的合作依赖关系等等。
4、什么是组件?
本意是指可以重用的代码单元,一般代表着一个或者一组可以独立出来的功能模块。
特点是分别会打包成.war,.jar,.jar,.ear,每个组件由特定格式的xml描述符文件进行描述,
而且服务器端的组件都需要被部署到应用服务器上面才能够被使用。 如,Servlet-api.jar
5、Tomcat的配置、启动、测试
配置:2个主要的环境变量:
JAVA_HOME 指向JDK的安装目录
CATALINA_HOME 指向TOMCAT的安装目录
启动:控制台进入TOMCAT的安装目录下的bin目录,输入catalina.bat run。 测试:打开浏览器,输入http://127.0.0.1:8080/,
可以访问到tomcat的主页就表示启动成功。
6、Web应用框架
用户界面 Web服务器,中间件业务逻辑 后台存储系统:数据库 7、Web应用结构 主要分为两部分:
(1) WEB-INF目录,其中包含不能被客户访问的专用Web应用程序,包括Servlet类文件、部署描述符、外部类库等文件
(2) WEB-INF目录之外的文件都被看作是公共的,它们可以被客户端访问,包括HTML页面、JSP页面、和图像等文件
8、Servlet开发步骤 (1)编写Servlet类。
也是普通的Java类,该类实现Servlet接口、继承HttpServlet类、或继承间接实现了Servlet接口的类,简称为Servlet类。
(2)若实现Servlet接口,则Servlet类覆盖Service()方法;
若继承HttpServlet类,则Servlet类应重写doGet()方法或doPost()方法。 在Service(),doGet(),doPost()方法实现与客户交互的界面信息。 (3)配置Web.xml文件。
(4)重启Tomcat服务器
9、Servlet工作流程
10、Servlet生命周期
11、Servlet接口、HttpServlet 类
1、Servlet接口的基本目标是提供生命期方法init()、service()和destroy()方法。 (1)void init(ServletConfit config)
在servlet被载入后和实施服务前由servlet引擎进行一次性调用。
(2)void service(ServletRequest request, ServletResponse response) 处理request对象中描述的请求,使用response对象返回请求结果 (3)void destory()
当servlet将要卸载时由servlet引擎调用。
2、HttpServlet 类通过调用指定到HTTP请求方法的方法实现service()。
(1)void doGet(HttpServletRequest request,HttpServletResponse response) 由servlet引擎调用用处理一个HTTP GET请求。
输入参数、HTTP头标和输入可从request对象、response头标和response对象
的输出流中获得。
(2)void doPost(HttpServletRequest request,HttpServletResponse response)
由servlet引擎调用用处理一个HTTP POST请求。 (3)Service(Request request,Response response)
此方法实际上将请求导向doGet()、doPost(),不应该覆盖此方法。
12、ServletRequest接口、HttpServletRequest接口
1、ServletRequest接口封装了客户端请求的细节。它与协议无关。
ServletRequest主要处理: 1.找到客户端的主机名和IP地址 2.检索请求参数 3.取得和设置属性 4.取得输入和输出流
2、HttpServletRequest类(HTTP协议)
HttpServletRequest类主要处理: 1.读取和写入HTTP头标 2.取得和设置cookies 3.取得路径信息
4.标识HTTP会话。
13、ServletResponse接口、HttpServletResponse接口
1、ServletResponse对象将一个servlet生成的结果传到发出请求的客户端。
ServletResponse操作主要是作为输出流及其内容类型和长度的包容器,它由servlet引擎创建.
2、HttpServletResponse加入表示状态码、状态信息和响应头标的方法,它还负责对URL
中写入一Web页面的HTTP会话ID进行解码。
14、ServletContext接口
简称“Servlet上下文”。
Web应用中servlet可以使用servlet上下文得到:
1.在调用期间保存和检索属性的功能,并与其他servlet共享这些属性。 2.读取Web应用中文件内容和其他静态资源的功能。 3.互相发送请求的方式。
4.记录错误和信息化消息的功能。
15、HttpSession接口
HttpSession类似于哈希表的接口,它提供了setAttribute ()和getAttribute()方法存储和 检索对象。HttpSession提供了一个会话ID关键字,一个参与会话行为的客户端在同一 会话的请求中存储和返回它。servlet引擎查找适当的会话对象,并使之对当前请求可用。
16、客户的Get和Post请求
Get请求的参数会显示到地址栏上,而Post不会
17、Servlet的多线程安全控制
servlet中需要同步的:成员变量、文件、静态变量、数据库连接。
(1)对变量和方法定义适当的访问方式, 例如单纯取值操作不会有多线程安全问题;
(2)同步化所有访问重要数据的实例变量; 多线程下,如果操作的是一个变量,且兼有读
写操作,就要考虑加上同步,但同步不能乱加,否则会造成死锁问题。 (3)给共享资源加上同步代码块(Synchronize )
18、Form表单的解析
客户端:form元素的属性
(1)action: 用来指定要处理form数据的Servlet的URL。 (2)method: 指定数据传送给HTTP服务器的方法. 服务器端:解析表单信息
(1)req.getParameter(String name): 返回表单中参数名(区分大小写)对应的参数值;
(2)req.getParameterNames(),可以获得一个迭代器Enumeration,通过这个迭代器,来获得
form表单中参数的名字.
(3)req.getParameterValues(String name) 返回表单中参数名(区分大小写)对应的字符串
数组
19、页面转发
(1)forward:上一页面请求信息会传递到下一页面,即请求对象包含的信息不变。 例:ServletContext application = getServletContext();
RequestDispatcher dispatcher = application.getRequestDispatcher(nextPage); dispatcher.forward(request, response);
(2)redirect:上一页请求不会传递到下一页面,即重开一新请求.
例:response.sendRedirect(nextPage);
19、MVC编程模型
20、Servlet中使用JNDI数据源访问数据库 步骤:
(1)、在Web工程目录下新建META-INF目录,其中放一个context.xml文件,内容是:
type=\ //绑定资源的类型 maxActive=\ //连接池最大连接数 maxIdle=\ //最大空闲连接数 maxWait=\ //请求数据源等待时间,-1代表无限等待 username=\password=\ driverClassName=\ url=\>
type=\ //绑定资源的类型 maxActive=\ //连接池最大连接数 maxIdle=\ //最大空闲连接数 maxWait=\ //请求数据源等待时间,-1代表无限等待 username=\password=\ driverClassName=\ url=\>
(2)、取得数据库连接
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(\);
Connect con = ds.getConnection();
21、会话管理。为什么使用Session.
(1)、从同一客户打开浏览器连接到服务再到客户关闭浏览器可称为一次会话 (2)、一个客户向服务器发出请求然后服务器返回响应,连接就被关闭了。在服务器端不保
留连接的有关信息.因此当下一次连接建立时,服务器已没有以前连接的信息了,无法判断这一次连接和以前的连接是不是属于同一客户发出的。在实际应用中,客户进行一个事务性的操作可能需要对服务器进行好几次连接,这时维护前几次连接的状态就非常重要。
(3)、服务器必须能够区分不同的客户,而且还要有为每一个客户存储数据的方法。
22、会话管理。实现Session的三种方式
1、Cookie
(1)浏览器请求,服务器创建Cookie对象,设置Cookie名称、值和最大时效
Cookie userName = new Cookie(\, \); userName.setMaxAge(60 * 60 * 24 * 365);
Cookie password = new Cookie(\, \); (2)将Cookie对象使用HTTP响应报头返回给客户端
response.addCookie(userName);
response.addCookie(password);
(3)从客户端读取cookie信息。取得cookie数组,遍历数组. Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) { String username;
if (cookies[i].getName.equals(“username”)) String username = cookies[i].getValue(); //到数据库查询是否为该用户。 }
}
2、HttpSession
(1)获得当前请求的Session对象,调用getSession方法
HttpSession session = request.getSession();
(2)查找与会话相关联的信息,调用getAttribute方法,并转为相对应的类型。 Counter counter = (Counter) session.getAttribute(\); (3)查看从session得到的结果。
如果为null,则把new一新的对象调用setAtrribute方法存放入session中 如果不为null,则可直接对结果(对象)进行操作;
if (counter == null) {
counter = new Counter(1);
session.setAttribute(\, counter); } else {
counter.add(); }
3、URL重写
当浏览器不支持cookie或在用户禁用cookie的情况下,当客户第一次请求服务器时服
务器在返回资源的路径后添加多一个额外数据,即Jsessionid = xxx,当用户再次发送请求时把这个Jsession数据一同发送给服务器,服务器再根据这个Jsession值即可与特定的用户相关联,这称为“URL重写”
String pageURL = \; pageURL = response.encodeURL(pageURL);
这样处理后,pageURL = /serv-guides/state/session;jsession=xxxxxxxxx;
23、过滤器
过滤器是一些Web应用程序组件,可以绑定到一个Web应用程序中。但是与其他Web应用程序组件不同的是,过滤器是\链\在容器的处理过程中的。这就意味着它们会在servlet处理器之前访问一个进入的请求,并且在外发的响应信息返回到客户前访问这些响应信息。这种访问使得过滤器可以检查并修改请求和响应的内容。
24、过滤器编程,示例一:非法用户登陆
(1)继承于HttpFilter类,并覆盖doFilter()方法
public class SessionFilter extends HttpFilter { @Override
public void doFilter(HttpServletRequest request,
HttpServletResponse response, FilterChain chain) throws IOException, ServletException { //不符合条件的,响应客户转向指定的页面
response.sendRedirect(\); //符合条件的,转向客户所要请求页面 chain.doFilter(request, response);
}
(2)web.xml配置
25、过滤器编程,示例二:字符编码过滤
(1)继承于HttpFilter类,并覆盖doFilter()方法
public class CharacterEncodingFilter extends HttpFilter {
@Override
public void doFilter(HttpServletRequest request,
HttpServletResponse response, FilterChain chain) throws IOException, ServletException { String charset = getInitParameter(\); if (charset == null) { charset = \; }
//设计请求字符编码
request.setCharacterEncoding(charset); //转向客户所要请求页面
chain.doFilter(request, response); } }
(2)web.xml配置
26、监听器
(1)ServletRequestListener
(2)HttpSessionListener (3)ServletContextListener
a. 这三个监听器接口,分别监听Servlet中3种对象(ServletContext、HttpSession
及ServletRequest)的创建和销毁。
b. 这三个接口中分别有监听该对象创建和销毁事件的方法
27、ServletContext事件监听器
1、对于应用程序而言得管理资源或保存状态 2、有二种类型的事件监听器:
(1)ServletContextListener(以下是该监听器的方法) contextDestroyed(ServletContextEvent sce) contextInitialized(ServletContextEvent sce)
(2)ServletContextAttributeListener(以下是该监听器的方法) attributeAdded(ServletContextAttributeEvent scab) attributeRemoved(ServletContextAttributeEvent scab) attributeReplaced(ServletContextAttributeEvent scab)
28、HttpSession事件监听器
1、管理从同一个客户端或用户向一个Web应用程序发出的一系列请求相关的 状态或资源;
2、有二种类型的事件监听器:
(1)HttpSessionListener(以下是该监听器的方法) sessionCreated(HttpSessionEvent se) sessionDestroyed(HttpSessionEvent se)
(2)HttpSessionAttributeListener(以下是该监听器的方法) attributeAdded(HttpSessionBindingEvent se) attributeRemoved(HttpSessionBindingEvent se) attributeReplaced(HttpSessionBindingEvent se)
29、ServletRequest事件监听器
1、管理整个request生命周期的状态 2、有二种类型的事件监听器:
(1)ServletRequestListener(以下是该监听器的方法) requestDestroyed(ServletRequestEvent sre) requestInitialized(ServletRequestEvent sre)
(2)ServletRequestAttributeListener(以下是该监听器的方法) attributeAdded(ServletRequestAttributeEvent srae) attributeRemoved(ServletRequestAttributeEvent srae) attributeReplaced(ServletRequestAttributeEvent srae)
30、监听器编程
1、监听器类,实现ServletRequestListener接口,覆盖两个方法。
public class IpLogListener implements ServletRequestListener {
public void requestDestroyed(ServletRequestEvent sre) { }
public void requestInitialized(ServletRequestEvent sre) { ServletRequest request = sre.getServletRequest(); System.out.println(request.getRemoteAddr()); } }
2、web.xml配置
正在阅读:
Servlet总结07-03
污水处理283个为什么(绝对不错)05-06
ASTM美国标准 管路及安装用08-09
同等学力证明03-31
法国著名服装设计师介绍04-21
植物研究报告作文450字06-15
交通工程学第3次作业09-15
“一家哭何如一路哭”———范仲淹的名言与“庆历新政”08-08
橡皮的自述作文450字06-26
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- Servlet
- 总结
- 中国西部安全(应急)产业基地发展战略研究
- 三级安全教育制度
- 要是你按我的话做……
- 青岛版五年级科学下册全册教学设计
- 关注学生学习全过程
- 第五章 电流和电路单元测试题15
- 中共广西华锡集团股份有限公司委员会2012年工作总结
- 陈巷中心中学2016年初三体育 模拟考试工作实施细则
- 河南茂源生态农业示范园建设项目可行性研究报告
- 综合布线系统施工组织计划
- 2017年国家人力资源职业资格认证模拟考试题5
- 简述出口贫困化增长
- 2012年公务员公文写作练习题
- 苏教版五年级上册语文第二单元试卷
- 单位内部审计工作先进个人事迹材料(1)
- 陕西省西工大附中2008届第三次模拟(数学理)
- 苏教版小学数学毕业班模拟试卷及答案
- 垦利县科学技术局创建和谐单位活动实施方案
- 人员素质测评在企业人力资源优化中的运用探析
- 《PLC技术及工程应用》课程单元教学设计