springboot 使用及配置servlet

简单了解servlet 

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。


servlet生命周期
1.客户端请求该 Servlet;
2.加载 Servlet 类到内存;
3.实例化并调用init()方法初始化该 Servlet;
4.service()(根据请求方法不同调用doGet() 或者 doPost(),此外还有doHead()、doPut()、doTrace()、doDelete()、doOptions()、destroy())。
5.加载和实例化 Servlet。这项操作一般是动态执行的。然而,Server 通常会提供一个管理的选项,用于在 Server 启动时强制装载和初始化特定的 Servlet。
Server 创建一个 Servlet的实例
第一个客户端的请求到达 Server
Server 调用 Servlet 的 init() 方法(可配置为 Server 创建 Servlet 实例时调用,在 web.xml 中 <servlet> 标签下配置 <load-on-startup> 标签,配置的值为整型,值越小 Servlet 的启动优先级越高)
一个客户端的请求到达 Server
Server 创建一个请求对象,处理客户端请求
Server 创建一个响应对象,响应客户端请求
Server 激活 Servlet 的 service() 方法,传递请求和响应对象作为参数
service() 方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息
service() 方法使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如 doGet() 或 doPost() 或程序员自己开发的新的方法。

对于更多的客户端请求,Server 创建新的请求和响应对象,仍然激活此 Servlet 的 service() 方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用 init() 方法。一般 Servlet 只初始化一次(只有一个对象),当 Server 不再需要 Servlet 时(一般当 Server 关闭时),Server 调用 Servlet 的 destroy() 方法。


工作模式
客户端发送请求至服务器
服务器启动并调用 Servlet,Servlet 根据客户端请求生成响应内容并将其传给服务器

服务器将响应返回客户端

编码工作开始 

建立servlet 小程序  (特殊说明本项目基本springboot 框架)

@WebServlet(name = "MyServlet", urlPatterns = {"/myServlet"})
public class MyServlet extends HttpServlet {
    private Logger logger = LoggerFactory.getLogger(this.getClass());
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        String username = req.getParameter("username");
        logger.info("username ="+username);
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter printWriter = resp.getWriter();
        try {
            printWriter.write("<head>");
            printWriter.write("<title>MyFirstServlet</title>");
            printWriter.write("</head>");
            printWriter.write("<body>");
            printWriter.write("<h2>Servlet MyFirstServlet at " + HttpUtils.getIpAddr(req)+ "</h2>");
            printWriter.write("<h3> Welcome " +username +" come in servlet <h3/>");
            printWriter.write("</body>");
            printWriter.write("</html>");
        }finally {
            printWriter.close();
        }
    }
@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        super.service(req, res);
    }
    @Override
    public String getServletInfo() {
        return "MyServlet";
    }
}

2.servlet代码书写完成 在启动类加入 @ServletComponentScan 注解 (启动项目扫描servlet)否则会出现一些错误

  • 当使用@ServletComponentScan扫描Servlet组件时,Servlet、过滤器和监听器可以是通过@WebServlet@WebFilter@WebListener自动注册

3.servlet 在springboot 配置 还有如下 方法

定义配置文件 一个 servlet需要进行配置 一次 多个就需要配置多次

@Configuration
public class ServletConfig {
    /**
     * 代码注册servlet(不需要@ServletComponentScan注解)
     * @return
     */
    @Bean
    public ServletRegistrationBean servletRegistrationBean() {
        // ServletName默认值为首字母小写,即myServlet1
        return new ServletRegistrationBean(new MyServlet(), "/myServlet");
    }
}

spring boot 加载时 会注册该servlet的

项目启动类不需要加入 @ServletComponentScan注解

项目发布成功后 如图


另外需要看非springboot 的项目部署servlet 的详细教程 可以参考这个http://www.importnew.com/14621.html

猜你喜欢

转载自blog.csdn.net/a15835774652/article/details/78852615
今日推荐