完成了 JSP 与 JavaBean 的开发后,就可以进行核心控制器 Servlet 的开发了,步骤如下:
( 1 )在 classes 目录下新建 CenterServlet.java 文件,用于实现核心控制器 Servlet 。
( 2 )在 CenterServlet.java 文件中添加如下代码,实现核心控制器功能。
package xsz;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class CenterServlet extends HttpServlet
{
public void doPost ( HttpServletRequest req, HttpServletResponse resp )
throws ServletException, IOException
{
// 设置接受 / 发送 中文参数
req.setCharacterEncoding( "gb2312" );
resp.setContentType( "text/html;charset=gb2312" );
// 接受隐含 查询方式
String action = req.getParameter( "QType" ).trim();
if ( action != null ) {
// 创建 QueryBean 的对象
DBBean db = new DBBean();
List list = null;
// 接受文本框里输入的值
String qt = req.getParameter( "QueryInfo" );
if ( qt.trim().length() != 0 )
{
if ( action.equals( "QTISBN" ) ) {
// 通过书的 ID 号查询
String quryIDSQL = "select tisbn, tbname, tauthor, chubanshe,"
+ "bookdate, bookpage, leixing, bprice from "
+ "book where tisbn='" + qt + "'";
// 获取查询结果
list = db.getQuery(quryIDSQL);
} else if ( action.equals( "QTBName" ) ) {
// 通过书的名字查询
String bookNameSQL = "select tisbn, tbname, tauthor, chubanshe,"
+ "bookdate, bookpage, leixing, bprice from "
+ "book where tbname like '%" + qt + "%'";
// 获取查询结果
/*
* 请读者特别注意,由于 mysql 默认使用 iso-8859-1 编码格式
* 存储字符数据,因此进行检索的 SQL 语句字符串也必须转换
* 成 iso-8859-1 编码格式,否则可能检索不出正确的结果。
*/
list = db.getQuery( new String ( bookNameSQL.getBytes(), "iso-8859-1") );
} else if ( action.equals( "QTAuthor" ) ) {
// 通过书的作者名查询
String authorNameSQL = "select tisbn, tbname, tauthor, chubanshe,"
+ "bookdate, bookpage, leixing, bprice from "
+ "book where tauthor like '%" + qt + "%'";
// 获取查询结果
/*
* 请读者特别注意,由于 mysql 默认使用 iso-8859-1 编码格式
* 存储字符数据,因此进行检索的 SQL 语句字符串也必须转换
* 成 iso-8859-1 编码格式,否则可能检索不出正确的结果。
*/
list = db.getQuery( new String ( authorNameSQL.getBytes(), "iso-8859-1") );
}
}
// 往 JSP 传结果
req.setAttribute( "result", list );
// 清空 list 引用
list = null;
// 跳转到结果显示页面
forward( req, resp, "/Search.jsp" );
}
}
public void doGet ( HttpServletRequest req, HttpServletResponse resp )
throws ServletException, IOException
{
this.doPost(req, resp);
}
public void forward ( HttpServletRequest req, HttpServletResponse resp, String url )
throws ServletException, IOException
{
// 跳转到指定的 URL
req.getRequestDispatcher( url ).forward( req, resp );
}
}
说明:
l 上述代码中的 doPost 方法实现了接收请求,调用 JavaBean 与数据库交互并将返回的结果放置到 request 中,最后跳转到结果显示页面的功能。
l 上述代码中的 forward 方法实现了跳转到指定页面的功能,其为 doPost 方法中的页面跳转功能服务。
( 3 )在“ /BookApp/WEB-INF/classes ”目录中将上述代码进行编译,命令如下:
javac –d . CenterServlet.java
( 4 )编译成功后 classes 目录下将出现 xsz 子目录,其中有编译后的 CenterServlet.class 字节码文件。
( 5 )在 WEB-INF 目录下新建 Web 应用的配置文件 web.xml ,对 Servlet 等进行配置,其内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 设置整个 web 应用的欢迎页面为 Search.jsp -->
<welcome-file-list>
<welcome-file>Search.jsp</welcome-file>
</welcome-file-list>
<!-- 对 CenterServlet 进行配置 -->
<servlet>
<servlet-name>CenterServlet</servlet-name>
<servlet-class>xsz.CenterServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CenterServlet</servlet-name>
<url-pattern>/CenterServlet</url-pattern>
</servlet-mapping>
</web-app>