美文网首页
SpringBoot整合Web开发

SpringBoot整合Web开发

作者: Yanl__ | 来源:发表于2019-12-18 15:44 被阅读0次

1.整合servlet
2.整合filter
3.整合Listener
4.访问静态资源
5.文件上传

1.整合servlet

  1. 通过注解扫描完成Servlet组件的注册
  2. 通过方法完成Servlet组件的注册
方式一:通过注解扫描
1. 在servlet类上添加注解
@WebServlet(name="FirstServlet", urlPatterns = "/first")
public class FirstServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
        System.out.println("FirstServlet.........");
    }
}

2.然后在启动类上也要添加注解
@SpringBootApplication
@ServletComponentScan  //  在springBoot 启动时会扫描@WebServlet,并将该类实例化
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

方式二: 通过方法
1.写servlet方法
public class SecondServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("SecondServlet..........");
    }
}
2. 编写启动类 编写方法注册servlet,方法返回值必须是ServletRegistrationBean的对象
@SpringBootApplication
public class App2 {
    public static void main(String[] args) {
        SpringApplication.run(App2.class, args);
    }
    @Bean
    public ServletRegistrationBean getServletRegistrationBean(){
        ServletRegistrationBean bean = new ServletRegistrationBean(new
                SecondServlet());
        bean.addUrlMappings("/second");
        return bean;
    }
}

2.整合filter

  1. 通过注解扫描完成Filter 组件的注册
  2. 通过方法完成Filter 组件的注册

方式与整合servlet一致

方式一:通过注解
filter类
//@WebFilter(filterName="FirstFilter",urlPatterns={"*.do","*.jsp"})
@WebFilter(filterName="FirstFilter",urlPatterns="/first")
public class FirstFilter implements Filter {
    @Override
    public void destroy() {
// TODO Auto-generated method stub
    }
    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1,
                         FilterChain arg2)
            throws IOException, ServletException {
        System.out.println("进入Filter");
        arg2.doFilter(arg0, arg1);
        System.out.println("离开Filter");
    }
    @Override
    public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
    }
}
启动类:
@SpringBootApplication
@ServletComponentScan
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}
方式二:通过方法
public class FirstFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("进入FirstFilter");
        // 放行
        filterChain.doFilter(servletRequest, servletResponse);
        System.out.println("离开FirstFilter");
    }

    @Override
    public void destroy() {

    }
}

启动类:
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }

    @Bean
    public FilterRegistrationBean getFilterRegistrationBean(){
        FilterRegistrationBean bean = new FilterRegistrationBean(new FirstFilter());
        bean.addUrlPatterns("/first");
        return bean;
    }
}

3.整合Listener

  1. 通过注解扫描完成Listener 组件的注册
  2. 通过方法完成Listener 组件注册

与整合servlet, filter一致

方式一:通过注解扫描
@WebListener
public class FirstListener implements ServletContextListener {
    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
    }
    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        System.out.println("Listener...init......");
    }
}
启动类:
@SpringBootApplication
@ServletComponentScan
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

方式二: 通过方法注册
public class SecondListener implements ServletContextListener {
    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
    }
    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        System.out.println("SecondListener..init.....");
    }
}

启动类:
@SpringBootApplication
public class App2 {
    public static void main(String[] args) {
        SpringApplication.run(App2.class, args);
    }
    /**
     * 注册listener
     */
    @Bean
    public ServletListenerRegistrationBean<SecondListener>
    getServletListenerRegistrationBean(){
        ServletListenerRegistrationBean<SecondListener> bean= new
                ServletListenerRegistrationBean<SecondListener>(new SecondListener());
        return bean;
    }
}

4.访问静态资源

  1. SpringBoot从classpath/static的目录
    src/main/resource/static
    注意⚠️:目录名称必须是static
  2. ServletContext根目录下src/main/webapp
    注意⚠️:目录名称必须是webapp



5.文件上传

  1. 编写html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
<form action="fileupload" method="post" enctype="multipart/form-data">
    文件上传 <input type="file" name="filename"><br/>
    <input type="submit" value="上传">
</form>
</body>
</html>
  1. 编写控制器
@RestController  // 表示该类下的方法的返回值会自动做json格式的转换  等于 @Controller + @ResponseBody
public class FileUploadController {
    /**
     * 处理文件上传
     */
    @RequestMapping("fileupload")
    public Map<String, Object> fileUpload(MultipartFile filename) throws IOException {
        // 打印文件名
        System.out.println(filename.getOriginalFilename());
        // 存储文件
        filename.transferTo(new File("/Users/yanl/JavaCode/springboot02_fileupload/src/main/resources/uploadfile/"+filename.getOriginalFilename()));
        Map<String, Object> map = new HashMap<>();
        map.put("msg", "ok");
        return map;
    }
}
  1. 编写启动类
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

注意:
设置单个上传文件的大小
spring.http.multipart.maxFileSize=200MB
设置一次请求上传文件的总容量
spring.http.multipart.maxRequestSize=200MB
在src/main/resource下新建配置文件application.properties中添加上面的信息

相关文章

网友评论

      本文标题:SpringBoot整合Web开发

      本文链接:https://www.haomeiwen.com/subject/xyoynctx.html