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目录下面,同样文件名字不能变

  • 相关阅读:
    JSON.parse解决Unexpected token ' in JSON at position 1报错
    angularjs $scope与this的区别,controller as vm有何含义?
    angularjs link compile与controller的区别详解,了解angular生命周期
    理解Promise.all,Promise.all与Promise.race的区别,如何让Promise.all在rejected失败后依然返回resolved成功结果
    angularjs 一篇文章看懂自定义指令directive
    js 记录几个因惯性思维引发的代码BUG,开发思维方式的自我反省
    js forEach参数详解,forEach与for循环区别,forEach中如何删除数组元素
    angularjs ng-if妙用,ng-if解决父子组件异步传值
    JS 从内存空间谈到垃圾回收机制
    Markdown数学公式语法
  • 原文地址:https://www.cnblogs.com/feixiangdecainiao/p/10430249.html
Copyright © 2011-2022 走看看