Servlet技术:
1. 什么是servlet?
Servlet是一个java类,是一个提供基于协议请求和响应的java类;
2. 它的生命周期
1. 启动服务器时就会实例化并加载servlet实例;
2. 进行初始化:自动调用init(ServletConfig servletConfig)方法;
3. Servlet就绪:调用service(HttpServletRequest request,HttpServletResponse response)方法(其 中 service 就是dopost()或doget()方法),这是客户提交时,自动调用的;
4. Servlet销毁:自动调用调用distory() ;
注意:在实例化并加载servlet后,步骤二和四只调用一次,而步骤三,是在每次客户端发出请求时都调用;
3. 怎样部署一个servlet?
Servlet类是必须在web.xml中注册才能使用的,例如,我有一个MyServlet类:
必须在web.xml中注册:
<web-app>
//-----------------------Servlet声明----------------------
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>servletPakage.MyServlet</servlet-class>
</servlet>
//------------------------Servlet注册(镜像)---------------
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>myServletURL</ url-pattern >
</servlet-mapping>
</web-app>
这样你在提交时的Url地址就是/myServletURL了;
4. 什么是service(HttpServletRequest request,HttpServletResponse response)方法?
其中service(HttpServletRequest request,HttpServletResponse response)方法包括两种:
1. doget(HttpServletRequest request,HttpServletResponse response)方法:
这种方法被称为显式提交方法,主要原因是它的得到的参数放在url中,可以被看到,所以称为显示提 交;
例如:有个表单:
<form action=”/myServletURL?name=todd” method=”get”>
</form>
这种方法其request获得的参数就是你看到的name=todd;
例如:String s=request.getParameter(“name”);
其结果s=”todd”;
2. dopost(HttpServletRequest request,HttpServletResponse response)方法:
这种方法被称为隐式提交方法,它的参数不会在url里得到,而是在请求数据体得到参数;
例如:有个表单:
<form action=”/myServletURL” method=”post”>
<input type=”text” name=”name” value=”todd”>
</form>
这种方法其request获得的参数就是表单体的name=todd;
例如:String s=request.getParameter(“name”);
其结果s=”todd”;
5. 什么是ServletContext?
ServletContext是一个接口,是WebApplication的视图,它的作用域时Application,它能访问Application中的初始化参数和属性,它不局限域一个Servlet,它属于整个Application;
ServletContext的初始化参数:
在web.xml中:
<web-app>
<context-param>
<param-name>myBlog</param-name>
<param-value>www.blogjava.net/todd841026</param-value>
</context-param>
</web-app>
这样在application中任意一个Servlet中可以得到这个参数,
例如:ServletContext sc = getServletContext ();
String s = sc.getInitParameter(“myBlog”);
那么结果s就是”www.blogjava.net/todd841026”
6. 什么是ServletConfig?
是单独的Servlet初始化配置;
例如:在web.xml中
<web-app>
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>servletPakage.MyServlet</servlet-class>
</servlet>
<init-param>
<param-name>cache</param-name>
<param-value>off</param-value>
</init-param>
</web-app>
在这个Servlet中:ServletConfig sc = getServletConfig();
String s = sc.getInitParameter(“cache”);
那么结果s就是”off”;
7. Servlet怎样处理多线程
在默认的情况下,单个Servlet实例是可以处理多个并发请求的,所以要考虑到多线程的共享同一对象的问题,例如:
//做个Servlet中产生了多少个object对象一个变量的例子
Private int count = 0 ;
Public void dopost(HttpServletRequest request,HttpServletResponse response){
Object object = new Object() ;
count++ ;
System.out.println(“count = ” + count) ;
}
当有5个用户提交数据时,因为Servlet是处理多线程的,所以可能出现,第四个用户的程序已经执行了count++,而第五个用户刚执行完Object object = new Object() ,就会出现数据不一致性,因为当前有5个object对象,但是count却是4;
解决方案一:
Private boolean flag = false ;
Private int count = 0 ;
Public void dopost(HttpServletRequest request,HttpServletResponse response){
synchronized(flag){
Object object = new Object() ;
count++ ;
}
System.out.println(“count = ” + count) ;
}
用同步程序块解决多线程的问题,这样在同一时刻就只能有一个访问该程序块了;
解决方案二:
Private int count = 0 ;
Public void dopost(HttpServletRequest request,HttpServletResponse response)
Implements SingleThreadModel{
Object object = new Object() ;
count++ ;
System.out.println(“count = ” + count) ;
}
实现SingleThreadModel接口,可以解决多线程问题;
8. 什么是servlet过滤器?
也是一个java类,只是它实现了Filter这个接口;
9. servlet过滤器的生命周期;
初始化:自动调用init(FilterConfig config)方法
执行:自动调用doFilter()方法;
销毁:自动调用destory()方法;
10. servlet过滤器有什么用途?
个人认为目前自己用到的Servlet过滤器的主要用途:是安全性检查
当然过滤器在Servlet之前也可以修改请求,要是在Servlet之后,也可以修改响应;
11. servlet过滤器怎样部署?
在web.xml中:
<web-app>
<filter>
<filter-name>myFilter</filter-name>
<filter-class>filterPage.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/Todd/*</url-pattern>
</filter-mapping>
</web-app>
这样就是说要访问WEB-INF下的Todd包下的jsp或Servlet的话,就必须要先通过myFilter这个类;
分享到:
相关推荐
《精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例全书》是一本深入探讨J2EE Web应用程序开发的专业书籍。J2EE,全称Java 2 Platform, Enterprise Edition,是Java平台上用于构建企业级分布式应用程序的...
赠送jar包:geronimo-j2ee-management_1.1_spec-1.0.1.jar; 赠送原API文档:geronimo-j2ee-management_1.1_spec-1.0.1-javadoc.jar; 赠送源代码:geronimo-j2ee-management_1.1_spec-1.0.1-sources.jar; 包含...
### 关于RAD-J2EE、Servlet与JSP的相关知识点 #### 一、J2EE Web组件简介 在探讨具体的Servlet和JavaServer Pages (JSP)之前,首先需要了解J2EE(Java 2 Platform, Enterprise Edition)框架的基本概念及其组成...
### J2EE全面简介 #### 一、J2EE概念 Java 2 Platform, Enterprise Edition (J2EE) 是一种企业级应用开发平台标准,它基于 Java 语言,并且为开发分布式多层 Web 应用提供了强大的支持。J2EE 的主要目标是使企业级...
J2EE-4-第4章 Servlet.ppt
<精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例>源码和数据库。这是第5卷,请下载完7卷后解压。
**J2EE (Java 2 Platform, Enterprise Edition)** 是Java平台的一个版本,专注于服务器端的软件开发,尤其适合构建和部署分布式企业级应用程序。J2EE API是它的一部分,提供了丰富的接口和类库,用于开发各种功能,...
《精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例》是针对Java企业级开发的一个深度学习资源,涵盖了四个核心的技术领域:Eclipse集成开发环境、Struts MVC框架、Hibernate对象关系映射(ORM)框架以及...
在J2EE(Java 2 Platform, Enterprise Edition)应用开发中,字符编码问题是非常常见的技术难题之一。如果处理不当,可能会导致数据乱码,影响用户体验甚至导致数据错误。本文将围绕如何解决J2EE中的字符编码问题...
赠送jar包:geronimo-j2ee-management_1.1_spec-1.0.1.jar; 赠送原API文档:geronimo-j2ee-management_1.1_spec-1.0.1-javadoc.jar; 赠送源代码:geronimo-j2ee-management_1.1_spec-1.0.1-sources.jar; 包含...
**J2EE完全参考手册-J2EE概述** Java 企业版(Java 2 Platform, Enterprise Edition,简称 J2EE)是 Oracle 公司推出的一种用于构建企业级分布式应用的平台。它提供了一套全面的框架和服务,使得开发人员能够创建、...
资源名称:j2ee视频servlet视频教程资源目录:【】j2ee视频servlet第0讲开山【】j2ee视频实战教程servlet第1讲初识【】j2ee视频实战教程servlet第2讲(上集)【】j2ee视频实战教程servlet第2讲(下集)【】j2ee视频实战...
**Java 2 Platform, Enterprise Edition (J2EE) 1.4 教程文档** Java 2 Platform, Enterprise Edition(J2EE)1.4 是一个用于构建企业级分布式应用程序的平台,它提供了多种服务、API 和服务器端的运行时环境。这个...
j2ee-1.4.jar j2ee-1.4.jar j2ee-1.4.jar j2ee-1.4.jar
中文版EXPERT-ONE-ON-ONE-J2EE-DEVELOPMENT-WITHOUT-EJB.part2.rar
J2EE--tutorial.chm java jsp js python sql/plsql/oracle/mssql/mysql c# software
### J2EE教程知识点概述 #### 一、J2EE平台简介 - **定义与背景**:Java2 Enterprise Edition(J2EE)是Java平台的一个版本,专为开发企业级应用而设计。J2EE继承和发展了Java SE,并且特别强调了支持分布式计算...
《精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例》是一本深入探讨J2EE企业级开发的权威书籍。它涵盖了Java企业级开发中的四个关键技术和框架:Eclipse集成开发环境(IDE)、Struts MVC框架、Hibernate...
该文档根据sun官方java_ee_sdk-5_04-...本次发布是官方1.5update4的chm版,各位如有需要官网5.0的API的chm版,请在后面留言,根据使用情况我再制作。 <br>J2EE 5-API Java Servlet2.5 DocumenTation(5.04).chm