实际上,一个servlet可以处理相关的业务逻辑,当然这些业务逻辑也可以单独的分别写,也就是一个业务逻辑写一个servlet,但这样会增加servlet的数量,影响开发效率,如果采用高效率的处理方法,就可以简化,增加开发效率。
例如,一个博客系统中有关博文的操作很多,增加博文,删除博文,修改博文等业务逻辑,当然可以分别写相应处理这样的servlet,但采取用一个servlet处理更方便。 方法:可以从jsp隐含的传来一个“method”的属性,当jsp提交表单的时候,servlet会根据隐含的属性来判断调用servlet的哪个方法,然后进行相应的处理。
简单的代码如下: jsp 表单代码:
<form id="form1" name="form1" method="post" action="<%=request.getContextPath() %>/servlet/BlogServlet"> //注意:这里不要添加?method=addBlog
<input type="hidden" name="method" value="addBlog" />
<table width="678" border="0" cellpadding="0" cellspacing="3">
<tr>
<td width="51">标题:</td>
<td width="618"><label for="title"></label>
<input type="text" name="title" id="title" /></td>
</tr>
<tr>
<td>类别:</td>
<td><label for="select"></label>
<select name="select" size="1" id="select">
<option value="1">心情</option>
<option value="2">旅游</option>
</select></td>
</tr>
<tr>
<td>内容:</td>
<td><label for="content"></label>
<label for="textarea"></label>
<label for="content"></label>
<textarea name="content" cols="80" rows="20" id="content"></textarea></td>
</tr>
<tr>
<td><input type="reset" name="button" id="button" value="重置" /></td>
<td><input type="submit" name="button2" id="button2" value="提交" /></td>
</tr>
</table>
</form>
servlet代码如下:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String method = request.getParameter("method");
if (method.equals("addBlog")) {
addBlog(request, response);
}
public void addBlog(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String title = request.getParameter("title");
String content = request.getParameter("content");
String sql = "insert into blog (title,content,createdtime) value(?,?,now())";
String params[] = { title, content };
QueryRunner qr = DbHelper.getQueryRunner();
int result = 0;
try {
result = qr.update(sql, params);
} catch (SQLException e) {
e.printStackTrace();
}