以查询学生为例:
==================================================
建一个包PO来封装学生的信息。这些信息与数据库中的表字段一样。
Student.java
package po;
//封装一个学生资料
public class Student {
private String stuId;
private String stuName;
private String stuSex;
private String stuBir;
private String stuAdd;
public String getStuAdd() {
return stuAdd;
}
public void setStuAdd(String stuAdd) {
this.stuAdd = stuAdd;
}
public String getStuBir() {
return stuBir;
}
public void setStuBir(String stuBir) {
this.stuBir = stuBir;
}
public String getStuId() {
return stuId;
}
public void setStuId(String stuId) {
this.stuId = stuId;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getStuSex() {
return stuSex;
}
public void setStuSex(String stuSex) {
this.stuSex = stuSex;
}
}
==================================================
再建一个包DAO来连接数据库及相关操作。
StudentDao.java
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.ArrayList;
import po.Student;
//访问数据库
public class StudentDao {
private Connection conn = null;
//初始化数据库连接
public void initConnection(){
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.240:1521:oracle","scott","tiger");
}catch(Exception ex){
ex.printStackTrace();}
}
//查询数据库
public ArrayList queryStuByName(String sname){
ArrayList stus = new ArrayList();
String sql = "SELECT 学号,姓名,性别,出生年月,家庭住址 FROM 学籍 WHERE 姓名 LIKE '%" + sname + "%'";
try{
this.initConnection();
ResultSet rs = conn.createStatement().executeQuery(sql);
while(rs.next()){
Student stu = new Student();
stu.setStuId(rs.getString("学号"));
stu.setStuName(rs.getString("姓名"));
stu.setStuSex(rs.getString("性别"));
stu.setStuBir(rs.getString("出生年月"));
stu.setStuAdd(rs.getString("家庭住址"));
stus.add(stu);
}
}catch(Exception ex){ex.printStackTrace();}
finally{
this.closeConnection();
}
return stus;
}
public void closeConnection(){
try{
if(conn!=null){
conn.close();
conn = null;
}
}catch(Exception ex){ex.printStackTrace();}
}
}
==================================================
再创建一个包servlet。主要是调用DAO来处理数据。并跳转到一个Jsp显示结果
QueryServlet.java
package servlet;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dao.StudentDao;
public class QueryServlet extends HttpServlet {
public QueryServlet() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String sname = request.getParameter("sname");
try{
sname = new String(sname.getBytes("ISO-8859-1"));
}catch(Exception ex){ex.printStackTrace();}
//调用JavaBean查询数据库(Data Access Object dao)
StudentDao studentDao = new StudentDao();
ArrayList stus = studentDao.queryStuByName(sname);
request.setAttribute("stus", stus);
//跳转到另一个Jsp显示结果
ServletContext application = this.getServletContext();
RequestDispatcher rd = application.getRequestDispatcher("/queryResult.jsp");
rd.forward(request,response);
}
public void init() throws ServletException {
// Put your code here
}
}
==============================================================
queryRuselt.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<jsp:directive.page import="po.Student"/>
<!DOCTYPE HTML PUBLIC "-//W 3C //DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'queryForm.jsp' starting page</title>
</head>
<body>
显示结果. <br>
<%
ArrayList stus = (ArrayList)request.getAttribute("stus");
%>
<table bgcolor="#ff80ff">
<tr>
<td>学号</td>
<td>姓名</td>
<td>性别</td>
<td>出生年月</td>
<td>家庭住址</td>
</tr>
<%
for(int i=0;i<stus.size();i++){
Student stu = (Student)stus.get(i);
%>
<tr>
<td><%=stu.getStuId() %></td>
<td><%=stu.getStuName() %></td>
<td><%=stu.getStuSex() %></td>
<td><%=stu.getStuBir() %></td>
<td><%=stu.getStuAdd() %></td>
</tr>
<%
}
%>
</table>
</body>
</html>
//MVC的好处:
数据操作(PO DAO)放在一起,页面显示(JSP)在一起,业务逻辑(servlet)在一起。