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.*”这样的错误时,通常是因为你的项目缺少了这个库,所以需要引入`javax.servlet.jar`来解决问题。 1. **Java Servlet简介** Java Servlet是Java平台上的一个标准,用于扩展服务器...
Servlet是一个Java类,遵循javax.servlet.Servlet接口,它允许开发者扩展服务器的功能。当用户向Web服务器发送一个请求时,Servlet会接收到这个请求,处理数据,然后返回响应。Servlet的主要生命周期方法包括:`init...
Servlet是Java平台上的一个核心组件,它允许开发者创建动态web应用程序。Servlet API是Java Servlet规范的一部分,它定义了服务器端程序如何与HTTP协议交互以及如何处理来自web客户端的请求并返回响应。`servlet.jar...
《深入理解Jakarta Servlet API 4.0源码》 Servlet技术是Java Web开发的核心,它为Web应用程序提供了服务器端的编程接口。Jakarta Servlet API 4.0是Servlet规范的最新版本,它包含了对HTTP协议处理、生命周期管理...
### Servlet基础知识总结 #### 一、Servlet简介 Servlet是一种服务器端的小程序,是Java平台上的一个重要的技术之一,主要用于处理客户端的HTTP请求并生成动态网页。Servlet是在服务器端运行的,能够提供各种服务...
Servlet 线程安全问题 Servlet 线程安全问题是指在使用 Servlet 编程时,如果不注意多线程安全性问题,可能会导致难以发现的错误。Servlet/JSP 技术由于其多线程运行而具有很高的执行效率,但这也意味着需要非常...
Servlet API还提供了Filter的概念,允许开发者在请求到达Servlet之前和响应离开Servlet之后对其进行拦截和处理。`javax.servlet.Filter`接口定义了`doFilter()`方法,这使得我们可以实现如认证、日志记录、数据过滤...
Servlet3.0是Java Web开发中的一个重要里程碑,它在Servlet2.5的基础上引入了许多新特性,极大地提高了开发效率和灵活性。这份"Servlet3.0参考手册"无疑为开发者提供了全面的API参考和实用指南。 首先,Servlet3.0...
用注解的方式定义一个Servlet,就不用在web.xml中配置了。Servlet的访问URL是Servlet的必选属性,可以选择使用urlPatterns或者value定义。 像上面的AnnotationServlet可以描述成@WebServlet(name="Annotation...
Servlet-API是Java Servlet技术的核心部分,它定义了服务器端与客户端之间交互的一系列接口和类。这个压缩包包含了Servlet-API的多个版本,分别是2.2、2.3、2.4、2.5以及3.0。每个版本的发布都带来了新的功能和改进...
`servlet-src`通常指的是Servlet的源代码,这对于理解Servlet的工作原理、学习如何编写Servlet以及进行自定义功能扩展非常有用。在这个压缩包中,我们可能会找到`javax`包,这是Java标准库的一部分,包含了Servlet...
它是Java Servlet和JavaServer Pages (JSP)技术的基础,提供了服务器端程序与Web客户端交互的能力。在这个压缩包中,包含的是对Servlet API的中文文档,可能是作者因为无法找到官方的源码和javadoc而自行整理的笔记...
Files contained in javax.servlet.jar: META-INF/MANIFEST.MF javax/servlet/http/LocalStrings.properties javax.servlet.http.HttpSessionBindingListener.class javax.servlet....
Servlet3.1规范是Java服务器端编程的重要里程碑,它在原有的Servlet技术基础上进行了多项改进和扩展,极大地提升了Web应用的性能和开发效率。这个规范主要关注于Servlet、过滤器(Filter)和监听器(Listener)的...
在Java Web开发中,Servlet和MyBatis是两个非常重要的技术。Servlet3.0作为Java Servlet规范的一个版本,引入了许多新特性,而MyBatis则是一个优秀的持久层框架,简化了数据库操作。本文将深入探讨如何将Servlet3.0...
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》是一本非常受欢迎的IT教程,专为准备SCWCD(Sun Certified Web Component Developer)认证的读者设计。本书以其独特的学习风格,深入浅出地介绍了Servlet和JSP(JavaServer Pages)这两...
根据提供的文件内容,以下是对Servlet3.1规范官方文档(中文版)中的知识点的详细说明。 首先,Servlet3.1官方文档是Java™ Servlet规范版本3.1的中文翻译版本。它详细描述了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....