三、servlet如何配置

本文深入探讨了Servlet的生命周期,包括实例化的时机选择,并详细解释了如何通过@WebServlet注解和web.xml文件进行Servlet的配置。同时,文章提供了完整的配置实例,展示了如何设置初始化参数并获取这些参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生命周期

可以第一次请求时就实例化,也可以web容器启动时就实例化

WebServlet(loadOnStartUp=1)

<loadOnStartUp.../>

直接收整型值,越小优先级越高

 

完整配置实例

annotation:

 1 @WebServlet(name = "testServletAnnotation", urlPatterns = { "/testservletannotation/*","/asd/*" }, initParams = { @WebInitParam(name = "a", value = "aaa") })
 2 public class testServletAnnotation extends HttpServlet {
 3     private static final long serialVersionUID = 1L;
 4     @SuppressWarnings("unused")
 5     private ServletConfig config;
 6 
 7     public void init(ServletConfig config) throws ServletException {
 8         this.config = config;
 9     }
10 
11     public void service(HttpServletRequest request, HttpServletResponse response)
12             throws ServletException, IOException {
13         request.setCharacterEncoding("utf-8");
14         response.setContentType("text/html;charSet=utf-8");
15         HttpSession session = request.getSession();
16         ServletContext cxt = request.getServletContext();
17         cxt.setAttribute("hate", "Deep hating!");
18         PrintStream out = new PrintStream(response.getOutputStream());
19         String a = config.getInitParameter("a");
20         out.println("just a servlet test! <br /> @annotation依然有效! <br /> ");
21         out.println("session:" + session.getAttribute("love")+"<br />");
22         out.println("a:" + a);
23     }
24 
25 }

XML:

1   <servlet>
2       <servlet-name>testServletXml</servlet-name>
3       <servlet-class>servlet.testServletXml</servlet-class>
4   </servlet>
5   <servlet-mapping>
6       <servlet-name>testServletXml</servlet-name>
7       <url-pattern>/testservletxml</url-pattern>
8   </servlet-mapping>

 

 

 

获取Servlet配置参数

Annotation配置

1 @WebServlet(name = "testServletAnnotation", urlPatterns = { "/testservletannotation/*","/asd/*" }, initParams = { @WebInitParam(name = "a", value = "aaa") })
2 2 
3 3 
4 4 ServletContext cxt = request.getServletContext();
5 5 
6 6 
7 7 out.println("a:" + a);

xml参数配置

1 <init-param>
2     <param-name>a</param-name>
3     <param-value>aaa</param-value>
4 </init-param>

 

转载于:https://www.cnblogs.com/xunol/p/3231382.html

### Servlet配置方法及示例 #### 一、Servlet 配置概述 Servlet 是一种基于 Java 的技术,主要用于开发动态 Web 应用程序。它可以通过两种方式进行配置:传统的 `web.xml` 文件方式以及现代的注解方式 (`@WebServlet`)。 --- #### 二、传统方式(`web.xml` 配置) 在早期版本的 Servlet 中,开发者通常通过 `web.xml` 文件来定义和映射 Servlet。以下是具体步骤: 1. **创建 Servlet 类** 创建一个继承自 `HttpServlet` 的类并重写 `doGet()` 或 `doPost()` 方法。 ```java import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.getWriter().println("<h1>Hello from MyServlet</h1>"); } } ``` 2. **编辑 `web.xml` 文件** 在项目的 `WEB-INF/web.xml` 文件中注册该 Servlet 并设置 URL 映射。 ```xml <servlet> <servlet-name>myServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>myServlet</servlet-name> <url-pattern>/myServlet</url-pattern> </servlet-mapping> ``` 上述代码表示当用户访问 `/myServlet` 路径时,会触发 `MyServlet` 的逻辑[^2]。 --- #### 、现代方式(注解配置) 随着 Servlet 3.0 及以上版本的发布,可以使用 `@WebServlet` 注解简化配置过程。这种方式无需手动编写 `web.xml` 文件即可完成 Servlet 的注册与映射。 1. **创建带有注解的 Servlet 类** ```java import java.io.IOException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/myAnnotationServlet") // 设置访问路径 public class AnnotationBasedServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType("text/html"); response.getWriter().println("<h1>Hello from AnnotationBasedServlet</h1>"); } } ``` 在此例子中,`@WebServlet("/myAnnotationServlet")` 定义了此 Servlet 的访问路径为 `/myAnnotationServlet`。因此,最终的访问地址将是 `http://localhost:8080/YourAppName/myAnnotationServlet`[^3]。 --- #### 四、WAR 包命名配置 如果希望更改部署后的 WAR 文件名称,默认情况下 Maven 构建工具会将其命名为 `${artifactId}-${version}.war`。可以在 `pom.xml` 文件中的 `<build>` 标签下指定新的名字: ```xml <build> <finalName>helloServlet</finalName> </build> ``` 这样生成的 WAR 文件名就会变为 `helloServlet.war`,而不是默认的形式[^4]。 --- ### 总结 无论是采用传统的 XML 方式还是现代化的注解方式,都可以实现对 Servlet 的有效配置。XML 配置适合于需要集中管理多个 Servlet 和过滤器的情况;而注解则更加简洁明了,减少了额外文件的维护成本。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值