- 浏览: 56380 次
- 来自: 北京
最新评论
-
泛泛evil:
总结的很好,谢谢分享
JavaScript -
wanxkl:
哇!总结的太好了。。凤哥哥,你好强大啊。。请问您跟凤姐什么关系 ...
css应用
Servlet总结
1. Serlvet是一个特殊的类 继承了httpServlet的一个类
2. 每个servlet都要在web-inf/web.xml文件中配置相应的信息
<servlet>
<servlet-name>first</servlet-name>
<servlet-class>com.puckasoft.servlet.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>first</servlet-name>
<url-pattern>/firstServlet</url-pattern>
</servlet-mapping>
其中servlet-mapping中的url-pattern对应的属性是指浏览器访问的url 必须要加上/,这个/代表浏览器访问该项目的根目录 firstServlet这个url是通过浏览器来访问该serlvet这个类的方式 其中servlet-name起到桥梁的作用 让浏览器通过url可以找到对应的class
注意:(1)url-pattern必须加上/
(2)每个servlet-name在web.xml文件中是唯一的 所以建议这个名字起成和对应的类名一样
(3)sevlet-class的对应的类的路径一定要确认无误
3. Servlet是一种可以在Servlet容器中运行的组件,那么理所当然就应该有一个从创建到销毁的过程,这个过程我们可以称之为Servlet生命周期。Servlet的生命周期可以分为加载、实例化、初始化、处理客户请求和卸载五个阶段,体现在方法上主要是init()、service()和destroy()三个方法。生命周期的具体说明如下:(1)Servlet容器完成加载Servlet类和实例化一个Servlet对象init()方法完成初始化工作,(2)该方法由Servlet容器调用完成service()方法处理客户端请求,并返回响应结果(3)destroy()方法在Servlet容器卸载Servlet之前被调用,释放一些资源
4. 加载并初始化Servlet在前面已经说过Servlet容器完成加载和实例化Servlet的工作,该工作既可以在容器启动时完成,也可以在容器收到请求时完成,或者是两者之间的某个时间启动。之后需要初始化Servlet,即读取配置信息、读取初始化参数等,这些基本上在整个生命周期中只需要执行一次。关于init()方法已经在积累GenericServlet中提供缺省实现,如果不需特殊处理规则没有必要再进行定义,否则要重写。
5. httpservletRequest对象保存了了客户端的信息
以下是获取请求的基本信息
getMethod方法返回客户端请求方式
getRequestURI返回端口后参数之前那部分内容, 且为真实的资源名,而不一定与地址栏中相同
getQueryString 返回资源路径?号后面的所有内容
getScheme返回协议名称。
getContextPath返回请求url所属的web应用程序的路径
getRequestURL返回真实的资源路径,不一定与地址栏相同,但不包括参数部分,且返回类型StringBuffer
getRemoteAddr 返回客户端的ip地址
getRemotePort 返回客户端的发出请求使用的端口
getLocalAddr 返回服务器上接受当前请求的网络接口的ip地址
getLocalPort 返回服务器上接受当前请求的网络接口的端口号
以下是获取请求头信息
getHeader(headName)方法(该方法是通过headName的属性名取获取值 如忘记headName的属性名 可以用getHeaderNames()方法
获取所有的属性名再选择有用的)
注意:(1)referer属性: 包含一个URL,用户从该URL代表的页面出发访问当前请求的页面(即保存上次访问的路径url)
(2)accept-language属性:返回的是用户的语言类型 实例见google
(3)User-Agent属性:返回的是用户的浏览器版本信息
以下是获取请求的参数
Request.getParamter(“name属性”)
通过name属性值来获取该属性对应的value值
注意通常情况下如果为文本形式要加上.trim()去掉首尾的空格 但一定要注意name属性值一定要正确 否则会出现nullpointException的异常
并且如果不是文本框形式 比如说如果是单选按钮 这里不要加.trim()
Request.getParameterValues()获取的复选框的value值
6个重要对象
ServletConfig:用于处理在配置文件web.xml中,每个servlet初始化的参数。
<servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> </servlet> |
取得:ServletConfig sc = this.getServletConfig();
方法:sc.getInitParameter("aaa")à返回名为aaa的参数的值
Sc.getServletName()à取得所属servlet的名字
sc.getInitParameterNames()à返回所有参数名的枚举
Enumeration e = sc.getInitParameterNames(); while(e.hasMoreElements()){ String paramName = (String) e.nextElement(); System.out.println(paramName+"----"+sc.getInitParameter(paramName)); } |
ServletContext: 所有的servlet都共享同一个ServketContext对象,又称为Application对象。在web.xml中可以声明“全局参数”。
<context-param> <param-name>ccc</param-name> <param-value>CCC</param-value> </context-param> <context-param> <param-name>ddd</param-name> <param-value>DDD</param-value> </context-param> |
取得:ServletContext context = this.getServletContext();
方法:context. getInitParameter(“aaa”)和context. getInitParameterNames()和ServletConfig的类似。
context.setAttribute(“a”,”AAA”)设置属性。
context.getAttribute(“a”)取得属性。
context.removeAttribute(“a”)删除属性。
context.getRealPath(“1.jsp”)用于获取文件绝对路径。
context.getResoursePaths(“/picture”)用于获取目录下的所有目录和文件的路径,返回Set类型。
context.getResourceAsStream("/1.properties")用于装载资源文件
读取 InputStream is = context.getResourceAsStream("/1.properties"); Properties p = new Properties(); p.load(is); resp.getWriter().println(p.getProperty("name")); is.close(); |
1.properties |
name=gjw sex=male |
修改 FileOutputStream fos = new FileOutputStream(new File(context.getRealPath("/1.properties"))); p.setProperty("sex", "famale"); p.store(fos, null); fos.close(); |
HttpServletRequest::客户端的请求信息被封装在这个对象中。
获取请求基本信息
request.getMethod() |
GET |
请求方式 |
request.getRequestURI() |
/jsp/ReqTest |
端口到?之间 |
request.getQueryString() |
uname=gjw |
?后 |
request.getScheme() |
http |
协议 |
request.getContextPath() |
/jsp |
Web应用目录 |
request.getRequestURL() |
http://localhost/jsp/ReqTest |
除了?后的 |
获取网络连接信息
request.getRemoteAddr() |
客户端IP |
request.getRemotePort() |
客户端端口 |
request.getLocalAddr() |
服务器端IP |
request.getLocalPort() |
服务器端端口 |
获取请求头信息
request.getHeader(“content-length”)和request.getHeaderNames()与ServletConfig的操作相似。
request.getContentType()和request.getContentLength()在请求方式为Post时才有用,上下文的类型和参数长度,他们和上面的getHeader功能一样,只不过因为常用才特意声明为方法。
获取请求参数
String |
getParameter(“uname”) |
得到表单域的值 |
String[] |
getParameterValues(“aihao”) |
复选框的值 |
Enumeration |
getParameterNames() |
|
利用请求域属性传值
request.setAttribute(“a”,”AAA”) |
设置属性 |
request.getAttribute(“a”) |
取得属性 |
request.removeAttribute(“a”) |
删除属性 |
request.getAttributeNames() |
返回枚举,对所有属性遍历处理 |
HttpServletResponse:服务器端的响应信息被封装在这个类中。
构建响应头消息
addHeader(name,value)响应头是消息可写。
三种设置编码的方式
response.setContentType("text/html;charset=gbk");
response.setHeader("content-type", "text/html;charset=gbk");
response.setCharacterEncoding("gbk");
response.addHeader("refresh", "3;url=1.jsp");
响应头的设置应在得到输出流(即: response.gerWriter())之前设置,否则无效。
response.getWriter().println, print, write三个方法的区别:
1. write方法遇到Null时抛出空指针异常。 print,println则直接打印null
2. 换行指的是html源码换行,并不是页面显示时换行。
请求重定向和请求转发: 不论用什么跳转,之后的语句还是会被执行,一般在之后加上return;
请求重定向response.sendRedirect(URL);
1. 地址栏改变,可以访问本web应用以外的资源。
2. 整个过程发送两次请求。
3. 不加/是相对本servlet所在目录,加/表示端口号后面的根目录http://localhost:8080/
4. sendRedirect后面语句仍然会被执行,所以一般加return .
请求转发request.getRequestDispatcher("LoginPage").forward(request, response);
1. 地址栏不改变,只能访问自己web应用的资源。
2. 整个过程是一次请求。
3. 不加/是相对本servlet,加/表示web应用的根目录http://localhost:8080/jsp/
4. 还可以this.getServletContext().getRequestDispatcher("/1.jsp").forward(request, response);
5. 请求转发之后的语句仍然会被执行。所以,一般在该语句执行之后加return.
6. 由于多个servlet之间属于同一个请求,共享同一个request对象,所以可以通过request作用域来共享传递一些信息。
过程示例:
HttpSession:将http状态信息保存在服务器端的技术。
取得:HttpSession session = request.getSession();
方法:session.getId() 返回相关联的session的id。
session.setMaxInactiveInterval(6) 以秒为单位设置session的最大空闲时间,可以在web.xml中<session-config>中配置空闲时间。
session.invalidate() 强制session失效。
利用属性设置来传递参数,与request的操作一样。
Session空闲时间的设置:
1. setMaxInactiveInterval(7) ; 设置7秒后过期
2. 通过web.xml中的配置:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
3. invalidate() ; 使当前session对象强制失效。
Session作为作用域保存传递信息。
发表评论
-
lucene3.0 例一
2012-09-11 20:18 626package com.lucene;import java. ... -
lucene3.0
2012-09-11 20:15 838全文搜索 核心:创建索引——查询索引--分词器 索引引擎: ... -
分布式存储(转载)
2012-06-05 15:42 1175L1、HTML静态化其实大家都知道,效率最高、消耗最小的 ... -
java设计原则
2012-04-05 16:50 795原则1:DRY(Don't repeat ... -
java静态、动态代理
2012-04-04 18:51 816JAVA的动态代理 代理模式 代理模式是常用的java设计模式 ... -
Hibernate声明事务
2011-09-17 16:25 861事务处理 第一种方式: 首先配置datasoure: ... -
javascript应用3
2011-09-10 15:14 936打开一个新页面:{ <script t ... -
javascript应用2
2011-09-10 15:09 874日期插件的应用:{ <script type=& ... -
javascript应用1
2011-09-10 15:00 949javascript {<!-- 1.j ... -
css应用
2011-09-10 14:59 866CSS 本章目标 1、CSS的定义、优势 2、css的基 ... -
Html
2011-09-10 14:56 896HTML 超链接:{ <a href=”http:/ ... -
jsp、el、jstl.doc
2011-09-10 14:53 1305serlvet和jsp区别和联系 jsp从本质上讲也是s ... -
Jdbc
2011-09-10 14:49 878jdbc操作数据库插入、更新、删除、查找 mysql数据 ... -
文件上传步骤
2011-09-10 14:47 731文件上传的简单方法:(原理性的实验) 1. <b ... -
中文乱码问题解决
2011-09-10 14:43 7201. post方式提交的数据 采用request.setCha ... -
事务传播特性与隔离级别
2011-09-10 14:38 763事务传播特性了解事务的几种传播特性 ... -
监听器
2011-09-10 14:36 848监听器概述 1.Listener是Servlet的监听器 ... -
过滤器
2011-09-10 14:35 12141. Servlet过滤器基础 Servlet过滤器是Se ... -
web编程常用配置2
2011-09-10 14:35 685c3p0.jar:C3PO是一个数据库连接池,Hibern ... -
web编程常用配置1
2011-09-10 14:33 957mysql数据库jdbc驱动 jdbcDriver = co ...
相关推荐
用注解的方式定义一个Servlet,就不用在web.xml中配置了。Servlet的访问URL是Servlet的必选属性,可以选择使用urlPatterns或者value定义。 像上面的AnnotationServlet可以描述成@WebServlet(name="Annotation...
赠送jar包:jakarta.servlet-api-4.0.4.jar; 赠送原API文档:jakarta.servlet-api-4.0.4-javadoc.jar; 赠送源代码:jakarta.servlet-api-4.0.4-sources.jar; 赠送Maven依赖信息文件:jakarta.servlet-api-4.0.4....
Files contained in javax.servlet.jar: META-INF/MANIFEST.MF javax/servlet/http/LocalStrings.properties javax.servlet.http.HttpSessionBindingListener.class javax.servlet....
赠送jar包:jakarta.servlet-api-4.0.4.jar; 赠送原API文档:jakarta.servlet-api-4.0.4-javadoc.jar; 赠送源代码:jakarta.servlet-api-4.0.4-sources.jar; 赠送Maven依赖信息文件:jakarta.servlet-api-4.0.4....
基于 Servlet+jsp+mysql 开发 javaWeb 学生宿舍管理系统基于 Servlet+jsp+mysql 开发 javaWeb 学生宿舍管理系统基于 Servlet+jsp+mysql 开发 javaWeb 学生宿舍管理系统基于 Servlet+jsp+mysql 开发 javaWeb 学生宿舍...
赠送jar包:javax.servlet-api-4.0.0.jar; 赠送原API文档:javax.servlet-api-4.0.0-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.0-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.0.pom; ...
SERVLET
javax.servlet的jar包,解决找不到javax.servlet.*等问题的!欢迎下载!!
赠送jar包:jersey-container-servlet-core-2.22.2.jar; 赠送原API文档:jersey-container-servlet-core-2.22.2-javadoc.jar; 赠送源代码:jersey-container-servlet-core-2.22.2-sources.jar; 赠送Maven依赖信息...
赠送jar包:javax.servlet-api-4.0.1.jar; 赠送原API文档:javax.servlet-api-4.0.1-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.1-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.1.pom; ...
我们老师教学演示的servlet例子 从简单到难文件夹有八个demo供初学者学习 servlet01 servlet02 servlet03 servlet04 servlet05 servlet06 servlet07 servlet08 servlet是在服务器上运行的小程序。这个词是在Java ...
赠送jar包:javax.servlet-3.0.0.v201112011016.jar; 赠送原API文档:javax.servlet-3.0.0.v201112011016-javadoc.jar; 赠送源代码:javax.servlet-3.0.0.v201112011016-sources.jar; 赠送Maven依赖信息文件:...
servlet基础与servlet容器模型
servlet.jar ,Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。 使用 Servlet,您可以收集来自网页...
javax.servlet JAR包,解决找不到 import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; jar包问题
实验1: 利用servlet实现一个简单的聊天室 实验目的 (1) 理解servlet的工作原理 (2) 掌握servlet编程基本技能 实验内容及要求 1. 利用servlet技术实现一个简单的聊天室,实现多人同时交流。当发送聊天信息时,信息...
Servlet项目实践 实现学生信息系统的全部代码 一、Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术。 Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java...
这是一份关于2.1版Java Servlet API的说明文档,作为对这本文档的补充。 1.2 谁需要读这份文档 这份文档描述了Java Servlet API的最新版本2.1版。所以,这本书对于Servlet的开发者及servlet引擎的开发者同样...
servlet.jar.zip用于servlet程序的开发
servlet apiservlet apiservlet apiservlet api