《Servlet、JSP和Spring MVC初学指南》——1.11 使用部署描述符
本节书摘来自异步社区《Servlet、JSP和Spring MVC初学指南》一书中的第1章,第1.11节,作者:【加】Budi Kurniawan(克尼亚万) , 【美】Paul Deck著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.11 使用部署描述符如在前面的例子中所见,编写和部署Servlet都是很容易的事情。部署的一个方面是用一个路径配置Servlet的映射。在这些范例中,是利用WebServlet标注类型,用一个路径映射了一个Servlet。
利用部署描述符是配置Servlet应用程序的另一种方法,部署描述符的详情将在第13章“部署描述符”中探讨。部署描述符总是命名为web.xml,并且放在WEB-INF目录下。本章介绍了如何创建一个名为app01c的Servlet应用程序,并为它编写了一个web.xml。
app01c有SimpleServlet和WelcomeServlet两个Servlet,还有一个要映射Servlets的部署描述符。清单1.5和清单1.6分别展示了SimpleServlet和WelcomeServlet。注意,Servlet类没有用@WebServlet标注。部署描述符如清单1.7所示。
清单1.5 未标注的SimpleServlet类
package app01c; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SimpleServlet extends HttpServlet { private static final long serialVersionUID = 8946L; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.print(" html head /head " + " body Simple Servlet /body /html");
清单1.6 未标注的WelcomeServlet类
package app01c; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class WelcomeServlet extends HttpServlet { private static final long serialVersionUID = 27126L; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.print(" html head /head " + " body Welcome /body /html }
清单1.7 部署描述符
?xml version="1.0" encoding="ISO-8859-1"? web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" servlet servlet-name SimpleServlet /servlet-name servlet-class app01c.SimpleServlet /servlet-class load-on-startup 10 /load-on-startup /servlet servlet-mapping servlet-name SimpleServlet /servlet-name url-pattern /simple /url-pattern /servlet-mapping servlet servlet-name WelcomeServlet /servlet-name servlet-class app01c.WelcomeServlet /servlet-class load-on-startup 20 /load-on-startup /servlet servlet-mapping servlet-name WelcomeServlet /servlet-name url-pattern /welcome /url-pattern /servlet-mapping /web-app
使用部署描述符有诸多好处。其一,可以将在@WebServlet中没有对等元素的元素,如load-on-startup元素。这个元素使得Servlet在应用程序启动时加载,而不是在第一次调用时加载。如果Servlet的init方法需要花一些时间才能完成的话,使用load-on-startup意味着第一次调用Servlet所花的时间并不比后续的调用长,这项功能就特别有用。
使用部署描述符的另一个好处是,如果需要修改配置值,如Servlet路径,则不需要重新编译Servlet类。
此外,可以将初始参数传给一个Servlet,并且不需要重新编译Servlet类,就可以对它们进行编辑。
部署描述符还允许覆盖在Servlet标注中定义的值。Servlet上的WebServlet标注如果同时也在部署描述符中进行声明,那么它将不起作用。然而,在有部署描述符的应用程序中,却不在部署描述符中标注Servlet时,则仍然有效。这意味着,可以标注Servlet,并在同一个应用程序的部署描述符中声明这些Servlet。
图1.8展示了有部署描述符的目录结构。这个目录结构与app01a的目录结构没有太大区别。唯一的区别在于,app01c在WEB-INF目录中有一个web.xml文件(部署描述符)。
图1.8 有部署描述符的b3的目录结构
现在,在部署描述符中声明SimpleServlet和WelcomeServlet,可以利用这些URL来访问它们:
http://localhost:8080/app01c/simple
http://localhost:8080/app01c/welcome
关于部署以及部署描述符的更多信息,请参考第13章。
Spring Boot MVC请求参数通用校验及国际化支持 一、Validation及国际化配置 1、添加依赖 2、校验失败提示消息国际化配置 3、application.properties 4、国际化资源文件 二、代码演示 1、全局异常处理 2、MessageUtils工具类 3、响应VO 2、测试Controller和请求DTO 3、多语言属性文件 4、测试用例 (1)简单对象UserReqDTO测试 (2)包含List集合对象的ChargeRuleReqDTO测试
Spring MVC中文件上传和下载 文件上传需将表格的提交方式设为 POST ,并且将enctype设为 multipart/form-data ,以二进制的方式提交数据。 spring mvc中可通过MultipartResolver监听每个请求,如有上传的文件,则把请求封装为MultipartHttpServletRequest,通过封装的请求可以获取上传的文件信息和上传的文件。 实际使用可直接将MultipartFile作为控制器中请求处理方法的参数,MultipartFile是一个接口,其实现类为CommonsMultipartFile,通过MultipartFile封装的方法也可获取文件相关信息。
java面试题(十八)spring MVC 3.1 什么是MVC? MVC是一种设计模式,在这种模式下软件被分为三层,即Model(模型)、View(视图)、Controller(控制器)。Model代表的是数据,View代表的是用户界面,Controller代表的是数据的处理逻辑,它是Model和View这两层的桥梁。将软件分层的好处是,可以将对象之间的耦合度降低,便于代码的维护。 3.2 DAO层是做什么的? DAO是Data Access Object的缩写,即数据访问对象,在项目中它通常作为独立的一层,专门用于访问数据库。这一层的具体实现技术有很多,常用的有Spring JDBC、Hibernate、JPA、
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
相关文章
- Spring Boot 属性配置和使用
- spring 之 lazy-init Autowired depends-on
- 新闻发布项目——后台JSP界面adminManage/manageTopic.jsp
- 新闻发布项目——后台JSP界面adminManage/modifyCategory.jsp
- 新闻发布项目——后台JSP界面adminManage/modifyNews.jsp
- spring boot: spring Aware的目的是为了让Bean获得Spring容器的服务
- spring boot
- Spring Boot启动时数据库初始化spring.datasource(转)
- Spring异常解决 java.lang.NullPointerException,配置spring管理hibernate时出错
- 用 Docker、Gradle 来构建、运行、发布一个 Spring Boot 应用
- Spring AOP源码分析(三)Spring AOP中的一些基本接口及其概念
- spring-boot:run启动时,指定spring.profiles.active
- [Java Spring data] @Query @Param
- spring boot:单文件上传/多文件上传/表单中多个文件域上传(spring boot 2.3.2)
- Spring MVC--使用Jackson返回JSON格式数据
- Spring测试类代码编写
- Spring读源码系列之AOP--06---AopProxy===>spring使用jdk和cglib生成代理对象的终极奥义
- 深入理解Spring Redis的使用 (一)、Spring Redis基本使用
- 毕业设计 Spring Boot个人健康信息管理系统(含源码+论文)
- 详细介绍Quartz以及它和timer的区别,spring集成Quartz,以及Cron常用表达式:每隔N秒钟、每隔N分钟、每隔N小时、在N点定时执行一次(每天执行一次)
- Spring的AOP配置文件和注解实例解析
- Quick Guide to Microservices with Spring Boot 2.0, Eureka and Spring Cloud
- 001-Spring Cloud Edgware.SR3 升级最新 Finchley.SR1,spring boot 1.5.9.RELEASE 升级2.0.4.RELEASE注意问题点
- 001-spring结合quartz使用
- Spring Security---将用户数据存入数据库详解
- [spring学习]6、基于注解配置bean