zoukankan      html  css  js  c++  java
  • springboot

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

    springboot 的启动类

    @Controller
    public class controllertest {
        @RequestMapping("/hello")
        @ResponseBody
        public Map<String,Object>hello(){
            Map<String,Object>map=new HashMap<String, Object>();
            map.put("msg","hello");
            return  map;
        }
    }

    对应的conroller

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>2.0.1.RELEASE</version>
            </dependency>

    pom文件配置

    这里应注意启动类应该在conroller同一个包下,或者在启动器上一层包里,还有一个就是这里如果直接将配置文件中的版本号删掉不能用。需要加上版本号。

    springboot 和servlet的整合

    在启动类上添加@ServletComponentScan,启动扫描servlet

    @SpringBootApplication
    @ServletComponentScan
    public class app {
        public static void main(String[] args) {
            SpringApplication.run(app.class,args);
        }
    }

    编写servlet类,并配置到spring中

    @WebServlet(name = "nihao",urlPatterns = "/first")
    public class FirstServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("shdihfishdoifhoiasdoif");
        }
    }

    另一种springboot和servlet整合的方式(不需要只要编写servlet就行,不用@ServletComponentScan,而且servlet类上面也不需要多余的注解@WebServlet)

        @Bean                                     //相当于@ServletComponentScan,上一种是自动扫描,这种是手动添加
        public ServletRegistrationBean register(){
            ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
            bean.addUrlMappings("/second");
            return bean;
        }
    public class SecondServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("second servlet...");
        }
    }

    springboot整合filter

    @SpringBootApplication
    @ServletComponentScan
    public class app {
        public static void main(String[] args) {
            SpringApplication.run(app.class,args);
        }
    }
    //@WebFilter(filterName = "Firstfilter",urlPatterns = {"*.do","*.action"})     这种可以添加多种拦截规则
    @WebFilter(filterName = "first",urlPatterns = "/first")
    public class Firstfilter implements Filter {
        public void init(FilterConfig filterConfig) throws ServletException {
        }
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            System.out.println("ENTER");
            filterChain.doFilter(servletRequest,servletResponse);
            System.out.println("leave");
        }
        public void destroy() {
        }
    }

    整合filter方式二

    public class app {
        public static void main(String[] args) {
            SpringApplication.run(app.class,args);
        }
        @Bean
        public ServletRegistrationBean register(){
            ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
            bean.addUrlMappings("/second");
            return bean;
        }
        @Bean
        public FilterRegistrationBean getfilter(){
            FilterRegistrationBean filterRegistration=new FilterRegistrationBean(new Firstfilter());
            filterRegistration.addUrlPatterns("/second");
            return filterRegistration;
        }
    }
    public class Firstfilter implements Filter {
        public void init(FilterConfig filterConfig) throws ServletException {
        }
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            System.out.println("ENTER");
            filterChain.doFilter(servletRequest,servletResponse);
            System.out.println("leave");
        }
        public void destroy() {
        }
    }

    springboot整合listener

    @SpringBootApplication
    @ServletComponentScan
    public class App {
    public static void main(String[] args) {
    SpringApplication.run(App.class,args);
    }
    }
    @WebListener
    public class Firstlistener implements ServletContextListener {
        public void contextInitialized(ServletContextEvent servletContextEvent) {
            System.out.println("创建了监听器");
        }
        public void contextDestroyed(ServletContextEvent servletContextEvent) {
        }
    }

    第二种方式通过函数注册

    @SpringBootApplication
    @ServletComponentScan
    public class App {
        public static void main(String[] args) {
            SpringApplication.run(App.class,args);
        }
    
        @Bean
        public ServletListenerRegistrationBean <Firstlistener> register(){
            ServletListenerRegistrationBean <Firstlistener>bean =new ServletListenerRegistrationBean<Firstlistener>(new Firstlistener());
            return bean;
        }
    }

    这种比上面的几种多了泛型,listener的编写和上面的一样,就是少了@WebListenner注解

    springboot对静态资源的访问

    1必须在classpath/static文件夹下面,就是在resources目录下创建static目录

     2或者在src/main/webapp目录下面,同样文件名字不能变

  • 相关阅读:
    vue 父子传值 子组件修改父组件的值
    高德 定位到所在城市
    地图 JS API v2. vue 海量点标记
    vue-amap的使用
    react 和 vue 的比较
    接口自动化之pytest(3)——用例执行顺序插件pytest_ordering
    接口自动化之pytest(2)——用例设计原则及执行顺序
    接口自动化之pytest(1)——pytest相对unittest的优势
    python 装饰器(一)
    python 异常捕获、抛出异常
  • 原文地址:https://www.cnblogs.com/feixiangdecainiao/p/10430249.html
Copyright © 2011-2022 走看看