`
qianjiangbing
  • 浏览: 91969 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

servlet

 
阅读更多

Servlet 就是server applet的简写,Servlet是一个动态资源。

1、servlet的作用

    处理请求,生成响应。

 

2、如何创建一个servlet呢?

   1.实现servlet接口即可

   2.继承javax.servlet.GenericServlet

   3.继承javax.servlet.http.HttpServlet

 

3、Servlet的声明周期方法

   生命周期指的是必须经历的过程。

   对于servlet来讲,有3个生命周期方法。

          1.出生==>  init方法,在构造方法调用之后调用。

          2.使命==>  service方法,当请求发来时,处理请求使用。

          3.销毁==> destroy方法,当服务器关闭时,会销毁servlet,在销毁之前调用该方法释放资源。

 

4、servlet中的其他方法

     getServletInfo ==> 获得servlet的信息(版本,作者,版权。。),没有什么卵用。

     getServletConfig==> 返回servletConfig对象。

 

5、ServletConfig对象是什么

     该对象封装了servlet在web.xml中的配置。

      方法

       1.getServletName  获得配置文件中<servlet-name>元素的内容

       2.getInitParameter  根据<init-param>中的<param-name>获得<param-value>

         <init-param>

              <param-name>name</param-name>

              <param-value>tom</param-value>

         </init-param>

         3.getInitParameterNames 返回所有<param-name>

         4.getServletContext 

         该方法获得servletConfig

 

6、其他实现servlet的方式

     GenericServlet:

     1.妥善保管ServletConfig对象

     2.实现了ServletConfig接口  为调用方便

     注意:不要重写servlet接口中的init方法,不然第一步优化就白做了。

      我们要做初始化的动作,需要去重写GenericServlet提供的空参init方法。

    HttpServlet:

     1.因为web项目基于Http协议,所以Service方法中传过来的request,response对象都是基于HTTP协议的,也就是HttpServletRequest,HttpServletResponse,它帮助我们进行了强转。

      2.我们有可能在不同的请求方式做不同的事情,根据请求方式不同,调用不同的方法

      例如:GET--> doGet();

                 POST-->doPost();

 

7、Servlet中的其他细节

    1、关于Servlet线程安全问题

     因为在Servlet运行期间只有一个servlet实例存在,可能会同时处理多个请求。

     那么我们在Servlet中声明成员变量来存储用户数据是有线程安全问题的。

      我们应该如何解决呢?

           1.实现SigleThreadModel(不推荐了)

           2.使用局部变量保存用户数据。(推荐使用)

 

      2、关于servlet随着项目的启动而创建

      使用<load-on-startup>配置来实现。

      

<servlet>
	<servlet-name>AServlet</servlet-name>
	<servlet-class>cn.qjb.servlet.hello.AServlet</servlet-class>
	<load-on-startup>3</load-on-startup>
</servlet>

    填写一个整数,整数越小优先级越高,如果优先级一样,启动顺序按照配置顺序。

     3、关于Servlet路径配置问题详解

         <url-pattern>

             路径匹配:

         /AServlet          http://localhost:8080/Javaee01/AServlet

        /ABC/AServlet  http://localhost:8080/Javaee01/ABC/AServlet

 ABC/ABC/AServlet  http://localhost:8080/Javaee01/ABC/ABC/AServlet

      ABC/ABC/*         http://localhost:8080/Javaee01/ABC/ABC/jlasjd

       /*                         http://localhost:8080/Javaee01/sdks

      /  相当于  /*

     后缀名匹配:

                  *.do  ==>  struts

                  *.action ==> structs2

                  *.html  ==>

     注意:

           1.关于路径,配置的路径匹配范围越大优先级越低  2.两种匹配模式不能混用,例如错误例子:/*.do

 

4、关于tomcat的目录下的web.xml配置

      1.default  servlet的配置

      2. jsp    servlet的配置

      3.<session-config>

               <session-timeout>30</session-timeout>  默认30分钟

      </session-config>

      4.互联网中所有mine类型

      5.欢迎页面配置

 

5、相关对象之ServletContext

     1.获得 servletConfig==>getServletContext

     2.servletContext的作用

     封装了web.xml中的配置

    

<context-param>
	<param-name>name</param-name>
	<param-value>jerry</param-value>
</context-param>
<context-param>
	<param-name>password</param-name>
	<param-value>1234</param-value>
</context-param>

     getInitParameterName();==>获得所有键

     getInitParameter(key)  ==> 根据键获得对应的值

     ServletContext是servlet技术中3大域对象之一

      ServletContext对应着Application域。利用了一个项目中只有一个ServletContext实例的特点。在servletContext中放置了一个map用作数据通信。 这个map就是所谓的域

关于域的操作,有4个.
	放入键值对 setAttribute(key,value)
	通过键取值 getAttribute(key)
	通过键删除 removeAttribute(key)
	遍历所有键 getAttributeNames()

    获得项目中资源

    所有servletContext中关于路径的获得,相对路径都是相对的WebRoot(项目根)下

        getRealPath  通过相对路径获得绝对路径

        getResourceAsStream==>根据相对路径获得指定的资源流

 

    servlet技术中对象的范围

     servlet ==> 项目启动期间一个servlet只有一个servlet实例

     request==> 项目启动期间,request对象的数量,要看当前有多少个请求正在处理

     response==> 同request

     servletConfig==> 一个servlet实例对应一个servletConfig对象

     servletContext==> 整个项目中永远只有一个servletContext实例存在

其他

//一:使用getClass().getResourceAsStream方法,相对路径分为两种情况
//1: 加"/"  ==> 相对的是classes目录
//2: 不加"/" ==> 相对的是本类当前目录
InputStream is = this.getClass().getResourceAsStream("students.xml");
System.out.println(is);
//二:使用this.getClass().getClassLoader().getResourceAsStream("");获得
//只有一个相对路径 ==> 就是相对于 classes目录
InputStream is2 = 	this.getClass().getClassLoader().getResourceAsStream("students.xml");
System.out.println(is2);
						
//注意: 使用类和类加载器加载资源文件时
//1 jvm运行期间只加载一次. 但是使用下面的代码可以解决这个问题.
String path = this.getClass().getClassLoader().getResource("students.xml").getPath();
File file = new File(path.substring(1, path.length()));
System.out.println(path);
//2 getClassLoader()原本是用来加载.class文件的, 所以缓存设计的很小.不要用他加载一些别较大的资源.
	

 

 

 

 

分享到:
评论

相关推荐

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

    当你遇到“找不到javax.servlet.*”这样的错误时,通常是因为你的项目缺少了这个库,所以需要引入`javax.servlet.jar`来解决问题。 1. **Java Servlet简介** Java Servlet是Java平台上的一个标准,用于扩展服务器...

    servlet基础与servlet容器模型

    Servlet是一个Java类,遵循javax.servlet.Servlet接口,它允许开发者扩展服务器的功能。当用户向Web服务器发送一个请求时,Servlet会接收到这个请求,处理数据,然后返回响应。Servlet的主要生命周期方法包括:`init...

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

    Servlet是Java平台上的一个核心组件,它允许开发者创建动态web应用程序。Servlet API是Java Servlet规范的一部分,它定义了服务器端程序如何与HTTP协议交互以及如何处理来自web客户端的请求并返回响应。`servlet.jar...

    jakarta-servletapi-4-src.zip servlet源码

    《深入理解Jakarta Servlet API 4.0源码》 Servlet技术是Java Web开发的核心,它为Web应用程序提供了服务器端的编程接口。Jakarta Servlet API 4.0是Servlet规范的最新版本,它包含了对HTTP协议处理、生命周期管理...

    Servlet基础知识总结

    ### Servlet基础知识总结 #### 一、Servlet简介 Servlet是一种服务器端的小程序,是Java平台上的一个重要的技术之一,主要用于处理客户端的HTTP请求并生成动态网页。Servlet是在服务器端运行的,能够提供各种服务...

    servlet线程安全问题

    Servlet 线程安全问题 Servlet 线程安全问题是指在使用 Servlet 编程时,如果不注意多线程安全性问题,可能会导致难以发现的错误。Servlet/JSP 技术由于其多线程运行而具有很高的执行效率,但这也意味着需要非常...

    javaEE servlet-api

    Servlet API还提供了Filter的概念,允许开发者在请求到达Servlet之前和响应离开Servlet之后对其进行拦截和处理。`javax.servlet.Filter`接口定义了`doFilter()`方法,这使得我们可以实现如认证、日志记录、数据过滤...

    Servlet3.0参考手册

    Servlet3.0是Java Web开发中的一个重要里程碑,它在Servlet2.5的基础上引入了许多新特性,极大地提高了开发效率和灵活性。这份"Servlet3.0参考手册"无疑为开发者提供了全面的API参考和实用指南。 首先,Servlet3.0...

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

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

    servlet-api 各种版本

    Servlet-API是Java Servlet技术的核心部分,它定义了服务器端与客户端之间交互的一系列接口和类。这个压缩包包含了Servlet-API的多个版本,分别是2.2、2.3、2.4、2.5以及3.0。每个版本的发布都带来了新的功能和改进...

    serlvet 源码 servlet-src 源文件

    `servlet-src`通常指的是Servlet的源代码,这对于理解Servlet的工作原理、学习如何编写Servlet以及进行自定义功能扩展非常有用。在这个压缩包中,我们可能会找到`javax`包,这是Java标准库的一部分,包含了Servlet...

    servlet-api中文文档

    它是Java Servlet和JavaServer Pages (JSP)技术的基础,提供了服务器端程序与Web客户端交互的能力。在这个压缩包中,包含的是对Servlet API的中文文档,可能是作者因为无法找到官方的源码和javadoc而自行整理的笔记...

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

    servlet3.0与mybatis整合的示例

    在Java Web开发中,Servlet和MyBatis是两个非常重要的技术。Servlet3.0作为Java Servlet规范的一个版本,引入了许多新特性,而MyBatis则是一个优秀的持久层框架,简化了数据库操作。本文将深入探讨如何将Servlet3.0...

    Servlet3.1规范(最终版)

    Servlet3.1规范是Java服务器端编程的重要里程碑,它在原有的Servlet技术基础上进行了多项改进和扩展,极大地提升了Web应用的性能和开发效率。这个规范主要关注于Servlet、过滤器(Filter)和监听器(Listener)的...

    javax.servlet-api-4.0.1.jar中文文档.zip

    javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...

    Head First Servlet & JSP

    《Head First Servlet & JSP》是一本非常受欢迎的IT教程,专为准备SCWCD(Sun Certified Web Component Developer)认证的读者设计。本书以其独特的学习风格,深入浅出地介绍了Servlet和JSP(JavaServer Pages)这两...

    Servlet3.1规范官方文档(中文版)

    根据提供的文件内容,以下是对Servlet3.1规范官方文档(中文版)中的知识点的详细说明。 首先,Servlet3.1官方文档是Java™ Servlet规范版本3.1的中文翻译版本。它详细描述了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....

Global site tag (gtag.js) - Google Analytics