(mystruts應(yīng)用)目錄結(jié)構(gòu)
?? mystruts
??????? |-WEB-INF
??????? |????? |- lib
??????? |????? |?? |- struts.jar
??????? |????? |- classes
??????? |????? |????? |- ConnectionPool
??????? |????? |????? |??????????? |- getDbConnection.class
??????? |????? |????? |-mystruts
??????? |????? |???????????? |- user1Action.class
??????? |????? |???????????? |- userAction.class
??????? |????? |???????????? |- userActionForm.class
??????? |????? |???????????? |- userdao.class
??????? |????? |-struts-bean.tld
??????? |????? |-struts-config.xml
??????? |????? |-struts-html.tld
??????? |????? |-struts-logic.tld
??????? |????? |-struts-template.tld
??????? |-adduser.jsp
??????? |-index.jsp
??????? |-viewuser.jsp
第一步: 開(kāi)發(fā)環(huán)境配置
(如果你還沒(méi)有相關(guān)軟件. 請(qǐng)到http://www.apache.org 下載)
tomcat5.0 配置? (建立一個(gè) mystruts 應(yīng)用, 并拷貝相關(guān)文件)
請(qǐng)?jiān)谀愕膖omcat安裝目錄中找到\conf\Catalina\localhost 子目錄. 新建 mystruts.xml 文件
文件內(nèi)容如下. 在這個(gè)文件中. 我們將配置一個(gè)聯(lián)接池.請(qǐng)把相關(guān)的驅(qū)動(dòng).數(shù)據(jù)庫(kù)用戶,密碼改成你自己的本機(jī)配置.
并把JDBC驅(qū)動(dòng)拷貝一份到 Tomcat 5.0\common\lib 目錄下. 請(qǐng)把 struts.jar \mystruts\WEB-INF\lib 目錄下.
<Context path="/mystruts" docBase="D:\www\mystruts\mystruts\mystruts" debug="0" privileged="true">
? <Resource name="jdbc/TestDB"
?????????????? auth="Container"
?????????????? type="javax.sql.DataSource"/>
? <ResourceParams name="jdbc/TestDB">
??? <parameter>
????? <name>factory</name>
????? <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
??? </parameter>
??? <parameter>
????? <name>maxActive</name>
????? <value>10</value>
??? </parameter>
??? <parameter>
????? <name>maxIdle</name>
????? <value>5</value>
??? </parameter>
??? <parameter>
????? <name>maxWait</name>
????? <value>10000</value>
??? </parameter>
??? <parameter>
???? <name>username</name>
???? <value>sa</value>
??? </parameter>
??? <parameter>
???? <name>password</name>
???? <value>test</value>
??? </parameter>
??? <parameter>
?????? <name>driverClassName</name>
?????? <value>net.sourceforge.jtds.jdbc.Driver</value>
??? </parameter>
??? <parameter>
????? <name>url</name>
????? <value>jdbc:jtds:sqlserver://192.168.10.223:1433/mystruts</value>
??? </parameter>
? </ResourceParams>
</Context>
WEB-INF/web.xml? (加入struts標(biāo)記庫(kù)的支持)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "<web-app>
? <servlet>
??? <servlet-name>action</servlet-name>
??? <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
??? <init-param>
????? <param-name>debug</param-name>
????? <param-value>2</param-value>
??? </init-param>
??? <init-param>
????? <param-name>config</param-name>
????? <param-value>/WEB-INF/struts-config.xml</param-value>
??? </init-param>
??? <load-on-startup>2</load-on-startup>
? </servlet>
? <servlet-mapping>
??? <servlet-name>action</servlet-name>
??? <url-pattern>*.do</url-pattern>
? </servlet-mapping>
? <taglib>
??? <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
??? <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
? </taglib>
? <taglib>
??? <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
??? <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
? </taglib>
? <taglib>
??? <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
??? <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
? </taglib>
? <taglib>
??? <taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
??? <taglib-location>/WEB-INF/struts-template.tld</taglib-location>
? </taglib>
</web-app>
第二步: 配置數(shù)據(jù)庫(kù)
1.首先創(chuàng)建數(shù)據(jù)聯(lián)接bean, 并打包到 ConnectionPool, 它將從我們配置的聯(lián)接池中取得可用聯(lián)接.
// Java Document
package ConnectionPool;
import javax.naming.*;
import javax.sql.*;
import java.sql.*;
import java.io.*;
import java.util.*;
public class getDbConnection {
?Connection conn;
?Statement stmt;
?ResultSet rs=null;
String foo = "Not Connected";
? int bar = -1;
? public getDbConnection() {
??? try{
????? Context ctx = new InitialContext();
????? if(ctx == null )
????????? throw new Exception("Boom - No Context");
????? DataSource ds =
??????????? (DataSource)ctx.lookup(
?????????????? "java:comp/env/jdbc/TestDB");
????? if (ds != null) {
??????? conn = ds.getConnection();
??????? }
????? }
??? catch(Exception e) {
????? e.printStackTrace();
??? }
?}
public Connection? getCon()
?{
?? return? conn;
?}
public void d_close() throws SQLException
? {
??? if (rs != null) {
????? try { rs.close(); } catch (SQLException e) { ; }
????? rs = null;
??? }
??? if (stmt != null) {
????? try { stmt.close(); } catch (SQLException e) { ; }
????? stmt = null;
??? }
??? if (conn != null) {
????? try { conn.close(); } catch (SQLException e) { ; }
????? conn = null;
??? }
? }
protected void finalize() throws Throwable
? {
?? try { d_close(); } catch (SQLException e) { ; }
? }
}
2.創(chuàng)建數(shù)據(jù)庫(kù).?
數(shù)據(jù)庫(kù)名: mystruts
部門(mén)表: mydep
_______________________________________
dep_id?????????? dep_name
_______________________________________
?1?????????????? dep1
?2?????????????? dep2
?3?????????????? dep3
?4?????????????? dep4
_______________________________________
用戶表: myuser
______________________________________________
user_id???? user_name??? dep???? tel
______________________________________________
?1????????? jack????????? 1????? 0769-2454042
?2????????? max?????????? 2????? 0769-2454043
______________________________________________
(注: 以上字段為了測(cè)試方便. 全部使用字符型)
第三步:? 創(chuàng)建ActionForm? (userActionForm.java)
?
package mystruts;? //請(qǐng)打包到mystruts下.
import org.apache.struts.action.*;
import javax.servlet.http.*;
public class userActionForm extends ActionForm {
? private String action="add";
? private String dep;
? private String tel;
? private String user_id;
? private String user_name;
? public String getAction() {
??? return action;
? }
? public void setAction(String action) {
??? this.action = action;
? }
? public String getDep() {
??? return dep;
? }
? public void setDep(String dep) {
??? this.dep = dep;
? }
? public String getTel() {
??? return tel;
? }
? public void setTel(String tel) {
??? this.tel = tel;
? }
? public String getUser_id() {
??? return user_id;
? }
? public void setUser_id(String user_id) {
??? this.user_id = user_id;
? }
? public String getUser_name() {
??? return user_name;
? }
? public void setUser_name(String user_name) {
??? this.user_name = user_name;
? }
? public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {
??? return null;
? }
? public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {
? }
}
第四步:建立數(shù)據(jù)庫(kù)操作對(duì)象 (完成對(duì)表的增刪修改與查詢)
package mystruts;
import java.sql.*;
import ConnectionPool.*;
import java.util.*;
public class userdao {
? getDbConnection db=null;
? Connection con=null;
? public userdao() {
? }
? //-------------------------------------------------------------------
? public void userInsert(userActionForm uaf1)
? {
?? db=new getDbConnection();
?? con=db.getCon();
?? userActionForm uaf=uaf1;
?? PreparedStatement ps = null;
?? String sql="insert into myuser (user_id,user_name,dep,tel) values(?,?,?,?)";
?? try {
?????? ps = con.prepareStatement(sql);
?????? ps.setString(1,uaf.getUser_id());
?????? ps.setString(2,uaf.getUser_name());
?????? ps.setString(3,uaf.getDep());
?????? ps.setString(4,uaf.getTel());
?????? ps.executeUpdate();
??????? }
??????? catch (SQLException e)
??????? {
???????? System.out.println("sql error");
??????? }
?????? finally
?????? {
??????? try{
?????????????? con.close();
?????????????? db.d_close();
???????????? }
??????? catch(Exception e) {}
??????? }
??? }
?? //---------------------------------------------
?? public void userUpdate(userActionForm uaf1)
?? {
?? db=new getDbConnection();
?? con=db.getCon();
?? userActionForm uaf=uaf1;
?? PreparedStatement ps = null;
?? String sql="update myuser set user_name=?,dep=?,tel=? where user_id=?";
?? try {
????? ps = con.prepareStatement(sql);
????? ps.setString(1,uaf.getUser_name());
????? ps.setString(2,uaf.getDep());
????? ps.setString(3,uaf.getTel());
????? ps.setString(4,uaf.getUser_id());
????? ps.executeUpdate();
?????? }
????? catch (SQLException e)
????? {
?????? System.out.println("sql error");
????? }
???? finally
????? {
????? try{
???????????? con.close();
???????????? db.d_close();
?????????? }
????? catch(Exception e) {}
????? }
? }
?//---------------------------------------------
? public userActionForm getUser(String key)
? {
?? db=new getDbConnection();
?? con=db.getCon();
?? ResultSet rs=null;
?? userActionForm uaf=new userActionForm();
?? PreparedStatement ps = null;
?? String sql="select * from? myuser where user_id=?";
?? try {
???????? ps = con.prepareStatement(sql);
???????? ps.setString(1,key.trim());
???????? rs=ps.executeQuery();
??????? if(rs.next())
?????????? {
??????????? uaf.setUser_id(rs.getString("user_id"));
??????????? uaf.setUser_name(rs.getString("user_name"));
??????????? uaf.setDep(rs.getString("dep"));
??????????? uaf.setTel(rs.getString("tel"));
??????????? uaf.setAction("edit");
?????????? }
??????? }
??????? catch (SQLException e)
??????? {
???????? System.out.println("sql error");
??????? }
?????? finally
?????? {
??????? try{
?????????????? con.close();
?????????????? db.d_close();
???????????? }
??????? catch(Exception e) {}
??????? }
????? System.out.println("mod"+key);
???? return uaf;
??? }
? //----------------------------------------
? public void delUser(String key)
?? {
?? db=new getDbConnection();
?? con=db.getCon();
?? PreparedStatement ps = null;
?? String sql="delete? from? myuser where user_id=?";
?? try {
???????? ps = con.prepareStatement(sql);
???????? ps.setString(1,key.trim());
???????? ps.executeUpdate();
??????? }
??????? catch (SQLException e)
??????? {
???????? System.out.println("sql error");
??????? }
?????? finally
?????? {
??????? try{
?????????????? con.close();
?????????????? db.d_close();
???????????? }
??????? catch(Exception e) {}
??????? }
????? System.out.println("del"+key);
??? }
?? //----------------------------------
? public Collection getAlluser()
? {
?? db=new getDbConnection();
?? con=db.getCon();
?? ResultSet rs=null;
?? userActionForm uaf=new userActionForm();
?? PreparedStatement ps = null;
?? ArrayList rslist = new ArrayList();
?? String sql="select * from myuser u,mydep d where u.dep=d.dep_id";
?? try {
???????? ps = con.prepareStatement(sql);
???????? rs=ps.executeQuery();
??????? while(rs.next())
?????????? {
??????????? HashMap rscol = new HashMap();
??????????? rscol.put("user_id",rs.getString("user_id"));
??????????? rscol.put("user_name",rs.getString("user_name"));
??????????? rscol.put("dep",rs.getString("dep"));
??????????? rscol.put("dep_name",rs.getString("dep_name"));
??????????? rscol.put("tel",rs.getString("tel"));
??????????? rslist.add(rscol);
?????????? }
??????? }
??????? catch (SQLException e)
??????? {
???????? System.out.println("sql error");
??????? }
?????? finally
?????? {
??????? try{
?????????????? con.close();
?????????????? db.d_close();
???????????? }
??????? catch(Exception e) {}
??????? }
???? return rslist;
??? }
?? //----------------------------------
}
第五步:建立Action? (userAction.java)
這里我們將建產(chǎn)兩個(gè)Action .
?
userAction.java 將完成以下工作.
1.添加(前期數(shù)據(jù)準(zhǔn)備. 主是提取部門(mén)資料.并傳遞給adduser.jsp)
2.修改(前期數(shù)據(jù)準(zhǔn)備)
3.刪除
4.查看所有用戶資料.
user1Action.java 將完成以下工作
1.添加用戶(對(duì)myuser表操作)
2.修改用戶(對(duì)myuser表操作)
package mystruts;
import org.apache.struts.action.*;
import javax.servlet.http.*;
import mystruts.*;
import java.util.*;
import java.sql.*;
import ConnectionPool.*;
public class userAction extends Action {
? public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)? throws Exception
? {
?? userdao dao=new userdao();
?? HttpServletRequest request=httpServletRequest;
?? String action;
?? if(request.getParameter("action").equals("") || request.getParameter("action")==null)
?? {
???? action="add";
?? }
?? else
?? {
???? action=request.getParameter("action");
?? }
? if(action.equals("add"))
? {
??? request.setAttribute("dep",this.getDep());
??? return (actionMapping.findForward("add"));
? }
? if(action.equals("edit"))
? {
?? String key=request.getParameter("key");
?? request.setAttribute("dep",this.getDep());
?? request.setAttribute("userActionForm",dao.getUser(key));
?? return (actionMapping.findForward("add"));
? }
? if(action.equals("del"))
??? {
????? String key=request.getParameter("key");
????? dao.delUser(key);
???? return (actionMapping.findForward("delview"));
??? }
? if(action.equals("view"))
??? {
???? request.setAttribute("rs",dao.getAlluser());
???? return (actionMapping.findForward("view"));
??? }
?? return null;
? }
? //---------------------------------------------
? public? Collection getDep()
? {
?? getDbConnection db=new getDbConnection();
?? Connection con=db.getCon();
?? ResultSet rs=null;
?? PreparedStatement ps = null;
?? ArrayList rslist = new ArrayList();
?? String sql="select * from mydep";
?? try {
???????? ps = con.prepareStatement(sql);
???????? rs=ps.executeQuery();
??????? while(rs.next())
?????????? {
??????????? HashMap rscol = new HashMap();
??????????? rscol.put("id",rs.getString("dep_id"));
??????????? rscol.put("name1",rs.getString("dep_name"));
??????????? rslist.add(rscol);
?????????? }
??????? }
??????? catch (SQLException e)
??????? {
???????? System.out.println("sql error");
??????? }
?????? finally
?????? {
??????? try{
?????????????? con.close();
?????????????? db.d_close();
???????????? }
??????? catch(Exception e) {}
??????? }
???? return rslist;
?? }
}
?
package mystruts;
import org.apache.struts.action.*;
import javax.servlet.http.*;
public class user1Action extends Action {
? public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception
? {
??? userActionForm uaf = (userActionForm) actionForm;
??? if(uaf.getAction().equals("add"))
??? {
????? new userdao().userInsert(uaf);
????? return (actionMapping.findForward("view"));
??? }
??? if(uaf.getAction().equals("edit"))
??? {
????? new userdao().userUpdate(uaf);
????? return (actionMapping.findForward("view"));
??? }
? return null;
? }
}
第六步:建立JSP視圖頁(yè)面 (主要有兩個(gè)jsp文件. 添加頁(yè)面. adduser.jsp 查看頁(yè)面 viewuser.jsp)
adduser.jsp
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ page contentType="text/html; charset=gb2312" %>
<html:html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>
adduser
</title>
</head>
<body>
<h1> </h1>
<p>
<html:form action="/user1Action.do" method="POST">
<html:hidden property="action"/>
<br>
部門(mén):
?<html:select property="dep">
???? <html:options collection="dep" property="id" labelProperty="name1"/>
?</html:select>
<br>
ID:
<logic:equal name="userActionForm" property="action" scope="request" value="add">
<html:text property="user_id"/>
</logic:equal>
<logic:equal name="userActionForm" property="action" scope="request" value="edit">
<html:text property="user_id" readonly="true"/>
</logic:equal>
<br>
名字:<html:text property="user_name"/>
<br>
電話:<html:text property="tel"/>
<br>
<html:submit property="submit" value="Submit"/><br>
<html:reset value ="Reset"/>
</html:form>
</body>
</html:html>
viewuser.jsp
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ page contentType="text/html; charset=GBK" %>
<html:html>
<head>
<title>
viewuser
</title>
</head>
<body>
<div align="center"><a href="userAction.do?action=add">add </a></div>
<table width="60%" border="1" align="center">
? <tr bgcolor="#CCCCCC">
??? <td>ID</td>
??? <td>user_name</td>
??? <td>dep</td>
??? <td>tel</td>
??? <td>modify</td>
??? <td>del</td>
? </tr>
? <logic:iterate name="rs" id="user" scope="request" type="java.util.HashMap">
? <tr>
??? <td><bean:write name="user" property="user_id"/> </td>
??? <td><bean:write name="user" property="user_name"/> </td>
??? <td><bean:write name="user" property="dep_name"/> </td>
??? <td><bean:write name="user" property="tel"/> </td>
??? <td><a href="userAction.do?action=edit&key=<bean:write name="user" property="user_id"/>">modify</a></td>
??? <td><a href="userAction.do?action=del&key=<bean:write name="user" property="user_id"/>">del</a></td>
? </tr>
? </logic:iterate>
</table>
</body>
</html:html>
建產(chǎn)一個(gè)轉(zhuǎn)向頁(yè)面 (index.jsp)
<%@ page contentType="text/html; charset=gb2312" %>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<% response.sendRedirect("userAction.do?action=view"); %>
</body>
</html>
遞七步:建立struts配置文件 (WEB-INF/config-struts.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "<struts-config>
? <form-beans>
??? <form-bean name="userActionForm" type="mystruts.userActionForm" />
? </form-beans>
? <action-mappings>
??? <action type="mystruts.userAction" scope="request" path="/userAction">
????? <forward name="view" path="/viewuser.jsp" />
????? <forward name="add" path="/adduser.jsp" />
????? <forward name="delview" path="/userAction.do?action=view" />
??? </action>
??? <action name="userActionForm" type="mystruts.user1Action" scope="request" path="/user1Action">
????? <forward name="view" path="/userAction.do?action=view" />
??? </action>
? </action-mappings>
</struts-config>
運(yùn)行程序:
啟動(dòng)tomcat
啟動(dòng)IE? 在地址欄中輸入:http://localhost:8080/mystruts
OK.....