亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? 第二章 webwork標(biāo)簽庫(kù).txt

?? webwork的標(biāo)簽庫(kù)
?? TXT
字號(hào):
WebWork.Jar包 com.opensymphony.webwork.default.properties文件。
webwork.jar   webwork-default.xml。
xwork.jar     xwork-default.xml。
xwork.jar     com.opensymphony.xwork.validator.validators.default.xml的規(guī)則

上節(jié)課講了一個(gè)登陸的例子,從幾大方面進(jìn)行了提高
  1. Action: 繼承類型、execute()返回值、值封裝的方式
  2. ognl
  3. valueStack
  4. 視圖類型:并講了freemarker、velocity
  5. 攔截器
今天再加上驗(yàn)證、標(biāo)簽庫(kù)的功能,怎么講呢,通過(guò)寫(xiě)一個(gè)增刪改查的例子來(lái)講,它有如下用例:
  1. 登陸
  2. 新增
  3. 修改
  4. 刪除
一、登陸    
    1. 導(dǎo)入jar包,將常用的jar拷貝到lib目錄下
    2. 注冊(cè)webwork組件,修改web.xml,加上webwork的過(guò)濾器
	  <filter>
	      <filter-name>webwork</filter-name>
	      <filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>
	  </filter>
	  <filter-mapping>
	      <filter-name>webwork</filter-name>
	      <url-pattern>*.action</url-pattern>
	  </filter-mapping>
    3. 寫(xiě)登陸頁(yè)面 login.jsp         
	<%@ page contentType="text/html;charset=GBK" %>
	<%@ taglib uri="/webwork" prefix="ww" %>
	<body align="center">
	  <ww:if test="message!=null">
	    <font color="red"><ww:property value="message"/></font><HR>
	  </ww:if>
	  <ww:form name="form1" action="login.action" method="post">
	  <table align="center">
	    <tr><td><ww:label value="用戶名:"/><ww:textfield name="uid" /></td></tr>
	    <tr><td><ww:label value="密  碼:"/><ww:password name="pwd" /></td></tr>
	    <tr><td><ww:label value="確認(rèn)密碼"/><ww:password name="pwd2"/></td></tr>
	    <tr><td align="center"><ww:submit value="提交" /><ww:reset value="重置" /></td></tr>
	  </table>
	  </ww:form>
	</body>

    4. 寫(xiě)LoginAction
        package org.accp.webwork.action;
	import com.opensymphony.xwork.Action;
	public class LoginAction implements Action{
	private String uid;
	private String pwd;
	private String pwd2;
	private String message;
	public String execute() throws Exception {
		if(uid.equals(pwd))
			return this.SUCCESS;
		message = "用戶名或密碼錯(cuò)誤";
		return this.INPUT; 
	}
	public String getPwd() {return pwd;}
	public void setPwd(String pwd) {this.pwd = pwd;}
	public String getPwd2() {return pwd2;}
	public void setPwd2(String pwd2) {this.pwd2 = pwd2;}
	public String getUid() {return uid;}
	public void setUid(String uid) {this.uid = uid;}
	public String getMessage() {return message;}
	public void setMessage(String message) {this.message = message;}
	}
    5. 在src下寫(xiě)配置文件webwork.properties
        webwork.ui.theme=simple
	webwork.i18n.encoding=gbk
	webwork.locale=zh_CN
	webwork.devMode = true
	webwork.i18n.reload=true
	webwork.configuration.xml.reload=true

    6. 在src下寫(xiě)配置文件xwork.xml
	<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
	<xwork>
	  <include file="webwork-default.xml"></include>
	  <package name="aaa" extends="webwork-default">
	    <default-interceptor-ref name="basicStack"></default-interceptor-ref>
	    <action name="login" class="org.accp.webwork.action.LoginAction">
	      <result name="success">/main.jsp</result>
	      <result name="input">/login.jsp</result>
	    </action>
	  </package>
	</xwork>     
	
    7. 驗(yàn)證
      1) 因?yàn)槭莝imple模板,所以缺省不支持客戶端驗(yàn)證,若要支持,必在jsp中強(qiáng)加上<ww:fielderror/>標(biāo)簽,在<ww:form>外面、<body>里面
	<ww:fielderror/>
      2)  在LoginAction所在的目錄下加上LoginAction-validation.xml文件,此文件引自xwork.jar中,com.opensymphony.xwork.validator.validators.default.xml的規(guī)則
	<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd">
	<validators>
	  <field name="uid">
	    <field-validator type="requiredstring">
	      <message>用戶ID不能為空</message>
	    </field-validator>
	  </field>
	  <field name="pwd">
	    <field-validator type="stringlength">
	      <param name="maxLength">10</param> <!-- 大小寫(xiě)要分 -->
	      <param name="minLength">6</param>
	      <param name="trim">true</param>
	      <message>密碼長(zhǎng)度不能小于6位和大于10位</message>
	    </field-validator>
	    <field-validator type="fieldexpression">
	      <param name="expression">pwd==pwd2</param>
	      <message>二次密碼輸入不一致</message>
	    </field-validator>
	  </field>
	</validators>
      3) 修改LoginAction,改繼承com.opensymphony.xwork.ActionSupport
	要實(shí)現(xiàn)字段驗(yàn)證,必須繼承這個(gè)ActionSupport,出錯(cuò)后,會(huì)自動(dòng)返回到提交頁(yè)面
      4) 修改xwork.xml,在<action>內(nèi)加上攔截器
         <interceptor-ref name="validationWorkflowStack" />

    8. 登陸成功后返回到主截面main.jsp
	<%@ page contentType="text/html;charset=GBK" %>
	<%@ taglib uri="/webwork" prefix="ww" %>

	<body>
	  <ww:form name="form1" action="main.action" method="post">
	    <table align="center">
	      <tr><td>
	      <input type="button" value="查看" onClick="sub('view.action')"/>
	      <input type="button" value="新增" onClick="sub('add.action')"/>
	      <input type="button" value="修改" onClick="sub('upd.action')"/>
	      <input type="button" value="刪除" onClick="sub('del.action')"/>
	      </td></tr>
	    </table>
	    <HR>
	    <table align="center" border="1" width="90%">
	      <tr><th>選擇</th><th>序號(hào)</th><th>用戶ID</th><th>用戶名</th><th>年齡</th></tr>
	      <ww:iterator value="data" status="index">
		<tr>
		  <td><ww:checkbox name="chk" fieldValue="%{uid}"/></td>
		  <td><ww:property value="#index.count" /></td>
		  <td><ww:property value="uid" /></td>
		  <td><ww:property value="uname" /></td>
		  <td><ww:property value="age" /></td>
		</tr>
	      </ww:iterator>
	    </table>
	  </ww:form>
	</body>
	<script>
	  function sub(opp) {
	    form1.action=opp;
	    form1.target="_self";
	    form1.submit();
	  }
	</script>

    9. 修改LoginAction,驗(yàn)證成功后,得到所有用戶的信息
	private UserDelegate ud = new UserDelegate();
	public List<User> getData() {	
		return ud.getAll();
	}
	再修改execute()方法的用戶驗(yàn)證,用這個(gè)代理。

    10. 封裝用戶對(duì)象
	package org.accp.webwork.vo;
	  public class User {
	  private String uid;
	  private String pwd;
	  private String uname;
	  private int age;
	  ...
	}
    11. 寫(xiě)用戶代理類
	package org.accp.well.delegate;

	public class UserDelegate {
		public boolean validate(String uid,String pwd) {
			return uid.equals(pwd);
		}
		private static List<User> data = new ArrayList<User>();
		static{
		User u = new User();
		u.setUid("zs");u.setUname("張三");u.setPwd("123");u.setAge(18);
		data.add(u);
		u = new User();
		u.setUid("ls");u.setUname("李四");u.setPwd("123");u.setAge(18);
		data.add(u);
		u = new User();
		u.setUid("ww");u.setUname("王五");u.setPwd("123");u.setAge(18);
		data.add(u);
		u = new User();
		u.setUid("zl");u.setUname("趙六");u.setPwd("123");u.setAge(18);
		data.add(u);
		u = new User();
		u.setUid("zz");u.setUname("哎呀");u.setPwd("123");u.setAge(18);
		data.add(u);
		}
		public List<User> getAll() {		
			return data;
		}
	}

二、新增   
   1. 寫(xiě)MainAction
      在主界面上點(diǎn)擊新增,調(diào)用MainAction的add()方法,ActionSupport繼承后,可不用execute()方法,但可新增其它很多方法。再調(diào)用它的execute()方法,缺省返回success,失敗返回到input。
      public class MainAction extends ActionSupport{
        //新增
	public String add() throws Exception {
		return execute();
	}
      }
   2. 改xwork.xml
      <action name="add" class="org.accp.webwork.action.MainAction" method="add">
        <result>/user/add.jsp</result>
      </action>
   3. 在user目錄下新加add.jsp頁(yè)面
      <%@ page contentType="text/html;charset=GBK" %>
	<%@ taglib uri="/webwork" prefix="ww" %>
	<body align="center">
	  <ww:form name="form1" action="saveOrUpdate.action" method="post" ><BR>
	    <ww:label value="用戶ID:" /><ww:textfield name="user.uid" /><BR>    
	    <ww:label value="密  碼:" /><ww:password name="user.pwd" /><BR>
	    <ww:label value="用戶名:" /><ww:textfield name="user.uname" /><BR>
	    <ww:label value="年  齡:" /><ww:textfield name="user.age" /><BR>
	    <ww:submit value="提交" /><ww:reset value="重置"/><BR>
	  </ww:form>
	</body>

   4. 在MainAction中寫(xiě)保存方法
	private UserDelegate ud = new UserDelegate();
	public User user ;
	public User getUser() {
		return user;
	}
	//新增保存、修改保存調(diào)用同一個(gè)
	public String saveOrUpdate() throws Exception {
		ud.saveOrUpdate(user);
		return this.SUCCESS;
	}
	//再加與LoginAction一樣的取所有數(shù)據(jù)的方法
	public List<User> getData() {	
		return ud.getAll();
	}

   5. 修改UserDelegate
	public void saveOrUpdate(User u) {
		for(User user : data) {
			if(user.getUid().equals(u.getUid())) {
				data.remove(user);
				break;
			}
		}
		data.add(u);
	}
   6. 修改xwork.xml
	<action name="saveOrUpdate" class="org.accp.webwork.action.MainAction" method="saveOrUpdate">
	  <result>/main.jsp</result>
	</action>

三、查看
   1. 修改MainAction 
  	public void view() {
	  String chk1 = (chk!=null && chk.length>0) ? chk[0] : "";
	  user = ud.getUser(chk1);
	}
   2. 修改代理
	private String[] chk;
	public void setChk(String[] chk) {this.chk=chk;}
	public String view() throws Exception {
	  String chk1 = (chk!=null && chk.length>0) ? chk[0] : "";
	  user = ud.getUser(chk1);
	  return execute();
	}
   3. 修改xwork.xml
	<action name="view" class="org.accp.webwork.action.MainAction" method="view">
	  <result>/user/view.jsp</result>
	</action>
   4. 新增view.jsp
	<%@ page contentType="text/html;charset=GBK" %>
	<%@ taglib uri="/webwork" prefix="ww" %>
	<body align="center">
	  <ww:form name="form1"><BR>
	    <ww:label value="用戶ID:" /><ww:textfield name="user.uid" /><BR>    
	    <ww:label value="密  碼:" /><ww:password name="user.pwd" showPassword="true"/><BR>
	    <ww:label value="用戶名:" /><ww:textfield name="user.uname" /><BR>
	    <ww:label value="年  齡:" /><ww:textfield name="user.age" /><BR>
	    <a href=javascript:history.back()>返回</a><BR>
	  </ww:form>
	</body>

四、修改
   1. 修改MainAction 
  	public String upd() throws Exception {
	  String chk1 = (chk!=null && chk.length>0) ? chk[0] : "";
	  user = ud.getUser(chk1);
	  return execute();
	}
   2. 修改xwork.xml
	<action name="upd" class="org.accp.webwork.action.MainAction" method="upd">
	  <result>/user/add.jsp</result>
	</action>
   
五、刪除
   1. 修改MainAction 
	public String delete() throws Exception {
		ud.delete(chk);
		return execute();
	}
   2. 修改代理
	public void del(String[] ss) {
		if(ss==null || ss.length<=0) return;
		for(String s : ss) {
			for(Iterator<User> it = data.iterator(); it.hasNext();) {
				if(it.next().getUid().equals(s)) {
					it.remove();
					break;
				}
			}
		}
	}
   3. 修改xwork.xml
	<action name="del" class="org.accp.webwork.action.MainAction" method="del">
	  <result>/main.jsp</result>
	</action>

六、與spring集成
   1. 導(dǎo)入spring的jar包

   2. 在web.xml中注冊(cè)
      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
      </context-param>	
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
       
   2. 寫(xiě)applicationContext.xml文件
	<?xml version="1.0" encoding="UTF-8"?>
	<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
	<beans>
	  <bean id="main" class="org.accp.webwork.action.MainAction">
		<property name="ud" ref="ud"/>
	  </bean>
	  <bean id="ud" class="org.accp.well.delegate.UserDelegate"/>
	</beans>

   3. 在webwork.properties中加上
      webwork.objectFactory = spring

   4. 修改UserDelegate
	private UserDelegate ud ;
	public void setUd(UserDelegate ud ) {
		this.ud = ud;
	}

七、注意事項(xiàng)
   1. 無(wú)狀態(tài)綁丁,而jsf不是
   2. login.action會(huì)關(guān)聯(lián)login.jsp與main.jsp,因?yàn)樵谂渲梦募械?lt;result>標(biāo)簽中可以看到。于是,這二個(gè)jsp中的數(shù)據(jù)都默認(rèn)從login.action對(duì)應(yīng)的類中去取和放。如果此時(shí)main.jsp在保存后又關(guān)聯(lián)到了main.action,則此時(shí)的數(shù)據(jù)又會(huì)從main.action中取,如果沒(méi)有相應(yīng)的get方法不會(huì)報(bào)錯(cuò),也不會(huì)從login.action中去取。譬如列表data.
   3. action已退化到了actionForm與action二合一的地步,相當(dāng)于jsf的管理Bean
   4. 關(guān)于值堆棧的context map,它是一個(gè)放置值堆棧上下文數(shù)據(jù)的對(duì)象。通過(guò)符號(hào)“#“再加上對(duì)象的名稱,可以訪問(wèn)這些數(shù)據(jù)(只可以訪問(wèn))
   5. 在Jsp頁(yè)面中,默認(rèn)“altSyntax”是開(kāi)啟的。它是用來(lái)解決標(biāo)簽庫(kù)中的字符串和表達(dá)式語(yǔ)言混淆的問(wèn)題。所以,作為變量的表達(dá)式語(yǔ)言應(yīng)該放在%{}中,否則WebWork會(huì)把它當(dāng)作字符串處理。

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区观看视频| 亚洲欧美日韩中文播放| 日韩久久久精品| 欧美性大战久久| 99久久国产综合精品女不卡| 国产福利一区二区| 精品一区二区精品| 久久99精品国产麻豆婷婷| 亚洲综合在线观看视频| 亚洲天堂福利av| 中文字幕国产精品一区二区| 精品国产一区二区亚洲人成毛片| 欧美午夜精品久久久久久孕妇| 91色在线porny| 99视频精品全部免费在线| 丁香亚洲综合激情啪啪综合| 成人免费毛片app| 97久久超碰精品国产| 亚洲人快播电影网| 337p粉嫩大胆噜噜噜噜噜91av| 精品国产91久久久久久久妲己 | 精品久久人人做人人爽| 欧美不卡一二三| 国产三级精品三级在线专区| 自拍偷在线精品自拍偷无码专区| 亚洲激情六月丁香| 奇米影视在线99精品| 国产在线麻豆精品观看| 成人美女在线观看| 欧美色视频在线| 精品av久久707| 国产精品久久久久影院老司| 亚洲国产一区二区三区| 久久av中文字幕片| 99天天综合性| 欧美福利电影网| 亚洲国产成人私人影院tom| 亚洲最大的成人av| 国产自产视频一区二区三区| 色综合天天在线| 欧美一区二区三区影视| 精品一区二区三区在线播放视频| 国产成人在线观看| 欧美在线高清视频| 久久人人爽人人爽| 一区二区三区在线免费观看 | 91麻豆产精品久久久久久| 欧美日韩一本到| 亚洲国产精品传媒在线观看| 亚洲一线二线三线视频| 国内精品伊人久久久久av影院 | 26uuu色噜噜精品一区二区| 最新欧美精品一区二区三区| 美女视频一区二区| 色哟哟一区二区在线观看| www激情久久| 婷婷综合另类小说色区| 成人免费视频一区二区| 欧美一级日韩不卡播放免费| 中文字幕一区二区5566日韩| 看电视剧不卡顿的网站| 在线观看免费亚洲| 国产片一区二区| 另类的小说在线视频另类成人小视频在线 | 欧美亚洲自拍偷拍| 中文在线一区二区| 久久国产剧场电影| 欧美性生活一区| 国产精品毛片大码女人| 蜜桃视频第一区免费观看| 在线观看av不卡| 日本一区二区动态图| 麻豆精品在线看| 69堂国产成人免费视频| 亚洲人xxxx| 波多野结衣在线aⅴ中文字幕不卡| 日韩限制级电影在线观看| 亚洲成av人影院在线观看网| 99精品久久免费看蜜臀剧情介绍| 欧美精品一区二区不卡| 日本不卡免费在线视频| 欧美日韩精品欧美日韩精品一 | 99热精品国产| 国产午夜精品福利| 国模娜娜一区二区三区| 欧美日韩高清一区二区不卡 | 精品中文字幕一区二区小辣椒| 在线免费观看日韩欧美| 1024成人网| 99久久婷婷国产综合精品电影| 精品国产一区a| 亚洲电影一级黄| 成人激情视频网站| 精品sm在线观看| 日本大胆欧美人术艺术动态| 国产宾馆实践打屁股91| 欧美成人精品福利| 亚洲综合一区二区| 成人免费视频一区二区| 久久久亚洲午夜电影| 久久av资源网| 久久久午夜精品| 国产九色精品成人porny| 国产视频一区在线播放| 国产精品白丝av| 欧美激情一区二区三区全黄| 床上的激情91.| 国产精品美女久久久久久久| zzijzzij亚洲日本少妇熟睡| 国产精品超碰97尤物18| 91在线观看一区二区| 亚洲综合图片区| 欧美日韩黄色一区二区| 日本成人在线电影网| 日韩欧美一区二区视频| 国产精品一区二区久久精品爱涩 | 亚洲人成7777| 欧美无砖专区一中文字| 视频一区欧美日韩| wwwwxxxxx欧美| 成人高清视频在线| 亚洲精品成人精品456| 欧美吻胸吃奶大尺度电影| 免费观看日韩电影| 国产日韩高清在线| 色综合一区二区| 天天影视网天天综合色在线播放| 日韩欧美国产麻豆| 成人国产精品免费网站| 亚洲精品成人天堂一二三| 日韩一级片网址| 成人黄色片在线观看| 亚洲国产精品久久久男人的天堂 | 亚洲免费看黄网站| 欧美日本韩国一区| 国产一区二区在线看| 亚洲日本一区二区三区| 欧美高清视频不卡网| 国产黑丝在线一区二区三区| 亚洲乱码国产乱码精品精98午夜| 欧美日韩国产免费一区二区 | 国产一区二区在线观看免费| 一区二区中文视频| 8v天堂国产在线一区二区| 国产一区二区三区免费观看| 亚洲精品乱码久久久久久久久| 在线成人午夜影院| 成人精品亚洲人成在线| 天堂午夜影视日韩欧美一区二区| 国产亚洲欧美日韩俺去了| 91久久精品一区二区| 国内欧美视频一区二区| 亚洲一区二区三区四区五区黄| 欧美mv日韩mv国产| 欧美在线免费播放| 国产一区二区毛片| 午夜欧美视频在线观看| 国产日韩成人精品| 欧美乱妇23p| gogo大胆日本视频一区| 男人的天堂亚洲一区| 亚洲欧美电影院| 久久久天堂av| 欧美麻豆精品久久久久久| 99re视频这里只有精品| 国产一区二区精品久久91| 亚洲国产日韩在线一区模特 | 日本午夜精品一区二区三区电影 | 不卡一区二区三区四区| 免费在线观看一区| 亚洲在线视频免费观看| 欧美高清在线视频| 精品蜜桃在线看| 9191精品国产综合久久久久久| aa级大片欧美| 国产成人免费在线| 国模少妇一区二区三区| 三级欧美在线一区| 亚洲精品写真福利| 中文字幕精品一区| 欧美精品一区二区三区四区| 欧美男人的天堂一二区| 91国产免费观看| 91色婷婷久久久久合中文| 岛国精品在线观看| 国产福利一区在线| 另类调教123区| 麻豆91精品视频| 三级久久三级久久久| 午夜视频一区二区| 亚洲国产视频直播| 亚洲国产一区视频| 亚洲一区二区三区四区不卡| 一区二区三区四区在线播放| 国产精品国产三级国产a| 国产精品蜜臀av| 综合精品久久久| 亚洲人成网站在线| 亚洲激情图片qvod| 亚洲曰韩产成在线|