posts - 495,comments - 227,trackbacks - 0
          如果您按照上篇文章配置成功,可以進行開發簡單的J2EE項目。
          開發前準備:
          ??? 1、新建項目包:如下圖:
          ???????? project1.JPG
          Dao:數據層;service:邏輯層;web:web展現層。
          2、建立好三層架構,部署好包名。建立一個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進行自動生成,在建立時,如下圖,可直接生成對應的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>

          對應生成的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??????????/**對頁面提交的元素進行驗證,根據需要進行驗證:在struts-config.xml中的 action-mapping配置設置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展現中對Action進行配置;我們在這里主要是針對登錄進行開發.因此在action中需要完成以下步驟:
          1、登錄驗證;驗證用戶名是否存在。驗證該用戶的密碼是否正確。
          2、增加cookie
          3、提示登錄成功。
          在進行Action類的編寫過程中,首先我們需要考慮到對數據的操作有如下步驟。
          1、驗證用戶名是否存在,我們在service層需要提供一個接口:
          1?Public?boolean?isExist(String?user);
          來判斷用戶名是否存在,同時要考慮該用戶名對應的密碼是否正確,需要提供接口:
          1?Public?UserBasicInfo?findByUser(String?user);
          通過用戶名來查找相關數據。
          在Action中,我們同時要判斷根據用戶查找的用戶密碼是否正確。如果正確,增加cookie。并返回正常登錄頁面。如果用戶不存在、該用戶輸入的密碼與數據庫中的密碼不相符合。則在配置文件ApplicationResources_zh_CN.properties中,進行設置提示報錯內容。并在頁面中顯示。
          具體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??????????????????*?用戶狀態為新增未激活,返回登錄頁面。不允許登錄。
          ?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??????????????????*?用戶狀態為新增待核,返回登錄頁面。不允許登錄。
          ?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??????????????????*?用戶狀態為暫時鎖定,返回登錄頁面。不允許登錄。
          ?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??????????????????*?用戶狀態為已刪除,返回登錄頁面。不允許登錄。
          ?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??????????????????*?傳遞參數用戶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?????}
          首先謝謝各位的關注,因最近項目比較緊張,一直沒有更新該文章,有點對不住了。
          下面我將service層的實現與Dao層的實現與配置寫上。各位自己參考吧。
          service接口實現
          1?public?boolean?isExists(String?userEmail)?{
          2?
          3?????????if?(userBasicInfoDao.findByUserEmail(userEmail).size()?==?0)
          4?????????????return?false;
          5?????????else
          6?????????????return?true;
          7?????}

          通過service層調用Dao層接口,進行判斷用戶是否存在。
          Dao接口實現:

          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 閱讀(1643) 評論(0)  編輯  收藏 所屬分類: JSP
          主站蜘蛛池模板: 怀化市| 丰城市| 沁水县| 兖州市| 溧水县| 永济市| 积石山| 百色市| 汝州市| 油尖旺区| 古丈县| 水富县| 揭西县| 华阴市| 凉山| 油尖旺区| 育儿| 尼勒克县| 莱州市| 上栗县| 河西区| 维西| 中西区| 天峨县| 平湖市| 额济纳旗| 河西区| 梁河县| 浏阳市| 福安市| 东乌珠穆沁旗| 太湖县| 额敏县| 泾川县| 阜阳市| 石楼县| 来安县| 株洲市| 昌都县| 武强县| 当阳市|