servlet(动态资源)手写

1.创建一个类,继承GenericServlrt

 import java.io.*;
 import javax.servlet.*;

public class FirstServlet extends GenericServlet{
    public void service(ServletRequest req, ServletResponse res) throws ServletException,                   java.io.IOException{     
    res.getWriter().write("this is firstServlet"); 
}
}

2.编译为class文件,编译之前设置临时环境变量(当前环境变量中没有servlet所需包,所以会编译报错)

   设置方式:set classpath=%classpath%;D:\software\apache-tomcat-7.0.62\lib\servlet-api.jar

 3.将class文件放入任意web应用的classes目录

4.在web.xml文件中添加servlet映射(可以从conf/web.xml中102行和366行复制)

<servlet>       
   <servlet-name>FirstServlet</servlet-name>       
   <servlet-class>servlet.FirstServlet</servlet-class>   
</servlet>   
<servlet-mapping>       
   <servlet-name>FirstServlet</servlet-name>       
   <url-pattern>/servlet/FirstServlet</url-pattern> 
</servlet-mapping> 

实现细节:

  1.细节一

  servlet的配置分为两个标签,注册servlet标签<servlet>和映射servlet标签<servlet-     mapping>.sevlet中可以 存放servlet-name和servlet-class标签,servlet-mapping中可以存放servlet-name和url-pattern标签。 为什么servlet在配置的时候需要写成两组标签? 

答:在多个虚拟路径映射到同一个真实路径身上的时候,只需要重写servlet-mapping标签即可

   2.细节二

url-pattern中映射的通配方式:

      1.以"/"开头,以"/*"结尾的通配方式

<servlet>       
   <servlet-name>FirstServlet</servlet-name>       
   <servlet-class>servlet.FirstServlet</servlet-class>   
</servlet>   
<servlet-mapping>       
   <servlet-name>FirstServlet</servlet-name>       
   <url-pattern>/servlet/*</url-pattern> 
</servlet-mapping> 

      2.以"*.后缀"的通配方式   常用*.do这种形式

<servlet>       
   <servlet-name>FirstServlet</servlet-name>       
   <servlet-class>servlet.FirstServlet</servlet-class>   
</servlet>   
<servlet-mapping>       
   <servlet-name>FirstServlet</servlet-name>       
   <url-pattern>*.do</url-pattern> 
</servlet-mapping> 

对于如下的一些映射关系:

Servlet1 映射到 /abc/* 

Servlet2 映射到 /* 

Servlet3 映射到 /abc 

Servlet4 映射到 *.do      (永远匹配级最低)

当请求URL为“/abc/a.html”,“/abc/*”和“/*”都匹配,哪个servlet响应: Servlet引擎将调用Servlet1。当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,哪个servlet响应:Servlet引擎将调用Servlet3。 

当请求URL为“/a/a.do”时,“/a/*”和“*.do”都匹配,哪个servlet响应:Servlet引擎将调用Servlet1。
当请求URL为“/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应:Servlet引擎将调用Servlet2。
当请求URL为“/xxx/yyy/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应:Servlet引擎将调用Servlet2。 

url-pattern中的通配路径与请求url匹配程度越高,越优先采用。

*.do匹配级别永远最低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值