JavaWeb三大组件 —— Servlet

目录

servlet

注册servlet

父pom

 pom文件

1、通过注解注册

 2、使用ServletRegistrationBean注册

 API三生三世

第一生Servlet

第二生SpringMVC

今生SpringBoot


servlet

Servlet的作用: 接受请求参数、处理请求,响应结果,(就是写controller层的get、post等)
Servlet的生命周期:

  • void init(ServletConfig):初始化调用一次 
  • void service(ServletRequest request, ServletResponse response):每次处理请求时候调用 
  • void destroy():销毁时候 

实现方式:

  •   实现javax.servlet.Servlet接口;
  •   继承javax.servlet.GenericServlet类; 
  •   继承javax.servlet.http.HttpServlet类;

 常见的都是实现HttpServlet类。重写里边的doGet(),doPost等方法。如图:

JavaWeb三大组件 —— Servlet_第1张图片

 注意:

本次示例使用的是jdk为1.8版本;

javax.servlet jakarta.servlet 是 Java Servlet API 的两个版本。

在过去,Java Servlet API 是由 Sun Microsystems(现在是 Oracle)开发和维护的,其包名以 javax.servlet 开头。然而,从 Java EE 8 开始,Servlet API 的维护权转交给了 Eclipse Foundation 的 Jakarta EE 社区,因此,在最新的 Jakarta EE 版本中,Servlet API 的包名已经更改为 jakarta.servlet。

简而言之,javax.servlet 是旧版本的包名,而 jakarta.servlet 是新版本的包名。这个变化是为了反映 Jakarta EE 作为一个独立的开源项目,并且将标准 Java 技术规范的发展移交给了 Jakarta EE 社区。

需要注意的是,虽然包名发生了变化,但是 Servlet API 的核心功能和用法并没有大的改变。大多数代码可以无缝地迁移到 jakarta.servlet 包下,只需要修改导入语句和相应的依赖。

综上所述,javax.servlet 和 jakarta.servlet 的区别仅在于包名的变化,代表了不同版本的 Java Servlet API

注册servlet

JavaWeb三大组件 —— Servlet_第2张图片

父pom



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent

        2.2.5.RELEASE
         
    
    com.chensir
    springboot
    0.0.1-SNAPSHOT
    springboot
    springboot
    
        8
    

    pom

    
        servlet
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


 pom文件



    4.0.0
    
        com.chensir
        springboot
        0.0.1-SNAPSHOT
        ../pom.xml
    

    servlet

    


        
            org.springframework.boot
            spring-boot-starter
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


1、通过注解注册

JavaWeb三大组件 —— Servlet_第3张图片JavaWeb三大组件 —— Servlet_第4张图片

 2、使用ServletRegistrationBean注册

JavaWeb三大组件 —— Servlet_第5张图片

 JavaWeb三大组件 —— Servlet_第6张图片

 JavaWeb三大组件 —— Servlet_第7张图片

 JavaWeb三大组件 —— Servlet_第8张图片

 API三生三世

第一生Servlet

1.新建一个多module的空项目

 JavaWeb三大组件 —— Servlet_第9张图片

 

2.新建web项目

 JavaWeb三大组件 —— Servlet_第10张图片

 

3.选择Java EE8 ,完成

 JavaWeb三大组件 —— Servlet_第11张图片

 

4.项目目录结构

 JavaWeb三大组件 —— Servlet_第12张图片

 

5.修改访问路径

 JavaWeb三大组件 —— Servlet_第13张图片

 JavaWeb三大组件 —— Servlet_第14张图片

 

6.查看运行结果

 JavaWeb三大组件 —— Servlet_第15张图片

 

7.移除注释,通过xml配置实现

 



    
        HelloServlet
        com.china.servlet.HelloServlet
    
    
        HelloServlet
        /test
    

8.如何自己写一个servlet

 

public class TestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         // super.doGet(req, resp);
        //查看目前服务器相应编码是什么编码、
       // System.out.println(resp.getCharacterEncoding());
        //设置服务器字符集编码为UTF-8
        //servletResponse.setCharacterEncoding("UTF-8");
        //resp.setHeader("Content-Type","text/html;charset=utf-8");
        //或者只设置下面一个参数就可以,此方法一定要在获取流之前调用才生效
        resp.setContentType("text/html;charset=utf-8");
        //渲染jsp文件
        //RequestDispatcher requestDispatcher = req.getRequestDispatcher("xxx.jsp");
        //requestDispatcher.forward(req,resp);
        
        PrintWriter out = resp.getWriter();
        out.println("");
        out.println("

这是TestServlet返回的结果

"); out.println(""); } }

9.配置web.xml

 



    
        HelloServlet
        com.china.servlet.HelloServlet
    
    
        TestServlet
        com.china.servlet.TestServlet
    
    
        HelloServlet
        /HelloServlet
    
    
        TestServlet
        /test
    

10.查看运行结果

 JavaWeb三大组件 —— Servlet_第16张图片

 

第二生SpringMVC

1.新建module,名称叫02_springmvc

 JavaWeb三大组件 —— Servlet_第17张图片

 JavaWeb三大组件 —— Servlet_第18张图片

 2.新建文件夹web

 JavaWeb三大组件 —— Servlet_第19张图片

 3.点击确定,就会看到如下图,idea自动给我们创建了web.xml

 JavaWeb三大组件 —— Servlet_第20张图片

 这时候web文件夹多一个小点点的标识

JavaWeb三大组件 —— Servlet_第21张图片

 4.pom.xml引入相关依赖

 


        
            org.springframework
            spring-webmvc
            5.2.0.RELEASE
        
        
            javax.servlet
            servlet-api
            2.5
            provided
        
        
            javax.servlet.jsp
            jsp-api
            2.2.1-b03
            provided
        
    

5.配置web.xml



    
    
        springDispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:springmvc.xml
        
        1
    

    
        springDispatcherServlet
        /
        
    

6.新增springmvc.xml

JavaWeb三大组件 —— Servlet_第22张图片

 此时springmvc.xml 为原始xml,没有任何bean数据

JavaWeb三大组件 —— Servlet_第23张图片

 7.创建controller文件,TestController

public class TestController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {

        ModelAndView mv = new ModelAndView();
        mv.addObject("name", request.getParameter("name"));
        mv.setViewName("test");
        return mv;
    }
}

8.创建web/WEB_INF/pages/test.jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

    

        

页面参数:${name}

 9.配置springmvc.xml

 



    
        
        
        
        
    

    

10.运行,结果如下

JavaWeb三大组件 —— Servlet_第24张图片

 

11.使用注解版

@Controller
public class Test2Controller {

    @RequestMapping("/test2")
    public ModelAndView test(@RequestParam("name") String name){

        ModelAndView mv = new ModelAndView();
        mv.addObject("name", name);
        mv.setViewName("test");
        return mv;

    }
}

 12.springmvx.xml开启controller组件扫描

 


 13.运行结果如下

 JavaWeb三大组件 —— Servlet_第25张图片

 

今生SpringBoot

1.通过IDE创建Spring Boot项目

 JavaWeb三大组件 —— Servlet_第26张图片

 JavaWeb三大组件 —— Servlet_第27张图片

 

2.目录结构

JavaWeb三大组件 —— Servlet_第28张图片

 JavaWeb三大组件 —— Servlet_第29张图片

 3.新建TestController控制器

@Controller
public class TestController {

    @RequestMapping("/test")
    public ModelAndView test(@RequestParam(name = "name", defaultValue = "刘德华") String name){

        ModelAndView mv = new ModelAndView();
        mv.addObject("name", name);
        mv.setViewName("test");
        return mv;
    }
}

4.新建/resources/templates/test.ftlh模板文件




    

页面参数: ${name}



5.运行项目

 JavaWeb三大组件 —— Servlet_第30张图片

 

你可能感兴趣的:(java,java,servlet)