配置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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值