多个请求访问同一个servlet

在我们刚开始编写java web程序时,可能会一个jsp页面功能对应一个服务器的servlet。例如对我们的客户表(Customer)实行增删改查时,每个操作对一个servlet。这样的话,不仅使得代码量很大,而且会使得代码不好管理。那我们想到的是,怎么实现JSP页面的多个请求对应一个servlet呢?通过一个servlet完成增删改查等多个功能呢?

例如我的jsp页面中查询数据库中的表customer时,展现的如下图所示



我们需要实现的是在输入框中输入要查找的名字或者地址或者电话时,可以实现模糊查询,点击submit时,可以在当前页面下面显示查询的数据结果,例如输入数据库中有的用户名rose



再点击submit,页面呈现



当点击upadate和Delete,可是实现对用户的信息修改和删除功能。在我们刚开始的学习中,会将这些功能都分别对应一个servlet,现在实现的就是这些功能都对应一个servlet。

第一:我们可以在jsp页面中对from中的action统一格式为<form action="query.do" method="post"><td><a href="addCustomer.jsp">Add a new customer</a></td><td><a href="edit.do?id=<%=customer.getId() %>">Update</a></td>
    <td><a href="delete.do?id=<%=customer.getId() %>">Delete</a></td>。都以.do结尾。

那么在我们的一个名为CustomerServlet的web.xml配置文件中可以改写为


那么只要页面中以.do结尾的action在提交后,都会去寻找CustomerServlet。那么我们在CustomerServlet中怎么辨别每一个不同的action呢?我们的做法如下:我们在CustomerServlet中的doGet方法中实现

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取servletpath
    String servletPath = request.getServletPath();
    //去除路径后缀名中的.do
         String methodName = servletPath.substring(1);
         methodName = methodName.substring(0, methodName.length()-3);
         
         try {
        //利用反射获取methodName 对应的方法 
Method method = getClass().getDeclaredMethod(methodName, HttpServletRequest.class,
HttpServletResponse.class);
//利用反射调用相应的方法
            method.invoke(this, request, response);
} catch (Exception e) {

response.sendRedirect("error.jsp");
}
    }

这样实现可以根据页面的不同请求,截掉.do,得到不同请求名。但注意的是必须页面中的请求名和seevlet中各实现功能的方法名相同。如页面中是delete.do,那么我们的servlet中的方法名就应该写成delete,这样才能该请求获取相应的功能。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在web.xml文件中,可以通过以下方式配置多个servlet: 1. 首先,在web.xml文件中添加<servlet>标签,用于定义servlet的名称和类名。 2. 然后,在<servlet>标签中添加<servlet-name>和<servlet-class>标签,分别用于指定servlet的名称和类名。 3. 接着,在web.xml文件中添加<servlet-mapping>标签,用于将servlet映射到URL。 4. 在<servlet-mapping>标签中添加<servlet-name>和<url-pattern>标签,分别用于指定servlet的名称和URL模式。 5. 最后,重复以上步骤,添加多个<servlet>和<servlet-mapping>标签,以配置多个servlet。 例如,以下是一个web.xml文件中配置两个servlet的示例: <servlet> <servlet-name>servlet1</servlet-name> <servlet-class>com.example.Servlet1</servlet-class> </servlet> <servlet-mapping> <servlet-name>servlet1</servlet-name> <url-pattern>/servlet1</url-pattern> </servlet-mapping> <servlet> <servlet-name>servlet2</servlet-name> <servlet-class>com.example.Servlet2</servlet-class> </servlet> <servlet-mapping> <servlet-name>servlet2</servlet-name> <url-pattern>/servlet2</url-pattern> </servlet-mapping> ### 回答2: 在web.xml文件中配置多个servlet可以通过以下步骤进行。 1. 首先,我们需要在web.xml文件的<servlet>标签内配置每个servlet。每个<servlet>标签包含一个<servlet-name>和<servlet-class>标签。例如: <servlet> <servlet-name>Servlet1</servlet-name> <servlet-class>com.example.Servlet1</servlet-class> </servlet> <servlet> <servlet-name>Servlet2</servlet-name> <servlet-class>com.example.Servlet2</servlet-class> </servlet> 2. 接下来,我们需要在web.xml文件的<servlet-mapping>标签中为每个servlet配置URL映射。每个<servlet-mapping>标签包含一个<servlet-name>和<url-pattern>标签。例如: <servlet-mapping> <servlet-name>Servlet1</servlet-name> <url-pattern>/servlet1</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Servlet2</servlet-name> <url-pattern>/servlet2</url-pattern> </servlet-mapping> 3. 这样配置后,当访问"/servlet1"时,服务器将调用名为"Servlet1"的servlet类的doGet或doPost方法进行处理;当访问"/servlet2"时,服务器将调用名为"Servlet2"的servlet类的doGet或doPost方法进行处理。 通过以上的配置,我们可以在一个web应用程序中使用多个servlet,并为每个servlet指定对应的URL映射关系。这样,当用户请求不同的URL时,服务器将根据配置自动调用对应的servlet类进行处理。 ### 回答3: 在web.xml配置多个servlet可以通过以下步骤来完成。 1. 打开web.xml文件,该文件位于WEB-INF目录下,是Web应用程序的部署描述符。 2. 在<web-app>标签内部,添加<servlet>标签来配置一个servlet。每个<servlet>标签用于配置一个servlet组件。 3. 在<servlet>标签中,添加<servlet-name>标签来指定servlet的名称。该名称在整个Web应用程序中必须唯一。 4. 在<servlet>标签中,添加<servlet-class>标签来指定servletJava类。该类必须实现Servlet接口。 5. 在<servlet>标签之后,添加<servlet-mapping>标签来将servlet映射到某个URL路径。 6. 在<servlet-mapping>标签中,添加<servlet-name>标签来指定servlet的名称,与上述<servlet-name>标签中配置的名称一致。 7. 在<servlet-mapping>标签中,添加<url-pattern>标签来指定URL路径,可以配置多个URL路径,用逗号分隔。 8. 重复2-7步骤,可以配置多个servlet。注意每个<servlet>和<servlet-mapping>标签的名称必须唯一。 9. 保存web.xml文件。 通过以上步骤,我们就可以在web.xml文件中配置多个servlet。每个servlet都有一个独立的<servlet-name>和<servlet-class>,然后通过<servlet-mapping>将servlet与URL路径进行映射,使得对应的URL请求能够调用到相应的servlet处理。这样,Web应用程序就能够处理多个不同的URL请求,并使用不同的servlet来进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值