在很多的时候,我们需要创建大量的Servlet来完成数据的请求与回应,并对数据进行分析处理,
但是当我们创建了很多的Servlet的时候,就比较难以管理,那么怎么简单的处理下,让Servlet
数量少一些呢?
一般情况下form表单中的Action都是直接写上Servlet的名字,但是当多个请求需要跳转的时候,
就需要我们不断的创建servlet,这个时候我们可以把某些类型相同的Servlet放在一个一个类中,
把方法名变成Servlet的名字,下面的实例代码就是把一些Servlet放在一个类中。
package com.test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class user {
public void add(HttpServletRequest request,HttpServletResponse response){
try {
String name=request.getParameter("name");
PrintWriter pw = response.getWriter();
pw.println(name);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void del(HttpServletRequest request,HttpServletResponse response){
System.out.println("del---------");
}
}
同时创建一个Servlet,用来获取已经被封装到一个类中的Servlet,再利用反射来获取这些Servlet
package com.ys;
import java.io.IOException;
import java.lang.reflect.Method;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class action extends HttpServlet {
/*
@author Somnus
*/
private static final long serialVersionUID = 1L;
public action() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
Class<?> clazz = Class.forName("com.test.user");
String path = request.getRequestURI();
System.out.println(path);
String name = path.substring(path.lastIndexOf("!")+1,path.lastIndexOf("."));
System.out.println(name);
Object object = clazz.newInstance();
Method method = clazz.getDeclaredMethod(name, HttpServletRequest.class,HttpServletResponse.class);
method.invoke(object, request,response);
} catch (Exception e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
下面是我的jsp界面
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
<form action="action!add.do" method="post">
<input name="name" type="text">
<input type="submit">
</form>
</body>
</html>
经过测试之后,发现成功运行,也就是说用这种方式是可以转发到Servlet的,
这种方式大大减小了Servlet的数量,有兴趣的可以尝试下