Servlet简介

Servlet简介:

    Servlet是使用JavaServlet接口运行在支持jsp的Web应用服务器上的Java程序。可以对Web浏览器或其他http客户端程序发送的请求进行处理

1、Servlet和Servlet容器

    Servlet对象与其他java对象不同,他可以处理Web浏览器或其他http客户端的请求,但是前提条件就是把servlet对象部署到Servlet容器中。

    通常情况下Servlet容器就是Web容器,如tomcat等,他们对servlet进行控制。当一个客户端发送http请求是,由容器加载servlet对其进行处理及响应。

    在容器中servlet共经历了4各阶段,加载servlet,初始化Servlet init()方法,处理请求service()方法,处理完成destroy。这个也就是servlet的生命周期。

2、Servlet的功能

    Servlet与其他的Java程序不同,可以处理http请求以获取http头信息,通过HttpServletRequest接口与HttpServletResponse接口对请求进行处理及回应

    Servlet处理完业务逻辑之后,将动态的内容通过返回并输出到html页面,与用户请求进行交互

    Servlet提供了强大的过滤功能

3、Servlet与Jsp的区别

    Jsp是一种在Servlet规范之上的动态网页技术,通过jsp页面中嵌入的java代码,可以动态生成网页。可以将其理解为servlet的扩展,在jsp文件被第一次请求时,会编译成Servlet文件,在由容器调用Servlet进行处理。

    Servlet承担客户请求与业务处理的中间角色,需要调用固定的方法,将动态内容混合到静态之中,产生html;JSP页面中,可以直接对html标签进行输出,比Servlet更具有显示层的意义。

    Servlet中需要调用Servet API处理http请求,而jsp则可以直接通过内置对象进行处理

    Servlet的使用需要进行配置,jsp只要不熟在容器之中即可。

    其实jsp用来显示页面 Servlet用来处理逻辑业务。

4、Servlet的配置

     在Servlet3.0以后可以通过代码进行配置,如@WebServlet("/FirstServlet")

     但是最常用的还是在配置文件中配置web.xml

    

<servlet>
    <servlet-name>SimpleServlet</servlet-name>
    <servlet-class>com.lyp.SimpleServlet</servlet-class>
</servlet>
    显然第一行就是servlet-name是Servlet的名称,第二行是Servlet类的全名,包含包的名称

<servlet-mapping>
    <servlet-name>SimpleServlet</serlet-name>
    <url-patter>/SimpleServlet</url-patter>
</servlet-mapping>

    第一行要和上面的第一行相同,第二行是访问该Servlet的url。

5、Servlet常用的类和接口

     接口:Servlet,ServletConfig,HttpServletRequest,HttpServletResponse

    Servlet接口:

        打开API文档,我们可以看到Servlet接口是在javax.servlet包中。该接口定义了五种方法:
        public void init(ServletConfig config) throwsServletException
        public void service(ServletRequest req,ServletResponse res)throws ServletException,java.io.IOException
        public void destroy()
        public ServletConfig getServletConfig()
        public java.lang.String getServletInfo()
       Servlet实例化后调用init方法来完成初始化
       service用于处理客户端请求
      destroy方法用来从容器中移除servlet对象


    ServletConfig接口
      
getInitParameter(String name) :根据给定的初始化参数名,返回匹配的初始化参数值。

getInitParameterNames():返回一个 Enumeration 对象,里面包含了所有的初始化参数名。

getServletContext():返回一个 ServletContext 对象getServletName():返回Servlet的名字,即web.xml文件中相应<servlet>元素的<servlet-name>子元素的值。如果没有为Servlet配置<servlet-name>子元素,则返回Servlet类的名字。

getServletName():返回Servlet的名字,即web.xml文件中相应<servlet>元素的<servlet-name>子元素的值。如果没有为Servlet配置<servlet-name>子元素,则返回Servlet类的名字。


     HttpServletRequest接口
public Stirng getContentPath()
public Cookie[] getCookies()
public String getMethod()
public String getQueryString()
pbulic HttpSession getSession()
public String getServletPath()

     HttpServletResponse接口
   
public void addCookie(Cookie cookie)
public void sendError(int src)
public voidsendRedirect(String location)

    GenericServlet类:
        在编写Servlet时都要事先Servlet接口,该类就实现了Servlet接口但是没有处理Http请求。

    HttpServlet类:
       该类继承类GenericServlet类,事先Servlet类,并且能够处理http请求、因此在进行编写Servlet时都要继承该类。例如

 1 package servlet;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 
 6 import javax.servlet.ServletException;
 7 import javax.servlet.http.HttpServlet;
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10 
11 /** 继承自HttpServlet */
12 public class HelloServlet extends HttpServlet {
13 
14     /** 重写doGet方法 */
15     @Override
16     protected void doGet(HttpServletRequest request, HttpServletResponse response)
17             throws ServletException, IOException {
18         System.out.println("处理get请求。。。");
19         PrintWriter out = response.getWriter();
20         out.println("<b>HelloServlet</b>");
21     }
22 
23     /** 重写doPost方法 */
24     @Override
25     protected void doPost(HttpServletRequest request, HttpServletResponse response)
26             throws ServletException, IOException {
27         System.out.println("处理post请求。。。");
28         PrintWriter out = response.getWriter();
29         out.println("<b>HelloServlet</b>");
30     }
31     
32 }
由上面代码可以看出doGet方法的参数是两个接口实例,在接口实例中,接口对象只能调用接口中声明的方法。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值