`
java风
  • 浏览: 56380 次
  • 来自: 北京
社区版块
存档分类
最新评论
  • 泛泛evil: 总结的很好,谢谢分享
    JavaScript
  • wanxkl: 哇!总结的太好了。。凤哥哥,你好强大啊。。请问您跟凤姐什么关系 ...
    css应用

Servlet

    博客分类:
  • java
阅读更多

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

注意:(1url-pattern必须加上/

   (2)每个servlet-nameweb.xml文件中是唯一的 所以建议这个名字起成和对应的类名一样 

3sevlet-class的对应的类的路径一定要确认无误

3. Servlet是一种可以在Servlet容器中运行的组件,那么理所当然就应该有一个从创建到销毁的过程,这个过程我们可以称之为Servlet生命周期。Servlet的生命周期可以分为加载、实例化、初始化、处理客户请求和卸载五个阶段,体现在方法上主要是init()、service()和destroy()三个方法。生命周期的具体说明如下:(1Servlet容器完成加载Servlet类和实例化一个Servlet对象init()方法完成初始化工作,(2)该方法由Servlet容器调用完成service()方法处理客户端请求,并返回响应结果(3destroy()方法在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()方法

获取所有的属性名再选择有用的)

注意:(1referer属性: 包含一个URL,用户从该URL代表的页面出发访问当前请求的页面(即保存上次访问的路径url

2accept-language属性:返回的是用户的语言类型 实例见google

3User-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() 返回相关联的sessionid

  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作为作用域保存传递信息。

<!--EndFragment-->
分享到:
评论

相关推荐

    Java用注解的方式定义一个Servlet

    用注解的方式定义一个Servlet,就不用在web.xml中配置了。Servlet的访问URL是Servlet的必选属性,可以选择使用urlPatterns或者value定义。  像上面的AnnotationServlet可以描述成@WebServlet(name="Annotation...

    jakarta.servlet-api-4.0.4-API文档-中英对照版.zip

    赠送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....

    javax.servlet.jar下载

    Files contained in javax.servlet.jar: META-INF/MANIFEST.MF javax/servlet/http/LocalStrings.properties javax.servlet.http.HttpSessionBindingListener.class javax.servlet....

    jakarta.servlet-api-4.0.4-API文档-中文版.zip

    赠送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 学生宿舍管理系统基于 Servlet+jsp+mysql 开发 javaWeb 学生宿舍...

    javax.servlet-api-4.0.0-API文档-中文版.zip

    赠送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-api。jar

    SERVLET

    javax.servlet jar包---解决找不到javax.servlet.*等问题

    javax.servlet的jar包,解决找不到javax.servlet.*等问题的!欢迎下载!!

    jersey-container-servlet-core-2.22.2-API文档-中文版.zip

    赠送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依赖信息...

    javax.servlet-api-4.0.1-API文档-中英对照版.zip

    赠送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 8个最基础demo

    我们老师教学演示的servlet例子 从简单到难文件夹有八个demo供初学者学习 servlet01 servlet02 servlet03 servlet04 servlet05 servlet06 servlet07 servlet08 servlet是在服务器上运行的小程序。这个词是在Java ...

    javax.servlet-3.0.0.v201112011016-API文档-中文版.zip

    赠送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基础与servlet容器模型

    servlet-api.jar

    servlet.jar ,Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。 使用 Servlet,您可以收集来自网页...

    javax.servlet 的JAR包

    javax.servlet JAR包,解决找不到 import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; jar包问题

    利用servlet技术实现一个简单的聊天室

    实验1: 利用servlet实现一个简单的聊天室 实验目的 (1) 理解servlet的工作原理 (2) 掌握servlet编程基本技能 实验内容及要求 1. 利用servlet技术实现一个简单的聊天室,实现多人同时交流。当发送聊天信息时,信息...

    Servlet项目实践 实现学生信息系统的全部代码

    Servlet项目实践 实现学生信息系统的全部代码 一、Servlet简介  Servlet是sun公司提供的一门用于开发动态web资源的技术。  Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java...

    servlet文档API中文版

    这是一份关于2.1版Java Servlet API的说明文档,作为对这本文档的补充。 1.2 谁需要读这份文档 这份文档描述了Java Servlet API的最新版本2.1版。所以,这本书对于Servlet的开发者及servlet引擎的开发者同样...

    用于servlet程序的开发的servlet-jar包

    servlet.jar.zip用于servlet程序的开发

    servlet api servlet api

    servlet apiservlet apiservlet apiservlet api

Global site tag (gtag.js) - Google Analytics