利用java反射机制减少Servlet的个数
编写一个BaseServlet继承HTTPServlet,这是一个通用的Servlet,代码如下:
public class BaseServlet extends HttpServlet{
//设置字符集
request.setCharacterEncoding("utf-8");
doPost(request , response);
}
public void doPost(HttpServletRequest request , HttpServletResponse response){
//设置字符集
request.setCharacterEncoding("utf-8");
//接受jap传递的方法名
String handler = request.getParameter("handler");
//根据java反射机制通过方法名获取方法
Method method = this.getDeclaredMethod(handler,HttpServletRequest.class , HttpServletResponse.class);
//执行此方法
method.invoke(this,request,response);
}
}
JSP部分代码如下:
<div align="center">
<h1>增加学生信息</h1>
<hr>
<!--
stu.dos?handler=add
通过post传递方式将方法名传递到BaseServlet
!-->
<form action="stu.dos?handler=add" method="post">
<table>
<tr>
<td>学号</td><td><input type="text" name="stuNo"></td>
</tr>
<tr>
<td>姓名</td><td><input type="text" name="stuName"></td>
</tr>
<tr>
<td>性别</td><td>男<input type="radio" name="gender" value="M">女<input type="radio" name="gender" value="F"></td>
</tr>
<tr>
<td>电话</td><td><input type="text" name="tel"></td>
</tr>
<tr>
<td>年龄</td><td><input type="text" name="age"></td>
</tr>
<tr>
<td>分数</td><td><input type="text" name="score"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="提交"></td>
</tr>
</table>
</form>
</div>
再写一个StuServlet继承BaseServlet,代码如下:
public class StuServlet extends BaseServlet{
public void add(HttpServletRequest request , HttpServletResponse response){
//通过BaseServlet中的doPost方法即可调用此add方法
//以此类推,此Servlet中可写增删改查等方法
System.out.println("添加学生信息");
}
}