Feng.Li's Java See

          抓緊時間,大步向前。
          隨筆 - 95, 文章 - 4, 評論 - 58, 引用 - 0
          數據加載中……

          漂亮的struts實例

          (mystruts應用)目錄結構
          ?? 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

          第一步: 開發環境配置

          (如果你還沒有相關軟件. 請到http://www.apache.org 下載)

          tomcat5.0 配置? (建立一個 mystruts 應用, 并拷貝相關文件)

          請在你的tomcat安裝目錄中找到\conf\Catalina\localhost 子目錄. 新建 mystruts.xml 文件
          文件內容如下. 在這個文件中. 我們將配置一個聯接池.請把相關的驅動.數據庫用戶,密碼改成你自己的本機配置.
          并把JDBC驅動拷貝一份到 Tomcat 5.0\common\lib 目錄下. 請把 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標記庫的支持)

          <?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>

          第二步: 配置數據庫

          1.首先創建數據聯接bean, 并打包到 ConnectionPool, 它將從我們配置的聯接池中取得可用聯接.

          // 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.創建數據庫.?

          數據庫名: mystruts

          部門表: 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
          ______________________________________________

          (注: 以上字段為了測試方便. 全部使用字符型)


          第三步:? 創建ActionForm? (userActionForm.java)

          ?

          package mystruts;? //請打包到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) {
          ? }
          }


          第四步:建立數據庫操作對象 (完成對表的增刪修改與查詢)

          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)

          這里我們將建產兩個Action .
          ?
          userAction.java 將完成以下工作.
          1.添加(前期數據準備. 主是提取部門資料.并傳遞給adduser.jsp)
          2.修改(前期數據準備)
          3.刪除
          4.查看所有用戶資料.

          user1Action.java 將完成以下工作
          1.添加用戶(對myuser表操作)
          2.修改用戶(對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視圖頁面 (主要有兩個jsp文件. 添加頁面. adduser.jsp 查看頁面 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>&nbsp;</h1>
          <p>
          <html:form action="/user1Action.do" method="POST">
          <html:hidden property="action"/>
          <br>
          部門:
          ?<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"/>&nbsp;</td>
          ??? <td><bean:write name="user" property="user_name"/>&nbsp;</td>
          ??? <td><bean:write name="user" property="dep_name"/>&nbsp;</td>
          ??? <td><bean:write name="user" property="tel"/>&nbsp;</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>

          建產一個轉向頁面 (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>

          運行程序:
          啟動tomcat
          啟動IE? 在地址欄中輸入:http://localhost:8080/mystruts

          OK.....

          posted on 2006-09-27 19:49 小鋒 閱讀(454) 評論(0)  編輯  收藏 所屬分類: J2EE

          主站蜘蛛池模板: 九龙城区| 昆明市| 河曲县| 奇台县| 怀集县| 怀化市| 祁东县| 上虞市| 西平县| 柳河县| 富宁县| 密山市| 柳州市| 榆社县| 兴仁县| 平山县| 峡江县| 融水| 普陀区| 兰州市| 富锦市| 波密县| 丰台区| 多伦县| 绍兴县| 天门市| 麻江县| 赤水市| 石河子市| 马公市| 淮安市| 原阳县| 扬中市| 安溪县| 法库县| 天峻县| 十堰市| 乡宁县| 康马县| 卫辉市| 阜康市|