posts - 495,comments - 227,trackbacks - 0
          如果您按照上篇文章配置成功,可以進行開發(fā)簡單的J2EE項目。
          開發(fā)前準備:
          ??? 1、新建項目包:如下圖:
          ???????? project1.JPG
          Dao:數(shù)據(jù)層;service:邏輯層;web:web展現(xiàn)層。
          2、建立好三層架構(gòu),部署好包名。建立一個jsp文件,取名為:login.jsp
          代碼如下:
          <%@?taglib?uri="http://struts.apache.org/tags-bean"?prefix="bean"?%>
          <%@?taglib?uri="http://struts.apache.org/tags-html"?prefix="html"?%>
          <%@?taglib?uri="http://struts.apache.org/tags-logic"?prefix="logic"?%>
          <%@?taglib?uri="http://struts.apache.org/tags-tiles"?prefix="tiles"%>?
          <HTML>
          <HEAD>
          <TITLE>test<TITLE>
          <HEAD>
          <BODY>
          <html:form?action="/login"?method="post">
          ?用戶名:
          <html:text?property="username"?size="15"/>?<br>
          ?密??碼:
          <html:password?property="password"?size="15"/><br>
          ?
          <html:submit?property="submit1"?style="FONT-WEIGHT:bold;COLOR:red">
          ??????????登??錄
          <html:submit>
          ?
          <html:form>
          ?
          <BODY>
          ?
          <HTML>

          3、配置struts-config.xml文件;建立action、formbean;
          改配置可以自動生成,使用eclipse進行自動生成,在建立時,如下圖,可直接生成對應(yīng)的action類和formbean類。struts-config.JPG
          ?1?<?xml?version="1.0"?encoding="UTF-8"?>
          ?2?<!DOCTYPE?struts-config?PUBLIC?"-//Apache?Software?Foundation//DTD?Struts?Configuration?1.1//EN"?"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
          ?3?
          ?4?<struts-config>
          ?5?????<data-sources?/>
          ?6?????<form-beans>
          ?7?????????<form-bean?name="LoginForm"?type="com.test.web.form.LoginForm"?/>
          ?8?
          ?9?????</form-beans>
          10?
          11?????<global-exceptions?/>
          12?????<global-forwards?/>
          13?????<action-mappings>
          14?????????<action?attribute="LoginForm"?input="/login.jsp"?name="LoginForm"?path="LoginAction"?scope="request"?type="com.test.web.action.LoginAction" validate="true">
          15?????????????<forward?name="faile"?path="faile.jsp"?/>
          16?????????????<forward?name="success"?path="success.jsp"?/>
          17?????????</action>
          18?
          19?????</action-mappings>
          20?
          21?????<message-resources?parameter="ApplicationResources"?/>
          22?</struts-config>

          對應(yīng)生成的formbean如下代碼所示:
          ?1?import?javax.servlet.http.HttpServletRequest;
          ?2?import?org.apache.struts.action.ActionErrors;
          ?3?import?org.apache.struts.action.ActionForm;
          ?4?import?org.apache.struts.action.ActionMapping;
          ?5?
          ?6??/**?
          ?7???*?MyEclipse?Struts
          ?8???*?Creation?date:?11-10-2005
          ?9???*?
          10???*?XDoclet?definition:
          11???*?@struts.form?name="LoginForm"
          12???*/
          13??public?class?LoginForm?extends?ActionForm?{
          14??
          15??????/**?password?property?*/
          16??????private?String?password;
          17??
          18??????/**?username?property?*/
          19??????private?String?username;
          20??
          21??
          22??????/**?
          23???????*?Method?validate
          24???????*?@param?mapping
          25???????*?@param?request
          26???????*?@return?ActionErrors
          27???????*/
          28??????public?ActionErrors?validate(
          29??????????ActionMapping?mapping,
          30??????????HttpServletRequest?request)?{
          31??????????
          32??????????/**對頁面提交的元素進行驗證,根據(jù)需要進行驗證:在struts-config.xml中的 action-mapping配置設(shè)置validate="true"
          33????????????????*?以下驗證才會在頁面加載時生效.
          34?????????????????*/
          35????????????????ActionErrors?errors?=?new?ActionErrors();
          36???????????????if(username==null||username.equals(""))
          37???????????????{
          38????????????????errors.add("username",new?ActionMessage("username.errors"));
          39???????????????????????????return?errors;
          40????????????????}
          41????????????????if(password==null||password.equals(""))
          42???????????????{
          43?????????????????errors.add("password",new?ActionMessage("password.errors"));
          44????????????????????????????return?errors;
          45???????????????}
          46?????????????????return?errors;
          47??????}
          48??
          49??????/**?
          50???????*?Method?reset
          51???????*?@param?mapping
          52???????*?@param?request
          53???????*/
          54??????public?void?reset(ActionMapping?mapping,?HttpServletRequest?request)?{
          55??
          56??
          57??????}
          58??
          59??????/**?
          60???????*?Returns?the?password.
          61???????*?@return?String
          62???????*/
          63??????public?String?getPassword()?{
          64??????????return?password;
          65??????}
          66??
          67??????/**?
          68???????*?Set?the?password.
          69???????*?@param?password?The?password?to?set
          70???????*/
          71??????public?void?setPassword(String?password)?{
          72??????????this.password?=?password;
          73??????}
          74??
          75??????/**?
          76???????*?Returns?the?username.
          77???????*?@return?String
          78???????*/
          79??????public?String?getUsername()?{
          80??????????return?username;
          81??????}
          82??
          83??????/**?
          84???????*?Set?the?username.
          85???????*?@param?username?The?username?to?set
          86???????*/
          87??????public?void?setUsername(String?username)?{
          88??????????this.username?=?username;
          89??????}
          90??
          91?}
          FormBean中驗證后的提示需要在ApplicationResources_zh_CN.properties中配置提示錯誤信息.
          1?username.null.error=\u5462\u79f0\u4e0d\u80fd\u4e3a\u7a7a
          2?password.null.error=\u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a
          下面我們需要對WEB展現(xiàn)中對Action進行配置;我們在這里主要是針對登錄進行開發(fā).因此在action中需要完成以下步驟:
          1、登錄驗證;驗證用戶名是否存在。驗證該用戶的密碼是否正確。
          2、增加cookie
          3、提示登錄成功。
          在進行Action類的編寫過程中,首先我們需要考慮到對數(shù)據(jù)的操作有如下步驟。
          1、驗證用戶名是否存在,我們在service層需要提供一個接口:
          1?Public?boolean?isExist(String?user);
          來判斷用戶名是否存在,同時要考慮該用戶名對應(yīng)的密碼是否正確,需要提供接口:
          1?Public?UserBasicInfo?findByUser(String?user);
          通過用戶名來查找相關(guān)數(shù)據(jù)。
          在Action中,我們同時要判斷根據(jù)用戶查找的用戶密碼是否正確。如果正確,增加cookie。并返回正常登錄頁面。如果用戶不存在、該用戶輸入的密碼與數(shù)據(jù)庫中的密碼不相符合。則在配置文件ApplicationResources_zh_CN.properties中,進行設(shè)置提示報錯內(nèi)容。并在頁面中顯示。
          具體Action代碼如下:
          ?
          ??1?public?ActionForward?execute(
          ??2?????????ActionMapping?mapping,
          ??3?????????ActionForm?form,
          ??4?????????HttpServletRequest?request,
          ??5?????????HttpServletResponse?response)?{
          ??6?????????ActionMessages?errors?=?new?ActionMessages();
          ??7?????????/**
          ??8??????????*?取得登錄用戶名與密碼
          ??9??????????*/
          ?10?????????LoginForm?lf=(LoginForm)form;
          ?11?????????UserBasicInfoMgr?uu?=?(UserBasicInfoMgr)getBean("userBasicInfoManager");
          ?12?????????/**
          ?13??????????*?驗證用戶名是否存在
          ?14??????????*/
          ?15?????????if(uu.isExists(lf.getUsername()))
          ?16?????????{
          ?17?????????????/**
          ?18??????????????*?驗證該用戶密碼是否正確
          ?19??????????????*/
          ?20?????????????if(uu.getBasicInfoByName(lf.getUsername()).getUserpwd().equals(StringUtil.encodePassword(lf.getPassword().trim(),"MD5")))
          ?21?????????????{
          ?22?????????????????/**
          ?23??????????????????*?用戶狀態(tài)為新增未激活,返回登錄頁面。不允許登錄。
          ?24??????????????????*/
          ?25?????????????????if(uu.getBasicInfoByName(lf.getUsername()).getUserstatus().toString().equals("1"))
          ?26?????????????????{
          ?27?????????????????????errors.add("useract",new?ActionMessage("user.activate.error"));
          ?28?????????????????????saveErrors(request,errors);
          ?29?????????????????????return?mapping.findForward("relogin");
          ?30?????????????????}
          ?31?????????????????/**
          ?32??????????????????*?用戶狀態(tài)為新增待核,返回登錄頁面。不允許登錄。
          ?33??????????????????*/
          ?34?????????????????if(uu.getBasicInfoByName(lf.getUsername()).getUserstatus().toString().equals("3"))
          ?35?????????????????{
          ?36?????????????????????errors.add("usercheck",new?ActionMessage("user.check.error"));
          ?37?????????????????????saveErrors(request,errors);
          ?38?????????????????????return?mapping.findForward("relogin");
          ?39?????????????????}
          ?40?????????????????/**
          ?41??????????????????*?用戶狀態(tài)為暫時鎖定,返回登錄頁面。不允許登錄。
          ?42??????????????????*/
          ?43?????????????????if(uu.getBasicInfoByName(lf.getUsername()).getUserstatus().toString().equals("5"))
          ?44?????????????????{
          ?45?????????????????????errors.add("userlock",new?ActionMessage("user.lock.error"));
          ?46?????????????????????saveErrors(request,errors);
          ?47?????????????????????return?mapping.findForward("relogin");
          ?48?????????????????}
          ?49?????????????????/**
          ?50??????????????????*?用戶狀態(tài)為已刪除,返回登錄頁面。不允許登錄。
          ?51??????????????????*/
          ?52?????????????????if(uu.getBasicInfoByName(lf.getUsername()).getUserstatus().toString().equals("6"))
          ?53?????????????????{
          ?54?????????????????????errors.add("userdel",new?ActionMessage("user.del.error"));
          ?55?????????????????????saveErrors(request,errors);
          ?56?????????????????????return?mapping.findForward("relogin");
          ?57?????????????????}
          ?58???????????????????/**
          ?59??????????????????*?判斷cookie時間。并保存cookie
          ?60??????????????????*/
          ?61?????????????????Cookie?cookies?=?new?Cookie("username",?lf.getUsername());
          ?62?????????????????cookies.setPath("/");
          ?63?????????????????if(lf.getCookieDate()?!=?null)
          ?64?????????????????{
          ?65?????????????????????if(lf.getCookieDate().equals("0"))
          ?66?????????????????????????cookies.setMaxAge(-1);
          ?67?????????????????????if(lf.getCookieDate().equals("1"))
          ?68?????????????????????????cookies.setMaxAge(0x15180);
          ?69?????????????????????if(lf.getCookieDate().equals("2"))
          ?70?????????????????????????cookies.setMaxAge(0x278d00);
          ?71?????????????????????if(lf.getCookieDate().equals("3"))
          ?72?????????????????????????cookies.setMaxAge(0x1e13380);
          ?73?????????????????}
          ?74?????????????????response.addCookie(cookies);
          ?75?????????????????if(!cookies.getValue().equals(uu.getBasicInfoByName(lf.getUsername()).getUseremail()))
          ?76?????????????????????return?mapping.findForward("relogin");
          ?77?????????????????CoreUserbasicinfo?cub?=?uu.getBasicInfoByName(lf.getUsername());
          ?78?????????????????cub.setLastipaddress(request.getRemoteAddr());
          ?79?????????????????cub.setLastlogindate(new?Date());
          ?80?????????????????uu.regUserBasicInfo(cub);
          ?81?????????????????String?username?=?cookies.getValue();
          ?82?????????????????HttpSession?session?=?request.getSession(false);
          ?83?????????????????if(session?==?null)
          ?84?????????????????????session?=?request.getSession(true);
          ?85?????????????????if(username?!=?null?&&?!username.equals(""))
          ?86?????????????????{
          ?87?????????????????????onLineUser?on?=?onLineUser.getInstance();
          ?88?????????????????????if(!on.existUser(username))
          ?89?????????????????????????session.setAttribute(username,?on);
          ?90?????????????????}
          ?91?????????????????/**
          ?92??????????????????*?傳遞參數(shù)用戶id
          ?93??????????????????*/
          ?94?????????????????request.setAttribute("uid",cub.getUserid());
          ?95?????????????????/**
          ?96??????????????????*?登錄成功,第一次登錄,需要填寫詳細資料。
          ?97??????????????????*/
          ?98?????????????????if(cub.getActsetting()==null||cub.getActsetting().equals(""))
          ?99?????????????????{
          100?????????????????????return?mapping.findForward("login");
          101?????????????????}
          102?????????????????return?mapping.findForward("index");
          103?????????????}else{
          104?????????????????errors.add("userpwderror",?new?ActionMessage("password.error"));
          105?????????????????saveErrors(request,?errors);
          106?????????????????return?mapping.findForward("relogin");
          107?????????????}
          108?????????}else{
          109??????????????errors.add("usernoterror",?new?ActionMessage("username.not.error"));
          110??????????????saveErrors(request,?errors);
          111??????????????return?mapping.findForward("relogin");
          112?????????}
          113?
          114?????}
          首先謝謝各位的關(guān)注,因最近項目比較緊張,一直沒有更新該文章,有點對不住了。
          下面我將service層的實現(xiàn)與Dao層的實現(xiàn)與配置寫上。各位自己參考吧。
          service接口實現(xiàn)
          1?public?boolean?isExists(String?userEmail)?{
          2?
          3?????????if?(userBasicInfoDao.findByUserEmail(userEmail).size()?==?0)
          4?????????????return?false;
          5?????????else
          6?????????????return?true;
          7?????}

          通過service層調(diào)用Dao層接口,進行判斷用戶是否存在。
          Dao接口實現(xiàn):

          1?public?List?findByUserEmail(String?userEmail)?{
          2?
          3?????????return?getHibernateTemplate().find(
          4?????????????????"from?CoreUserbasicinfo?cc?where?cc.useremail=?",?userEmail);
          5?
          6?????}

          接下來,我們就需要配置spring的配置文件
          applicationContext-service.xml

          ?1?<bean?id="userBasicInfoManager"?parent="txProxyTemplate">
          ?2?????????<property?name="target">
          ?3?
          ?4?????????????<bean
          ?5?????????????????class="包路徑.service.Impl.UserBasicInfoMgrImpl">
          ?6?????????????????<property?name="userBasicInfoDao">
          ?7?????????????????????<ref?bean="UserBasicInfoDao"?/>
          ?8?????????????????</property>
          ?9?????????????????<property?name="mailsender">
          10?????????????<ref?bean="mailSender"?/>
          11?????????</property>
          12?????????<property?name="message">
          13?????????????<ref?bean="mailMessage"?/>
          14?????????</property>
          15?????????????</bean>
          16?????????</property>
          17?????</bean>
          applicationContext-hibernate.xml
          ?1?<bean?id="UserBasicInfoDao"
          ?2?
          ?3?????????class="包路徑.Dao.impl.UserBasicInfoDaoImpl">
          ?4?
          ?5?????????<property?name="sessionFactory">
          ?6?
          ?7?????????????<ref?local="sessionFactory"?/>
          ?8?
          ?9?????????</property>
          10?
          11?????</bean>
          配置成功后,就可以對login.jsp進行寫struts標簽。進行運行。
          如有問題。請多多指教。
          posted on 2006-08-07 11:40 SIMONE 閱讀(1644) 評論(0)  編輯  收藏 所屬分類: JSP
          主站蜘蛛池模板: 朔州市| 绵阳市| 台中市| 南汇区| 新龙县| 绥江县| 宜丰县| 马尔康县| 吉安县| 洱源县| 太谷县| 南宁市| 临泉县| 东至县| 德昌县| 桐梓县| 常熟市| 新乡市| 枝江市| 南木林县| 德昌县| 清流县| 梅河口市| 远安县| 丰台区| 商洛市| 九江市| 抚远县| 张家川| 沙洋县| 曲麻莱县| 永平县| 三河市| 长宁县| 临洮县| 绥宁县| 晋宁县| 隆子县| 江达县| 白河县| 娱乐|