J2EE之Servlet初见

Servlet是J2EE12种规范之中的一个。它也是用java语言编写的程序,其本身也是一种JAVA类,在须要的时候被实例化,不须要的时候自己主动销毁,Servlet的执行是在Servlet容器内执行,容器负责调度Servlet,同一时候也控制着它的生命周期。Servlet主要目的是被用来处理来自client上所发出的请求。然后将处理的结果用HTML页面的形式返回,形成动态网页展示给client。

生命周期

载入与实例化:

由Servlet容器负责。当容器检測到须要Servlet来响应第一个请求时,创建Servlet实例。当servlet容器启动后,要必须知道这个Servlet类在哪里,Servlet能够在本地文件系统、远程文件系统或其它网络服务中。servlet一旦被成功载入,会调用默认的Servlet构造方法。

初始化:

Servlet实例被创建后,会调用Servletde init()方法来初始化这个对象,其目的在于让Servlet在处理由client发过来的请求之前完毕一些初始化工作,比方说建立数据库的链接、获取配置信息等。这种方法仅仅能被调用一次,也就是仅仅会初始化一次。在这初始化期间,会从ServletConfig对象(web.xml中配置)中获取初始化信息,保存配置数据,方便以后使用。

请求处理:

init()方法成功运行后,会处理client的请求。在service方法中,通过ServletRequest对象得到client的相关信息和请求信息,对请求处理后。会调用ServletResponse对象的方法设置响应信息。请求到来时,service方法决定请求的类型get、post。并把这些请求发给相应的doget、dopost,为了响应特定类型的HTTP请求。我们就必须重载doget、dopost。

服务终止:

当容器检測到一个Servlet实例须要从服务中被移除时,容器就会调用destroy()方法,让该实例释放它所使用的资源,保存数据到持久存储。当须要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法。

释放实例,随后会被Java的垃圾收集器所回收。假设再次须要这个Servlet处理请求,Servlet容器会创建一个新的Servlet实例。

实例

html例如以下:

<html>
	<head>
		<title>登陆</title>
	</head>
	<body>
		<form action=http://localhost:8080/test_servlet/LoginServlet">
			用户:<input type="text" name="username"><br>
			密码:<input type="password" name="password"><br>
			<input type="submit" value="登陆"><br>
		</form>
	</body>
</html>

java类例如以下:

import javax.servlet.*;
import java.io.*;
import javax.servlet.http.*;
public class LoginServlet extends HttpServlet{

	public void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException{
			String username=request.getParameter("username");
			String password=request.getParameter("password");

			System.out.println("username="+username);
			System.out.println("password="+password);

			response.setContentType("text/html;charset=GB18030");
			//response.getWriter().println("Login Success");
				response.getWriter().println("<html>");
				response.getWriter().println("<head>");
				response.getWriter().println("<title>登陆信息</title>");
				response.getWriter().println("</head>");
				response.getWriter().println("<body>");
				response.getWriter().println("欢迎【"+ username+"】用户登陆成功!

");
				response.getWriter().println("</body>");
				response.getWriter().println("</html>");
	}
}

web.xml例如以下:

<?xml version="1.0" encoding="ISO-8859-1"?

>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">  

     <servlet>
        <servlet-name>MyServlet</servlet-name>
        <servlet-class>LoginServlet</servlet-class>
    </servlet>

     <servlet-mapping>
        <servlet-name>MyServlet</servlet-name>
        <url-pattern>/LoginServlet</url-pattern>
    </servlet-mapping>

</web-app>

解析:

第一:Servlet的名字。包类

<servlet>
	<servlet-name>MyServlet(为servlet取的名字)</servlet-name>
	<servlet-class>LoginServlet(包名.类名)</servlet-class>
</servlet>

第二:映射、訪问的地址(url)

<servlet-mapping>
	<servlet-name>MyServlet(与上面的servlet名字要全然一样)</servlet-name>
	<url-pattern><span style="font-family:Arial, Helvetica, sans-serif;">/LoginServlet</span>(Servlet訪问路径)</url-pattern>
</servlet-mapping>

效果例如以下:

长处

执行在Webserver、Servlet容器中,能够扩展server的功能;

能够同其它资源交互,从而生成返回给client响应的内容,即动态网页。

使用JAVA编写,跨平台。

运用垃圾回收机制,避免内存回收问题。

总结

Servlet事实上是执行在server端的小应用程序;

依据client请求的方式,要重写doGet和doPost方法;

要使容器正确识别Servlet,则必须填写配置web.xml;

Servlet生命周期声明包括三个方法:init()、service()、destroy();

Servlet的生命周期过程中,创建Servlet实例、调用实例的init()和destroy()方法都仅仅进行一次,初始化完毕后。Servlet容器会将该实例保存在内存中

时间: 2024-10-13 09:11:52

J2EE之Servlet初见的相关文章

J2EE:Servlet

1.JSP 9种隐式对象,以及他们的用途 JSP一共有9个隐式对象,分别是request,response,out分别代表请求,响应和输出 pageContext, session,applicationpageContext 代表当前页面作用域session 代表会话作用域application 代表全局作用域 configconfig可以获取一些在web.xml中初始化的参数,详见config对象page表示当前对象,详见page对象exception 表示异常对象,详见异常对象 2.ser

j2ee规范——Servlet实例

之前学习j2ee的规范的时候学习过servlet(j2ee规范--Servlet),那是从宏观上了解了servlet,知道他是干什么用的?现在在项目中运用到了servlet,就是为了解决怎么用的问题.用一个实例去总结一下怎样运用. 在myeclipse中新建一个servlet程序,需要三个步骤.1.前台显示代码.2.继承HttpServlet.重写doGet或者doPost.3.在web.xml中注册servlet. 1.前台显示代码 <body> <h1>第一个servlet小例

J2EE(五)——servlet初识

一.Tomcat的三个功能: 1.jsp容器 2.Servlet容器 3.Web服务器 二.手动开发第一个servlet 开发servlet三种方式: 1.实现servlet接口 2.继承GenericServlet 3.继承HttpServlet 1.在tomcat的web apps下新建一个文件夹(myWeb),这个项目里面增加含web.xml的 WEB-INF并在WEB-INF下增加classes以及lib.在classes下编写MyFirstServlet.java: package m

j2ee,jsp,servlet文件下载server端

1.getOutputStream() has already been called for this response 报错的原因: 使用tomcat容器调用response.getOutputStream()方法的时候仅仅可以写二进制文件. 但调用requonse.getWriter()方法时,则仅仅可以在前台打印文本文件. 所以: 假设在jsp页面: outPutStream.flush(); outPutStream.close(); outPutStream=null; respon

j2ee,jsp,servlet文件下载服务器端

1.getOutputStream() has already been called for this response 报错的原因: 使用tomcat容器调用response.getOutputStream()方法的时候只能够写二进制文件. 但调用requonse.getWriter()方法时,则只能够在前台打印文本文件. 所以: 如果在jsp页面: outPutStream.flush(); outPutStream.close(); outPutStream=null; response

j2ee规范——Servlet

1.什么是servlet. servlet是提供基于协议请求的/响应服务的java类. servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面.它担当客户端请求与服务器响应的中间层.    简单点说:servlet就是客户端和服务器端的桥梁,通过这个桥梁,才能处理客户端请求与服务器响应. 2.Servlet的生命周期 Servlet的生命周期是由Servlet的容器来控制的,它可以分为3个阶段;初始化.运行.销毁. 在servlet生命周期中,ser

J2EE之Servlet基本方法

基本步骤如何 1.创建一个web项目 2.导入servlet-api.jar包 3.编写一个HelloServlet类 4.配置web.xml 5.配置输出文件夹等相关路径 6.配置tomcat,修改tomcat的servlet.xml文件,部署项目 7.编译项目,build module,生成相关class 8.输入地址访问 原文地址:https://www.cnblogs.com/KSea/p/12148269.html

Java Web -- Servlet(1) 必备知识

学习Java WEB开发必备的基本概念: 1.WEB 本意是蜘蛛网和网的意思,在网页设计中我们称为网页的意思.现广泛译作网络.互联网等技术领域.表现为三种形式,即超文本(hypertext).超媒体(hypermedia).超文本传输协议(HTTP)等. 2.静态网页(可简单理解为html) 是指网页的内容是固定的,不会根据浏览器者的不同需求而改变.(实实在在保存在服务器上的文件) 3.动态网页 是指在接到用户访问要求后动态生成的页面,页面内容会随着访问时间和访问者发生变化(并不是独立存在于服务

web容器与servlet容器

1. web容器好比   电视机 servlet容器好比   VCD 没有VCD你可以看电视,对吧,但是有了VCD没有电视机,你从哪看起?:) 没有servlet容器,你也可以用web容器直接访问静态页面,比如安装一个apache等,但是如果要显示jsp/servlet,你就要安装一个  servlet容器了,但是光有servlet容器是不够的,因为它要被解析成html输出,所以你仍需要一个web容器. 大多数servlet容器同时提供了web容器的功能,也就是说大多servelt可以独立运行你