还是以查询学生为例
==================================================
建一个包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();}
}
}
==================================================
增加Struts支持
提交queryForm中的表单给ActionServlet,ActionServlet将数据给ActionForm.
,ActionFrom将数据打包交Action处理。
queryForm.java
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W 3C //DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'queryForm.jsp' starting page</title>
</head>
<body>
查询表单. <br>
<form action="/aaa/query.do" method="post">
请您输入学生姓名:<input name="sname">
<input type="submit" value="模糊查询">
</form>
</body>
</html>
===================================================
QueryForm.java
package prj2_1;
import org.apache.struts.action.ActionForm;
//ActionForm:容纳表单提交的值
//1:必须继承 org.apache.struts.action.ActionForm
//2:必须编写和表单元素同名的属性
//3:必须在Struts配置文件中进行注册
public class QueryForm extends ActionForm{
public QueryForm(){
System.out.println("QueryForm构造函数");
}
private String sname;
public String getSname() {
return sname;
}
public void setSname(String sname) {
System.out.println("QueryForm setSname");
this.sname = sname;
}
}
===================================================
QueryAction.java
package prj2_1;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import dao.StudentDao;
//Action:负责接受ActionForm的数据,处理
//1:必须继承org.apache.struts.action.Action
//2:重写execute方法来处理业务逻辑
//3:将这个类在配置文件中注册
public class QueryAction extends Action{
public QueryAction(){
System.out.println("QueryAction构造函数");
}
//ActionForward:封装了跳转目标的路径
//mapping:访问配置文件
//form:传过来的ActionForm对象
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
QueryForm queryForm = (QueryForm)form;
String sname = queryForm.getSname();
//String sname = request.getParameter("sname");
sname = new String(sname.getBytes("ISO-8859-1"));
StudentDao studentDao = new StudentDao();
ArrayList stus = studentDao.queryStuByName(sname);
request.setAttribute("stus", stus);
//跳转
//ActionForward af = new ActionForward("/queryResult.jsp");
ActionForward af = mapping.findForward("RESULT");
return af;
}
}
====================================
Struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<!-- 在此注册ActionForm -->
<form-beans>
<!-- name:名称 type:类路径 -->
<form-bean name="queryForm" type="prj2_1.QueryForm"></form-bean>
</form-beans>
<global-exceptions />
<!-- 设置URL逻辑名称(全局,任意的Action都可以识别到)-->
<global-forwards>
<forward name="RESULT" path="/queryResult.jsp"></forward>
</global-forwards>
<!-- 注册Action -->
<action-mappings>
<!-- type:类路径; name:相应的ActionForm的名称; path:客户端提交到服务器端时指定的路径 -->
<action name="queryForm" path="/query" type="prj2_1.QueryAction">
<!-- 设置URL逻辑名称(局部,只有这个Action可以识别到)-->
<forward name="RESULT" path="/queryResult.jsp"></forward>
</action>
</action-mappings>
<message-resources parameter="prj2_1.ApplicationResources" />
</struts-config>
==========================================
queryRuslt.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>