WEB開發(fā) de 點(diǎn)滴

          by sanwish

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            38 隨筆 :: 0 文章 :: 4 評論 :: 0 Trackbacks
          利用struts自帶的數(shù)據(jù)連接池連接數(shù)據(jù)庫
          zhanggok ()???? 2004-03-28 01:44:39 在 Java / 框架、開源 提問
          這是我從網(wǎng)上看到是但有一點(diǎn)不明白??
          ? dataSource=getDataSource(request);??
          ? 這里的request是HttpServletRequest?? request??
          ? 嗎.這樣就以得到數(shù)據(jù)源嗎?不明白??
          ? struts自帶的數(shù)據(jù)連接池在struts-config.xml中可以設(shè)置??
          ? 本人的設(shè)置如下:??
          ? <data-sources>??
          ???
          ? <data-source?? type="org.apache.commons.dbcp.BasicDataSource">??
          ???
          ? <set-property??
          ???
          ? property="description"??
          ???
          ? value="Airline?? DB?? Connection?? config"/>??
          ???
          ? <set-property??
          ???
          ? property="driverClassName"??
          ???
          ? value="com.mysql.jdbc.Driver"/>??
          ???
          ? <set-property??
          ???
          ? property="maxCount"??
          ???
          ? value="10"/>??
          ???
          ? <set-property??
          ???
          ? property="password"??
          ???
          ? value=""/>??
          ???
          ? <set-property??
          ???
          ? property="url"??
          ???
          ? value="jdbc:mysql://localhost/airline"/>??
          ???
          ? <set-property??
          ???
          ? property="username"??
          ???
          ? value="root"/>??
          ???
          ? <set-property????
          ???
          ? property="maxWait"????
          ???
          ? value="5000"?? />??
          ???
          ? <set-property??
          ???
          ? property="defaultAutoCommit"??
          ???
          ? value="false"?? />??
          ???
          ? <set-property??
          ???
          ? property="defaultReadOnly"??
          ???
          ? value="false"?? />??
          ???
          ? </data-source>??
          ???
          ? </data-sources>??
          ???
          ? 這些基本的,我想大家都應(yīng)該看得懂吧??
          ? 然后就是來驗證我們的數(shù)據(jù)庫連接了??
          ? 這里用一個login來測試??
          ? 第一個是LoginForm??
          ? package?? com.airline;??
          ???
          ? import?? javax.servlet.http.HttpServletRequest;??
          ? import?? org.apache.struts.action.ActionError;??
          ? import?? org.apache.struts.action.ActionErrors;??
          ? import?? org.apache.struts.action.ActionForm;??
          ? import?? org.apache.struts.action.ActionMapping;??
          ???
          ? public?? final?? class?? LoginForm?? extends?? ActionForm?? {??
          ? private?? String?? userName;??
          ? private?? String?? password;??
          ???
          ? public?? String?? getUserName()?? {??
          ? return?? userName;??
          ? }??
          ? public?? void?? setUserName(String?? userName)?? {??
          ? this.userName?? =?? userName;??
          ? }??
          ? public?? String?? getPassword()?? {??
          ? return?? password;??
          ? }??
          ? public?? void?? setPassword(String?? password)?? {??
          ? this.password?? =?? password;??
          ? }??
          ? public?? void?? reset(ActionMapping?? mapping,?? HttpServletRequest?? request)?? {??
          ? password?? =?? null;??
          ? userName?? =?? null;??
          ? }??
          ? public?? ActionErrors?? validate(ActionMapping?? mapping,?? HttpServletRequest?? request)?? {??
          ? ActionErrors?? errors?? =?? new?? ActionErrors();??
          ? if?? ((userName==null)?? ||?? (userName.length()?? <?? 1))??
          ? errors.add("userName",?? new?? ActionError("error.missing.userName"));??
          ? if?? ((password==null)?? ||?? (password.length()?? <?? 1))??
          ? errors.add("password",?? new?? ActionError("error.missing.password"));??
          ? return?? errors;??
          ? }??
          ???
          ? }??
          ? 這個java就是給將來我們要提交的數(shù)據(jù)一個容器,就像“裝水的玻璃瓶”一樣,這是一個“瓶子”??
          ? 接下來的就是LoginAction??
          ? package?? com.airline;??
          ???
          ? import?? java.io.IOException;??
          ? import?? javax.servlet.RequestDispatcher;??
          ? import?? javax.servlet.ServletException;??
          ? import?? javax.servlet.http.HttpServletRequest;??
          ? import?? javax.servlet.http.HttpSession;??
          ? import?? javax.servlet.http.HttpServletResponse;??
          ? import?? javax.servlet.http.HttpServlet;??
          ? import?? org.apache.struts.action.Action;??
          ? import?? org.apache.struts.action.ActionForward;??
          ? import?? org.apache.struts.action.ActionForm;??
          ? import?? org.apache.struts.action.ActionMapping;??
          ? import?? org.apache.struts.action.ActionError;??
          ? import?? org.apache.struts.action.ActionErrors;??
          ? import?? java.sql.ResultSet;??
          ? import?? java.sql.Connection;??
          ? import?? java.sql.Statement;??
          ? import?? java.sql.SQLException;??
          ? import?? javax.sql.DataSource;??
          ???
          ???
          ? public?? final?? class?? LoginAction?? extends?? Action?? {??
          ? public?? ActionForward?? execute(ActionMapping?? mapping,??
          ? ActionForm?? form,?? HttpServletRequest?? request,?? HttpServletResponse?? response)??
          ? throws?? IOException,?? ServletException?? {??
          ???
          ? String?? userName?? =?? ((LoginForm)?? form).getUserName();??
          ? String?? password?? =?? ((LoginForm)?? form).getPassword();??
          ? DataSource?? dataSource;??
          ? Connection?? con=null;??
          ? Statement?? stmt;??
          ? ResultSet?? rs;??
          ? String?? usn="",pwd="",result="";??
          ???
          ? try{??
          ? dataSource=getDataSource(request);??
          ? con=dataSource.getConnection();??
          ? stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);??
          ? rs=stmt.executeQuery("select?? *?? from?? login?? where?? username='"+userName+"'");??
          ???
          ? while(rs.next()){??
          ? usn=rs.getString(2);??
          ? pwd=rs.getString(3);??
          ? }??
          ???
          ? }catch(SQLException?? sqle){??
          ? getServlet().log("Connection.process",sqle);??
          ???
          ? }finally{??
          ? try{??
          ? con.close();??
          ? }catch(SQLException?? e){??
          ? getServlet().log("Connection.close",e);??
          ? }??
          ? }??
          ? if?? (userName!=null?? &&?? password!=null?? &&????
          ? password.equals(pwd))?? {??
          ? HttpSession?? session?? =?? request.getSession();??
          ? session.setAttribute("loggedIn",?? "1");??
          ? return?? mapping.findForward("success");??
          ? }??
          ? else?? {??
          ? ActionErrors?? errors?? =?? new?? ActionErrors();??
          ? errors.add(ActionErrors.GLOBAL_ERROR,????
          ? new?? ActionError("error.login.failed"));??
          ? saveErrors(request,?? errors);??
          ? return?? (new?? ActionForward(mapping.getInput()));??
          ? }??
          ? }??
          ? }??
          ? 這個java就是來具體處理我們剛才放在"瓶子"里的東西,它就會連接到MYSQL數(shù)據(jù)庫里去查找相應(yīng)的數(shù)據(jù),然后驗證一下。??
          ???
          ? 接下來,我們就要在struts-config.xml中對剛才的兩個java作一下設(shè)置了??
          ? 首先是在<Action-mapping>中加入如下的代碼??
          ? <action?? path="/login"????
          ? type="com.airline.LoginAction"????
          ? name="loginForm"??
          ? scope="request"??
          ? input="/login.jsp">??
          ? <forward?? name="success"?? path="/mainMenu.jsp"/>??
          ? </action>??
          ? 然后在<form-bean>中加入??
          ? <form-bean?? name="loginForm"?? type="com.airline.LoginForm"/>??
          ? 最后再來做一下jsp頁面??
          ? login.jsp??
          ? <%@?? taglib?? uri="/WEB-INF/struts-html.tld"?? prefix="html"?? %>??
          ? <html:html?? locale="true">??
          ? <head>??
          ? <title>Login?? Page</title>??
          ? <html:base/>??
          ? </head>??
          ? <body>??
          ???
          ? <html:errors/>??
          ???
          ? Please?? enter?? your?? user?? name?? and?? password??
          ? <br>??
          ???
          ? <html:form?? action="/login"?? focus="userName">??
          ? <table>??
          ? <tr>??
          ? <td>User?? Name:</td>??
          ? <td><html:text?? property="userName"/>??
          ? </tr>??
          ? <tr>??
          ? <td>Password:</td>??
          ? <td><html:password?? property="password"?? redisplay="false"/>??
          ? </tr>??
          ? <tr>??
          ? <td?? colspan=2?? align=right><html:submit?? property="submit"?? value="Login"/></td>??
          ? </tr>??
          ? </table>??
          ? </html:form>??
          ???
          ? </body>??
          ? </html:html>??
          ???
          ? mainMenu.jsp??
          ? <%??
          ? if?? (session.getAttribute("loggedIn")==null)?? {??
          ? %>??
          ? <jsp:forward?? page="login.jsp"/>??
          ? <%??
          ? }??
          ? else?? {??
          ? %>????
          ???
          ? <html>??
          ? <head>??
          ? <title>Main?? Menu</title>??
          ? </head>??
          ? <body>??
          ???
          ? <b>Main?? Menu</b>??
          ? <br><a?? href=logout.do>Log?? Out</a>??
          ? <br><a?? href=viewSecret.do>View?? Company?? Secrets</a>??
          ???
          ? </body>??
          ? </html>??
          ???
          ? <%??
          ? }??
          ? %>??
          ???
          ? 在classes下找到application.properties??
          ? 加入如下代碼:??
          ? errors.header=<b>Error(s)!!!</b><ul>??
          ? errors.footer=</ul><hr>??
          ? error.missing.userName=<li>A?? user?? name?? was?? not?? found.</li>??
          ? error.missing.password=<li>A?? password?? was?? not?? found.</li>??
          ? error.login.failed=<li>Incorrect?? user?? name?? and/or?? password.</li>??
          ? 這些是用來顯示出錯信息的。??
          ? 好了,打開Tomcat服務(wù)器,來測試一下吧
          posted on 2008-11-07 11:21 sanwish 閱讀(269) 評論(0)  編輯  收藏 所屬分類: Struts

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 鄂州市| 新竹县| 方城县| 乐至县| 固阳县| 勃利县| 厦门市| 绍兴市| 遵化市| 布尔津县| 洪泽县| 专栏| 阳信县| 宜兴市| 梁河县| 准格尔旗| 金昌市| 分宜县| 健康| 安达市| 兴义市| 西青区| 南昌县| 凤冈县| 咸阳市| 平利县| 万载县| 宿迁市| 瓦房店市| 东辽县| 山西省| 连云港市| 东台市| 青田县| 无极县| 安宁市| 都昌县| 西宁市| 绥宁县| 白城市| 青铜峡市|