WEB開發 de 點滴

          by sanwish

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            38 隨筆 :: 0 文章 :: 4 評論 :: 0 Trackbacks
          利用struts自帶的數據連接池連接數據庫
          zhanggok ()???? 2004-03-28 01:44:39 在 Java / 框架、開源 提問
          這是我從網上看到是但有一點不明白??
          ? dataSource=getDataSource(request);??
          ? 這里的request是HttpServletRequest?? request??
          ? 嗎.這樣就以得到數據源嗎?不明白??
          ? struts自帶的數據連接池在struts-config.xml中可以設置??
          ? 本人的設置如下:??
          ? <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>??
          ???
          ? 這些基本的,我想大家都應該看得懂吧??
          ? 然后就是來驗證我們的數據庫連接了??
          ? 這里用一個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就是給將來我們要提交的數據一個容器,就像“裝水的玻璃瓶”一樣,這是一個“瓶子”??
          ? 接下來的就是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數據庫里去查找相應的數據,然后驗證一下。??
          ???
          ? 接下來,我們就要在struts-config.xml中對剛才的兩個java作一下設置了??
          ? 首先是在<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服務器,來測試一下吧
          posted on 2008-11-07 11:21 sanwish 閱讀(271) 評論(0)  編輯  收藏 所屬分類: Struts

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


          網站導航:
           
          主站蜘蛛池模板: 都匀市| 资溪县| 普陀区| 尉犁县| 衡水市| 久治县| 寿宁县| 肥西县| 武定县| 交口县| 蚌埠市| 堆龙德庆县| 兰坪| 正阳县| 昆明市| 小金县| 安塞县| 固原市| 岐山县| 资阳市| 资源县| 青浦区| 卢湾区| 克什克腾旗| 游戏| 阳泉市| 大竹县| 淮阳县| 丹阳市| 阿尔山市| 盐池县| 岳阳县| 宕昌县| 临邑县| 临江市| 周口市| 大渡口区| 南京市| 策勒县| 屯门区| 天祝|