我对Servlet的理解-创新互联

Servlet是java web中的动态资源,是三大组件(Servlet,Filter,Listener)之一,用于处理客户端的请求,并作出相应,具体用法为:

在义县等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、做网站 网站设计制作按需网站策划,公司网站建设,企业网站建设,成都品牌网站建设,全网营销推广,外贸营销网站建设,义县网站建设费用合理。

一,实现Servlet的三种方式:

1.实现javax.servlet.Servlet接口

   public class ServletOne implements Servlet{

       public void destroy(){}

       public ServletConfig getServletConfig(){}

       public String getServletInfo(){} 

       public void init(ServletConfig arg0) throws ServletException {}

       public void service(ServletRequest request, ServletResponse response)

              throws ServletException, IOException {}

   }

 (1).init()方法在Servlet创建时被调用

 (2).destroy()方法在Servlet销毁时创建

 (3).service()方法每请求一次servelt调用一次

2.继承javax.servlet.GenericServlet,并重写其所有的抽象方法

   public class ServletTwo extends GenericServlet{

       @Override

       public void service(ServletRequest request, ServletResponse response)  throws ServletException, IOException {}

   }

3.继承javax.servlet.http.HttpServlet

   public class ServletFour extends HttpServlet {

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

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

   }

   (1).doGet()处理get请求

   (2).doPost()处理post请求

  注:用此方法实现的Servlet只能处理http协议的请求

二,配置Servlet

   通过以上方式定义好了一个Servlet,但此时的Servlet还不能处理客户端请求,因为没有给此Servlet指定处理来自客户端的那个请求,因此要把此Servlet配置成能处理客户端请求的Servlet。在WebContent/WEB-INF/web.xml中配置如下:

   

      one

       com.web.servlet.ServletOne

   

   

      one

       /one

   

   一个标签就把一个Servlet和一个名字绑定在了一起,一个标签就把一个servlet名字和一个路径绑定在了一起,因此经过此配置客户端就可以通过访问  http://localhost:8080/项目名/one  这一个路径来访问 com.web.servlet.ServletOne 这个Servlet。当然一个 标签也可以有多个标签,来给一个Servlet绑定多个访问路径,如: 

           

           TServlet

           /login

           /log

           

也可以在标签中使用通配符*来指定访问路径,但是*不能出现在路径的中间位置如:

           /servlet/*    对的 

           *.do          对的

   /*.do         错的

    那么就会出现一个地址同时匹配一个精确的和一个使用了通配符的,此时会优先选择精确所绑定的Servlet。


三,域对象

    域对象是指在一定作用域被共享的对象,在Servlet中有四大域对象:ServletContext,HttpSession,ServletRequest,PageContext,注意:PageContext是jsp的九大内置对象之一,因为jsp是一个特殊的Servlet,故这里将PageContext也算在内。域对象通用的操作属性的方法为:

    void setAttribute(String name,Object obj)   网域对象中保存一个属性

    Object getAttribute(String name)            从域对象中获取一个属性值

    void removeAttribute(String name)           从域对象中移除一个属性


四,获取资源文件

1.获取资源的真实路径:

    ServletContext context = getServletContext()

    String path = context.getRealPath("/a.txt")

2.获取资源流:

    InputStream in = context.getResourceAsStream("/a.txt")

注:以上参数必须以 / 开头,表示相对于项目

3.获取类路径下的资源

   对于web项目来说,当把项目发布后就没有 src 这个目录,所以在拿类路径下的资源文件时,就不能用 new InputStream("") 这种方式来获取。此时src目录就相当于WebContent/WEB-INF/classes目录,可以用两种方式来获取

   (1).类.getResourceAsStream(String path)

       path以 / 开头表示路径相对于 classes

       path不以 / 开头表示路径相对于当前类

   (2).类.getClassLoader().getResourceAsStream(String path)

       此时path只想对于classes

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


当前标题:我对Servlet的理解-创新互联
链接分享:http://azwzsj.com/article/jdhpp.html