Servlet-简介

①Servlet是什么

      servlet是来自Web浏览器或其他客户端Http请求 和 服务器上的数据库或应用程序之间的中间层

②Servlet架构

     

③Servlet职责

        读取客户端发送的数据(显示和隐式,http表单,http请求,cookies等),处理数据并生成结果集(可能需要访问数据库),最终响应到客户端。

④创建Servlet的三种方式(一个接口,两个类)

       ---实现Servlet

       ---继承GenericServlet

       ---继承HttpServlet(最常用)

      UML类图:

public interface Servlet {
    void init(ServletConfig var1) throws ServletException;

    ServletConfig getServletConfig();

    void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

    String getServletInfo();

    void destroy();
}
public abstract class GenericServlet implements Servlet, ServletConfig, Serializable {
    private static final long serialVersionUID = 1L;
    private transient ServletConfig config;

    public GenericServlet() {
    }

    public void destroy() {
    }

    public String getInitParameter(String name) {
        return this.getServletConfig().getInitParameter(name);
    }

    public Enumeration<String> getInitParameterNames() {
        return this.getServletConfig().getInitParameterNames();
    }

    public ServletConfig getServletConfig() {
        return this.config;
    }

    public ServletContext getServletContext() {
        return this.getServletConfig().getServletContext();
    }

    public String getServletInfo() {
        return "";
    }

    public void init(ServletConfig config) throws ServletException {
        this.config = config;
        this.init();
    }

    public void init() throws ServletException {
    }

    public void log(String msg) {
        this.getServletContext().log(this.getServletName() + ": " + msg);
    }

    public void log(String message, Throwable t) {
        this.getServletContext().log(this.getServletName() + ": " + message, t);
    }

    public abstract void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

    public String getServletName() {
        return this.config.getServletName();
    }
}
public abstract class HttpServlet extends GenericServlet {

    public HttpServlet() {
    }

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws 
    }

    protected void doHead(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    }

    protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    }

    protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    }

    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    }

    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
}

⑤简单实例

   ---1.创建一个Servlet子类,并实现相关功能

   ---2.web.xml 配置 Servlet (或者通过@WebServlet注解)

         *Servlet路由配置,只能选择一种,或者Tomcat启动报错

      *web.xml报错解决方案:把开头的“<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> ” 删除,因为该约束符合xml规范,但不符合web-app规范。

public class HelloWorld extends HttpServlet{

    private String message;

    @Override
    public void init() throws ServletException{
        message = "hello world";
}

    @Override
    public void doGet(HttpServletRequest req ,HttpServletResponse resp) throws ServletException,IOException{
      // 设置响应内容类型
      response.setContentType("text/html");

      // 实际的逻辑是在这里
      PrintWrite out =  response.getWrite();
      out.println("<h1>" + message + "</h1>");
}

    @Override
    public void destroy(){}
}

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app>

  <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.ryan.biz.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/servlet</url-pattern>
    </servlet-mapping>

</web-app>

运行效果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值