servlet处理多个请求 笔记
程序员文章站
2022-06-02 19:07:07
...
方法一
jsp代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'test.jsp' starting page</title>
</head>
<body>
<a href="add.do"> 添加</a>
<br>
<br>
<a href="query.do"> 查询</a>
<br>
<br>
<a href="delete.do"> 删除</a>
</body>
</html>
web.xml(servlet配置)
<servlet>
<servlet-name>actionServlet</servlet-name>
<servlet-class>web.actionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>actionServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
要调用的方法
private void delete(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
System.out.println("删除的方法");
}
private void query(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
System.out.println("查询的方法");
}
private void add(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
System.out.println("添加的方法");
}
1.在servlet的WEB-INF中web.xml文件 配置<url-pattern>*.do</url-pattern>来响应多个请求
2. 在servlet中获取方法名字
String servletPath = request.getServletPath(); //等到xxx.do
或者获得资源请求路径
String url = request.getRequestURI(); //得到 /项目名称/xxx.do
3. 去除/ 和.do,获得xxx内容
// 去掉斜杠和.do
String UrlName = servletPath.substring(1, servletPath.length() - 3);// 得到xxxxxx
//或者
String UrlName = url.substring(url.lastIndexOf("/"), url.lastIndexOf(".")).substring(1); //同样得到xxx
4.使用反射调用对应的方法。
// 利用反射获取方法
try {
Method method =
getClass().getDeclaredMethod(UrlName, HttpServletRequest.class, HttpServletResponse.class);
System.out.println(method);
// 执行相应的方法
method.invoke(this, request, response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
5使用判断调用对应的方法
// 方法2--利用判断调用方法
if ("add".equals(UrlName)) {
add(request, response);
}else if("query".equals(UrlName)){
query(request, response);
}else if("delete".equals(UrlName)){
delete(request, response);
}
方法二
在请求的时候加上参数,然后在servlet中获取请求的参数,再去调用对应的方法。达到一个servlet处理多个请求的目的
web.xml(servlet配置)
<servlet>
<servlet-name>actionServlet</servlet-name>
<servlet-class>web.actionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>actionServlet</servlet-name>
<url-pattern>/actionServlet</url-pattern>
</servlet-mapping>
jsp代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'test.jsp' starting page</title>
</head>
<body>
<a href="actionServlet?method=add"> 添加</a>
<br>
<br>
<a href="actionServlet?method=query"> 查询</a>
<br>
<br>
<a href="actionServlet?method=delete"> 删除</a>
</body></html>
<a href="actionServlet?method=add">
通过 request.getParameter("method"); 获得actionServlet 参数
//获取对应的请求参数
String method = request.getParameter("method");
ps:不能使用反射调用方法 // 利用判断调用方法
if ("add".equals(UrlName)) {
add(request, response);
}else if("query".equals(UrlName)){
query(request, response);
}else if("delete".equals(UrlName)){
delete(request, response);
}
下一篇: iOS学习笔记 -- 多个网络请求的处理