简单的Struts应用开发(1)
终于把自己的这个测试做完了. 希望对想学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. 下载) 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" "http://java./dtd/web-app_2_3.dtd"> <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>(未完待续) 简单的Struts应用开发(2)
第二步: 配置数据库 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) { } } (未完待续 简单的Struts应用开发(3)
第四步:建立数据库操作对象 (完成对表的增删修改与查询) 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; } //---------------------------------- } (未完待续) 简单的Struts应用开发(4)
第五步:建立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; } } (未完待续) 简单的Struts应用开发(5)
第六步:建立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> </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"/> </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> 建产一个转向页面 (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" "http://jakarta./struts/dtds/struts-config_1_1.dtd"> <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..... (全文完) |
|