JavaWeb快速入门--Servlet(1)

上一篇:JavaWeb学习总结07–Tomcat
下一篇:JavaWeb学习总结09–Servlet(2)

Servlet: server applet

Servlet(Server Applet),全称Java Servlet,servlet是运行在服务器端的Java程序,Servlet本质上就是一个用Java语言编写接口,定义了Java类被浏览器访问到(tomcat识别)的规则。其主要功能是用来交互式的浏览和修改数据,增加Web的动态效果。在使用时,我们往往通过自定义一个类,来实现Servlet接口,复写方法。

关于Servlet

Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。当客户机将请求信息发送到服务器时,服务器可以将请求信息发送给Servlet,并让Servlet进行响应。通过这个方式,Servlet可以实现许多功能:

  • 1.创建并返回一个基于客户请求实质的、动态内容的完整HTML页面;
  • 2.创建可嵌入到现有HTML页面中的HTML片段
  • 3.读取客户端发送过来的隐藏数据
  • 4.读取客户端发送过来的显示数据
  • 5.与其它服务器资源进行通信
  • 6.通过状态码和响应头向客户端发送隐藏数据
    在这里插入图片描述

Servlet的生命周期

Servlet是JavaWeb的三大组件之一,它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理。Servlet的生命周期在它被装入Web服务器内存时开始,在Web服务器终止或重新装入Servlet时结束。一个Servlet程序在Web服务器上的运行过程经历了:装入、初始化、调用、销毁四个阶段,它的生命周期在第二个阶段开始,在第四个阶段终止。

生命周期方法:
载入(init),Web服务器加载和实例化Servlet的工作,该工作可以在Web服务器启动时到Web服务器受到请求时,之间任一时刻完成,之后进行初始化工作,这些工作在整个生命周期中只执行一次。

服务(service),从请求对象处获取响应信息,进行处理之后再次响应给客户机, 每次客户机请求时,Service方法都会被调用一次。

销毁(destroy):当服务器不再需要Servlet对象时,或者需要载入新的Servlet对象实例时,Web服务器会调用destroy方法执行销毁(一般只有在服务器正常关闭时执行),只执行一次。

    
public class ServletDemo implements Servlet{

	@Override
	public void destroy() {
		// TODO Auto-generated method stub	
	}
	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public void init(ServletConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
	}
	@Override
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("Hello Servlet");
	}

}

快速入门

在我们开发过程中,实现Servlet的方法有3种,分别是实现Servlet接口、继承GenericServlet类和继承HttpServlet类,GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象,HttpServlet是对http协议的一种封装,我们可以定义类继承HttpServlet,然后复写doGet/doPost方法。(在实际应用中,继承HttpServlet应用居多)
在这里插入图片描述

如果我们想要发送一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成:编写一个Java类,实现servlet接口,把开发好的Java类部署到web服务器中这两步。

  • 搭建步骤:
    1. 创建JavaEE项目
    2. 定义一个类,实现Servlet接口(public class ServletDemo1 implements Servlet)
    3. 实现接口中的抽象方法
    4. web.xml中配置Servlet

定义MyServlet类,通过继承HttpServlet类来实现Servlet接口

public class MyServlet extends HttpServlet {       

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//........................
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//........................
	}

}		 

配置web.xml文件,访问路径为/servlet

<!--配置Servlet -->
<servlet>
    <servlet-name>servlet</servlet-name>
    <servlet-class>cn.ly.web.servlet.MyServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>servlet</servlet-name>
    <url-pattern>/servlet</url-pattern>
</servlet-mapping>
  • 执行原理:
    1. 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
    2. 查找web.xml文件,是否有对应的标签体内容。
    3. 如果有,则在找到对应的全类名
    4. tomcat会将字节码文件加载进内存,并且创建其对象
    5. 调用其方法

注意:Servlet3.0之后,我们可以通过使用注解来代替web.xml配置,我们只需要在MyServlet类种的上方添加一个@WebServlet("/servlet")即可(适用于单个Servlet的配置)

@WebServlet相关配置
urlpartten:Servlet访问路径,一个Servlet可以定义多个访问路径 : @WebServlet({"/a1","/a2","/a3"})
路径定义规则:

  • 1. /xxx:路径匹配
  • 2. /xxx/xxx:多层路径,目录结构
  • 3. *.do:扩展名匹配

WebServlet的相关属性

属性名描述
urlPatternsServlet的访问URL
valueServlet的访问URL
descriptionServlet的描述信息
displayNameServlet的显示名称
initParamsServlet的初始化参数
nameServlet的名称
asyncSupported声明Servlet是否支持异步操作模式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
	<form name="from" action="/servlet" method="POST">
		用户名:<input name="username"></br> 
		密码: <input type="submit" value="提交"></br> 
		<input type="submit" name="submit" value="提交"></br>
		<input type="reset" name="reset" value="重置"></br>
	</form>

</body>
</html>

上一篇:JavaWeb学习总结07–Tomcat
下一篇:JavaWeb学习总结09–Servlet(2)

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

龙源lll

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

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

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

打赏作者

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

抵扣说明:

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

余额充值