Servlet编程-1

1 认识Servlet

1.1 Servlet是什么

Servlet 是一种运行在服务器端(一般指的是Web 服务器)的Java应用程序,可以生成动态的web 页面,它是属于客户与服务器响应的中间层。因此,可以说JSP就是Servlet。两者可以实现同样的页面效果,不过,编写JSP和编写Servlet相比,前者成本低得多

1.2 学习Servlet价值

Serlet属于JSP的底层,学习它有助于了解底层细节;另外,Servlet毕竟是一个Java类,适合纯编程,如果是纯编程的话,比将Java 代码混合在HTML中的JSP要好得多,使代码结构更加清晰

2 建立Servlet

2.1 建立过程

1.让这个类继承javax.servlet.http.HttpServlet

public class MyServlet extends HttpServlet{}

2.重写 HttpServlet 的 doGet()方法、doPost()方法

public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{
		response.setContentType("text/html;charset=gbk");//设置response对象响应类型
		PrintWriter out=response.getWriter();//输出文字
		out.println("我是Servlet类实现的网页,我是get方法");
	}
public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{
		response.setContentType("text/html;charset=gbk");
		PrintWriter out=response.getWriter();
		out.println("我是Servlet类实现的网页,我是post方法");
	}

3.配置Servet:通过web.xml文件来实现

<servlet>
  	<servlet-name>aaa</servlet-name><!-- 对象名 -->
  	<servlet-class>com.my.MyServlet</servlet-class><!-- 类名 -->
</servlet>
<servlet-mapping>
  	<servlet-name>aaa</servlet-name>
  	<url-pattern>/myservlet.bin</url-pattern>
</servlet-mapping>

4.测试Servet: index.jsp页面中的form表单的action地址

<form action="myservlet.bin"method="post">

2.2 注意

1.根标记/web-app必须且只有一个根标记

2.servlet标识及子标记:可以有若干个servlet标记,该标记的内容由tomcat服务器负责处理,servlet标记有两个子标记
servlet-name标记的内容是tomcat服务器创建的servlet对象的名字

servlet-class标记的内容指定tomcat服务器用哪个来创建servlet对象

3.servlet-mapping标记:具有两个子标记

servlet-name标记的内容是tomcat创建的servlet对象的名字(改名字必需和servlet子标签servlet-name标记的内容相同

url-pattern标记用来指定用户用怎么样的模式来请求servlet对象。

3 Servlet运行机制及生命周期

3.1 servlet运行机制

1 、初次运行,系统会实例化 Servlet
2 、Servlet采用的是多线程机制,每一次请求,系统就分配一个线程来运行 doGet函数。但是这样也会带来安全问题,一般说来,不要在Serlet内定义成员变量,除非这些成员变量是所有的用户共用的

public class MyServlet extends HttpServlet {//throws处理异常,还可以使用try{}catch(){}
	public MyServlet(){
		System.out.println("我是构造函数");
	}
	public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{
		response.setContentType("text/html;charset=gbk");//设置response对象响应类型
		PrintWriter out=response.getWriter();//输出文字
		out.println("我是Servlet类实现的网页,我是get方法");
		System.out.println("我是doGet类");
	}
	
}

1

3.2 servlet生命周期

1
当客户端向 Web 服务器提出第一次Servlet请求时Web 服务器会实例化一个Servlet,并且调用init()方法;如果Web 服务器中已经存在了一个 Servlet 实例将直接使用此实例;然后调用 service()方法,service()方法将根据客户端的请求方式来决定调用对应的.doXXX()方法;当Servlet 从Web 服务器中消亡时,Web 服务器将会调用 Servlet的destroy()方法

Servlet 内的方法有以下几个
(1)init()方法
public void init(ServletConfig config)throws ServletException

一个Servlet在服务器上最多只会驻留一个实例,所以说第一次调用servlet时将会创建一个实例
在实例化的过程中,HtpServlet中的 init()方法会被调用,因此可以将一些初始化代码放在该函数中.
这个ServletConfg对象负责向servlet传递服务设置信息,如果传递失败就会发生ServletException。

(2)doGet()doPost()service()方法
public void service(HttpServletRequestreqest,HttpServletResponse response)
throws lOException,ServletException

doGet()在以get 方式请求 Servlet时运行、常见的 get请求方式有:链接、get方式表单提交,直接访问 Servlet
doPost()在以 post方式请求 Servet时运行。常见的post请求为pos方式表单提交

事实上,客户端对Servlet发送一个请求过来,服务器端将会开启一个线程,该线程会调用service方法,service方法会根据收到的请求类型来决定是调用doGet还是doPost。但是一般情况下,不用覆盖service方法。使用doGet和doPost一样可以达到处理的目的

(3)destroy()方法
publicdestory()

destroy()方法在Servlet实例消亡自动调用。当服务器终止服务时,比如关闭服务器等,destroy()方法会被执行,消灭servlet对象。如果在此Servlet消亡之前,还必须进行某些操作,比如释放数据库连接以节省资源等,这时就可以重写 destroy()方法

注:service方法可以被调用多次,init方法只被调用一次,调用过程运行在不同线程中,互不干扰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小橙菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值