• 在springBoot中配置web.xml中配置的servlet


    第一种

     web.xml (截取的需要转换的)

    当拦截到 /socke t时执行该servlet

        <servlet>
            <servlet-name>websocket</servlet-name>
            <servlet-class>org.ldd.ssm.hangyu.socket.MyWebSocketServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>websocket</servlet-name>
            <url-pattern>/socket</url-pattern>
        </servlet-mapping>

    转为springboot配置为 红色部分  

    @SpringBootApplication
    @MapperScan("org.ldd.ssm.hangyu.mapper")
    //@ServletComponentScan
    public class MyspringbootApplication extends SpringBootServletInitializer{ public static ApplicationContext cs; @Bean public ServletRegistrationBean servletRegistrationBean() { return new ServletRegistrationBean(new MyWebSocketServlet(), "/socket"); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(MyspringbootApplication.class); } public static void main(String[] args) { cs=SpringApplication.run(MyspringbootApplication.class, args); } }

    或者在该servlet上加上红色的注解  但同时也要在 启动类上 加上注解 @ServletComponentScan 如上段代码中注释的一样

    @SuppressWarnings("deprecation")
    @WebServlet(name="myWebSocketServlet",urlPatterns="/socket") 
    public class MyWebSocketServlet extends WebSocketServlet {
      private static final long serialVersionUID = -6488889268352650321L;
    protected StreamInbound createWebSocketInbound(String name,HttpServletRequest request) { String parameter = request.getParameter("name"); return new MyMessageInbound(parameter); } }

    第二种

    首先解释一下:

    1. load-on-startup标记容器是否在启动的时候实例化并调用其init()方法的优先级

    2. 它的值表示  servlet应该被载入的顺序。

    3. 当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet。

    4. .如果值小于0或未指定时,则表示只有在第一次请求的容器才在该servlet调用初始化函数。

    5. 正值越小,servlet的优先级越高,应用启动时就越先加载。

    6. 值相同时,容器就会自己选择顺序来加载。

    web.xml(截取) 

        <servlet>
            <servlet-name>initServlet</servlet-name>
            <servlet-class>org.ldd.ssm.hangyu.socket.InitServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>

    第一种servlet 都有指定的路径然而这个启动时加载的不同 当时看了好久的方法都没找到。

    找了好久终于找到一篇文章:https://blog.csdn.net/billluffy/article/details/72825753

    我整理在下面:

    在Spring boot项目的实际开发中,我们有时需要项目服务启动时加载一些数据或预先完成某些动作。为了解决这样的问题,Spring boot 为我们提供了一个方法:通过实现接口 CommandLineRunner 来实现这样的需求。

    import org.springframework.boot.CommandLineRunner;  
    import org.springframework.core.annotation.Order;  
    import org.springframework.stereotype.Component;  
      
    @Component  
    @Order(value=1)//代表启动时加载的顺序
    public class MyStartupRunner implements CommandLineRunner  
    {  
       InitServlet initServlet=new InitServlet();
    @Override
    public void run(String... args) throws Exception{ initServlet.init(initServlet.getServletConfig()); } }
      
  • 相关阅读:
    反序列化二叉树-队列
    二叉树中和为某一值的路径
    深拷贝复杂链表
    机器人运动范围
    vue 安装及使用
    json 函数
    js 获取当前时间
    JS编码方式
    搭建自己的Webpack项目
    webpack 安装 打包
  • 原文地址:https://www.cnblogs.com/wangxiaomei/p/8885470.html
Copyright © 2020-2023  润新知