网站导航如何用响应式做,百度电脑版网页版,html5手机网页模板,智能建站服务平台目录 servlet
注册servlet
父pom pom文件
1、通过注解注册 2、使用ServletRegistrationBean注册 API三生三世
第一生Servlet
第二生SpringMVC
今生SpringBoot servlet
Servlet的作用#xff1a; 接受请求参数、处理请求#xff0c;响应结果#xff0c;#xff08;就…目录 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等方法。如图 注意:
本次示例使用的是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 父pom
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactId
!-- version3.1.2/version--version2.2.5.RELEASE/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.chensir/groupIdartifactIdspringboot/artifactIdversion0.0.1-SNAPSHOT/versionnamespringboot/namedescriptionspringboot/descriptionpropertiesjava.version8/java.version/propertiespackagingpom/packagingmodulesmoduleservlet/module/modulesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/projectpom文件
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.chensir/groupIdartifactIdspringboot/artifactIdversion0.0.1-SNAPSHOT/versionrelativePath../pom.xml/relativePath/parentartifactIdservlet/artifactIddependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project1、通过注解注册 2、使用ServletRegistrationBean注册 API三生三世
第一生Servlet 1.新建一个多module的空项目 2.新建web项目 3.选择Java EE8 完成 4.项目目录结构 5.修改访问路径 6.查看运行结果 7.移除注释通过xml配置实现 ?xml version1.0 encodingUTF-8?
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0servletservlet-nameHelloServlet/servlet-nameservlet-classcom.china.servlet.HelloServlet/servlet-class/servletservlet-mappingservlet-nameHelloServlet/servlet-nameurl-pattern/test/url-pattern/servlet-mapping
/web-app 8.如何自己写一个servlet public class TestServlet extends HttpServlet {Overrideprotected 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;charsetutf-8);//或者只设置下面一个参数就可以此方法一定要在获取流之前调用才生效resp.setContentType(text/html;charsetutf-8);//渲染jsp文件//RequestDispatcher requestDispatcher req.getRequestDispatcher(xxx.jsp);//requestDispatcher.forward(req,resp);PrintWriter out resp.getWriter();out.println(htmlbody);out.println(h1这是TestServlet返回的结果/h1);out.println(/body/html);}
} 9.配置web.xml ?xml version1.0 encodingUTF-8?
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0servletservlet-nameHelloServlet/servlet-nameservlet-classcom.china.servlet.HelloServlet/servlet-class/servletservletservlet-nameTestServlet/servlet-nameservlet-classcom.china.servlet.TestServlet/servlet-class/servletservlet-mappingservlet-nameHelloServlet/servlet-nameurl-pattern/HelloServlet/url-pattern/servlet-mappingservlet-mappingservlet-nameTestServlet/servlet-nameurl-pattern/test/url-pattern/servlet-mapping
/web-app 10.查看运行结果 第二生SpringMVC 1.新建module名称叫02_springmvc 2.新建文件夹web 3.点击确定就会看到如下图idea自动给我们创建了web.xml 这时候web文件夹多一个小点点的标识 4.pom.xml引入相关依赖 dependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion5.2.0.RELEASE/version/dependencydependencygroupIdjavax.servlet/groupIdartifactIdservlet-api/artifactIdversion2.5/versionscopeprovided/scope/dependencydependencygroupIdjavax.servlet.jsp/groupIdartifactIdjsp-api/artifactIdversion2.2.1-b03/versionscopeprovided/scope/dependency/dependencies 5.配置web.xml ?xml version1.0 encodingUTF-8?
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0!-- 前端控制器 --servletservlet-namespringDispatcherServlet/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classinit-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:springmvc.xml/param-value/init-paramload-on-startup1/load-on-startup/servletservlet-mappingservlet-namespringDispatcherServlet/servlet-nameurl-pattern//url-pattern!-- /和/*都是拦截所有请求/*的范围更大会拦截jsp文件 --/servlet-mapping
/web-app 6.新增springmvc.xml 此时springmvc.xml 为原始xml没有任何bean数据 7.创建controller文件TestController public class TestController implements Controller {Overridepublic 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 languagejava contentTypetext/html; charsetUTF-8 pageEncodingUTF-8 %
htmlbodyh1页面参数:${name}/h1/body
/html 9.配置springmvc.xml beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsdbean classorg.springframework.web.servlet.view.InternalResourceViewResolver!-- 设置逻辑视图名的前缀 --property nameprefix value/WEB-INF/pages//!-- 设置逻辑视图名的后缀 --property namesuffix value.jsp//beanbean name/test classcom.china.controller.TestController//beans 10.运行结果如下 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组件扫描 !--开启controller组件扫描--
context:component-scan base-packagecom.china.controller/ 13.运行结果如下 今生SpringBoot 1.通过IDE创建Spring Boot项目 2.目录结构 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模板文件 htmlbodyh1页面参数: ${name}/h1
/body/html 5.运行项目