servlet笔记

一、概念

1.servlet 是一种动态web资源  ; 需要放在servlet容器中(web应用),由容器调用才可以执行  ;

扩展:动态web资源:根据输入不同输出也不同;  静态web资源:输出都是相同的 ;

2.作用:

   处理请求  ---  获取请求参数、类型转换、编码处理、参数封装  ;

   创建响应  ---  响应的编码、响应头设置、数据转换xml/json   ;

二、servlet开发步骤

1.手动开发一个servlet程序

1)写一个类,实现(或间接实现)Servlet接口,并添加未实现的方法;

2)将编译后的class文件,放在web应用中 ; 并在web应用的web.xml中配置servlet对外访问的虚拟路径 ;

具体看word文档 ;

2. 开发一个servlet程序流程:

1)创建dynamic project

2)  创建servlet模板(见word笔记)

3)按照模板创建一个servlet

4)将dynamic project添加给Tomcat服务器

5)启动服务器

注意: 只有将servle在web.xml中配置,才能访问该servlet

3. 开发实例:

需求:开发一个servlet程序,通过浏览器来访问这个servlet ; servlet接收浏览器的请求并将代表时间的字符串发送给浏览器 ;

1)创建dynamic project ; 

2) 创建FirstServlet, 实现 Servlet接口(或继承GenericeServlet),并添加未实现的方法 ;

3)实现service(), 将代表当前时间的字符串发送给浏览器 ;

public class FirstServlet extends GenericServlet{
	public void service(ServletRequest req, ServletResponse res) throws ServletException, java.io.IOException{
		/* send time string */
		String dateStr = new Date().toLocaleString();
		res.getWriter().write("time: "+dateStr);
	}
}

4)将编译后的FirstServlet.class 文件 放入一个web应用中 ;

a. 手动创建classes,lib目录 ;将编译后的文件复制到classes目录下 ;

b. 在web应用的web.xml中,配置servlet对外访问的虚拟路径,如下:

<servlet></servlet>  配置一个servlet
<servlet-mapping></servlet-mapping>   配置一个servlet映射的URL路径,即访问该servlet的虚拟路径
<?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">

    <servlet>
        <servlet-name>FirstServlet</servlet-name>
        <servlet-class>com.tedu.servlet.FirstServlet</servlet-class>
    </servlet>

    <servlet-mapping>         
        <servlet-name>FirstServlet</servlet-name>
        <url-pattern>/FirstServlet</url-pattern>
    </servlet-mapping>
  
</web-app>

c.  重启服务器 ; 重启浏览器 ; 访问FirstServlet  ;

三、servlet继承关系

Servlet接口

   |-- GenericServlet抽象类

          |--  HttpServlet抽象类 : 实现了service(), 在service()判断请求方式,根据不同的请求方式来调用不同的doxxx方法

               |-- 自定义servlet类,继承HttpServlet , 并覆盖doGet()和doPost()方法,来处理GET请求和POST请求

public class ServletDemo2 extends HttpServlet {
	private static final long serialVersionUID = 1L;

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

	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}
}

四、servlet调用过程

例如访问  http://localhost/servlet/FirstServlet

1. 通过host请求头获知浏览器访问的是哪一个主机;   Host:localhost

2. 通过请起行中的请求资源路径获知浏览器访问的是哪一个web应用、哪一个资源 ;   /day13/SecondServlet

3. 根据获取到的资源路径到web.xml文件中匹配真实的路径 cn.tedu.Servlet.RequestDemo1 ; 如下图:

           

4. 访问对应的servlet 

a. servlet在第一次被访问时创建servlet实例 ;

b.创建之后,服务器立即调用init()进行初始化操作 ;

c.之后servlet的实例会一直驻留在服务器的内存中   为后续请求服务 ;

   只要有请求访问该servlet,服务器就会调用service()来处理请求,直到服务器关闭或web应用被移除web容器中 ;

d. 随着web应用的销毁,servlet实例也会销毁 ; 在销毁前服务器会调用destory() ;

5.service()执行完之后,服务器负责将response缓冲器的数据取出来,按照http响应的格式发送给浏览器

五、servlet实例

六、.虚拟路径配置

1. 虚拟路径的配置方式

1)固定的路径    ,  <url-pattern>/FirstServlet</url-pattern>

2)通过星号(*)配置一个路径

a.  以 /  开头 , 以 /*结尾

b.   *.后缀  

2. 匹配的优先级

问题:可能会导致一个URL被多个mapping所匹配

规则1:哪一个更详细哪一个就起作用

规则2:*.后缀   的优先级永远最低 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值