配置web.xml里面的servlet的三种方式

本文介绍三种实现Servlet动态方法调用的方法,包括通过URL路径、请求参数及请求URI来识别并执行相应操作,适用于简化Servlet处理流程。
@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

		String serlvetPath = req.getServletPath();
		String methodName = serlvetPath.substring(serlvetPath.lastIndexOf("/") + 1);
		try {
			Method method = this.getClass().getDeclaredMethod(methodName,
					new Class[] { HttpServletRequest.class, HttpServletResponse.class });
			if (method != null) {
				method.invoke(this, req, resp);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
//后面写具体方法 便可自动识别并执行 
  /*web.xml中 必须严格按照方法初始化配置*/

<servlet>
    <servlet-name>StoreUserServlet</servlet-name>
    <servlet-class>com.sts.servlet.StoreUserServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>StoreUserServlet</servlet-name>
    <url-pattern>/StoreUserServlet/login</url-pattern>
    <url-pattern>/StoreUserServlet/regist</url-pattern>
  </servlet-mapping>
  

 

方法二

protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		// 获取method值,
		String methodName = request.getParameter("method");


		 if ("registUI".equals(methodName)) {

			registUI(request, response);

		}else if ("loginUI".equals(methodName)) {

			loginUI(request, response);
			
		}else if ("regist".equals(methodName)) {

			regist(request, response);
			
		}else if ("active".equals(methodName)) {

			active(request, response);
			
		}else if ("login".equals(methodName)) {

			login(request, response);
			
		}else if ("homepage".equals(methodName)) {

			homepage(request, response);
		}else if ("myfile".equals(methodName)) {

			myfile(request, response);
		}
		 
	}

该方法需要在请求Servlet时指明method

<li><a href="${pageContext.request.contextPath }/notice?method=findAll"  class="notice">通知</a></li>

同时web.xml里面配置servlet只需要如下即可

 <servlet>
    <servlet-name>NoticeServlet</servlet-name>
    <servlet-class>com.itheima.web.servlet.NoticeServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>NoticeServlet</servlet-name>
    <url-pattern>/notice</url-pattern>
  </servlet-mapping>

方法三:

@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		 String requestURI = req.getRequestURI();
		 System.out.println(requestURI);
		 
		if (requestURI.endsWith(Protocol.reg_user)) {
			this.registerUser(req, resp);
		} else if (requestURI.endsWith(Protocol.login_user)) {
			this.loginUser(req, resp);

		}
	}

web.xml如下

<!-- 1 -->
  	<servlet-mapping> 
  	 <servlet-name>student</servlet-name>
  	 <url-pattern>/student/*</url-pattern>
  	 </servlet-mapping>
 	 <!-- 2 -->
  	<servlet-mapping> 
  	 <servlet-name>user</servlet-name>
  	 <url-pattern>/user/register</url-pattern>
  	 <url-pattern>/user/login</url-pattern>
  	 </servlet-mapping>
	 <!-- 3 -->
  	<servlet-mapping> 
  	 <servlet-name>valid</servlet-name>
  	 <url-pattern>/valid</url-pattern>
  	 </servlet-mapping>

 

### 如何在 Eclipse 中通过 `web.xml` 配置 Servlet 要在 Eclipse 中通过 `web.xml` 文件配置 Servlet,可以按照以下方式进行操作: #### 1. 创建动态 Web 项目并启用 `web.xml` 如果在创建动态 Web 项目时未自动生成 `web.xml` 文件,则可以通过调整项目的 Java EE 版本来解决此问题。确保项目的 Dynamic Web Module 设置为低于 **4.0** 的版本(例如 3.1 或更早),因为从 Servlet API 4.0 开始,默认情况下不再强制生成 `web.xml` 文件[^3]。 #### 2. 找到并编辑 `web.xml` 文件 在项目的 `WEB-INF` 目录下找到 `web.xml` 文件,并对其进行必要的修改。以下是典型的 `web.xml` 配置结构: ```xml <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <!-- 定义 Servlet --> <servlet> <servlet-name>CheckParamServlet</servlet-name> <servlet-class>servlet.CheckParamServlet</servlet-class> </servlet> <!-- 映射 URL 到 Servlet --> <servlet-mapping> <servlet-name>CheckParamServlet</servlet-name> <url-pattern>/checkparam</url-pattern> </servlet-mapping> </web-app> ``` 上述代码定义了一个名为 `CheckParamServlet` 的 Servlet 并将其映射到 `/checkparam` 路径上[^5]。 #### 3. 解决可能的冲突问题 需要注意的是,在某些情况下可能会遇到注解和 `web.xml` 同时配置同一 Servlet 导致的冲突问题。例如,如果已经在 Servlet 类中使用了 `@WebServlet("/servlet/CheckParamServlet")` 注解,则无需再在 `web.xml` 中重复配置Servlet 和其路径映射[^2]。可以选择删除其中一种配置方式来解决问题。 #### 4. 测试配置的有效性 完成以上步骤后,启动 Apache Tomcat Server 来测试配置是否生效。如果仍然无法正常访问 Servlet,可能是由于 servlet-class 的路径不正确引起的。此时建议通过右键单击 Servlet 文件并选择 “Run As -> Run on Server”,观察浏览器中的实际访问路径,并据此修正 `web.xml` 中的相关配置[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值