SpringBoot整合Servlet的两种方式

本文介绍了SpringBoot整合Servlet组件的两种注册方式。一是通过注解扫描完成注册,虽控制台有输出,但页面访问显示错误;二是通过方法完成注册。还给出了相关代码示例,如使用@WebServlet注解配置Servlet等。

1.通过注解扫描完成Servlet组件的注册(组件扫描注册);

这种方式在控制台看到了相关的输出信息,但是在浏览器打开的时候是错误的页面信息

@ServletComponentScan("com.jlt.workplat.report.servlet")  

// 在SppringBoot启动时扫描@WebServlet,并将该类实例化

@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 3600)
public class WorkplatWebApplication extends SpringBootServletInitializer {

    public WorkplatWebApplication() {
        super();
        setRegisterErrorPageFilter(false);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(WorkplatWebApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(WorkplatWebApplication.class, args);
    }
}

 

/**
 * 
 * 
 * SpringBoot 整合Servlet方式1 创建servlet时需要在web.xml进行配置。 <servlet>
 *  <servlet-name>ServletDemo1</seevlet-name>
 *  <servlet-classs>com.example.combine.servlet.sbservlet.FineReportRedirectServlet</servlet-class>
 *  </servlet>
 *  
 *  <servlet-mapping> <servlet-name>FineReportRedirectServlet</servlet-name>
 *  <url-pattern>/fineReportRedirectServlet</url-pattern> </servlet-mapping>
 *  但是在servlet3.0以后可以使用注释的方式来配置,且在springboot中也没有web.xml
 *
 */
@WebServlet(name = "FineReportRedirectServlet", urlPatterns = "/fineReportRedirectServlet") 

// 在哪个class添加了这个注释就意味着哪个class就是servlet

public class FineReportRedirectServlet extends HttpServlet {

    /**
     * 
     */
    private static final long serialVersionUID = 8500521341954102046L;

    private final Logger logger = LoggerFactory.getLogger(FineReportRedirectServlet.class);

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
        logger.info("这是第一种方式:通过注解扫描完成Servlet组件的注册");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().print("<h1>Hello MyServlet Response return you this</h1>");
        logger.info("这是doPost方法!");
    }

}
上面的写法虽然在控制台都可以输入信息,但是页面访问显示错误。

 

@WebServlet(name = "FineReportRedirectServlet", urlPatterns = "/fineReportRedirectServlet", asyncSupported = true, initParams = {
        @WebInitParam(name = "name", value = "javastack"), @WebInitParam(name = "sex", value = "man")})
public class FineReportRedirectServlet extends HttpServlet {

    /**
     * 
     */
    private static final long serialVersionUID = 8500521341954102046L;

    private final Logger logger = LoggerFactory.getLogger(FineReportRedirectServlet.class);

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        logger.info("整合servlet");
        String name = getServletConfig().getInitParameter("name");
        String sex = getServletConfig().getInitParameter("sex");

        resp.getOutputStream().println("name is " + name);
        resp.getOutputStream().println("sex is " + sex);
    }
}

2.通过方法完成Servlet组件的注册;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值