錛?<message-resources parameter="org.apache.struts.webapp.example.MessageResources" />
鍦ㄥ悓涓涓猻truts閲岄潰鍙兘鏈変竴涓粯璁ょ殑瀛樻斁鏈湴鍖栫殑娑堟伅鏂囨湰(Resource Bundle)
閭e緢鎴戜滑鎸囧畾澶氫釜鐨勬椂鍊欏彲浠ョ敤瀹冪殑涓涓睘鎬ey鎸囧畾
渚嬪:
<message-resources parameter="org.apache.struts.webapp.example.AlternateMessageResources" key="alternate" />
閭d箞鎴戜滑鍦ㄩ〉闈㈢敤鐨勬椂鍊欒繖鏍峰嚭鍒?br /><bean:message key="key0"/>;
<bean:message key="key1" bundle="alternate"/>
3:<html:link>鏈変袱涓紭鐐?
(1)鍏佽鍦╱rl涓互澶氱鏂瑰紡鍖呭惈璇鋒眰銆?br />(2)褰撶敤鎴峰叧闂璫ookie鏃訛紝浼氳嚜鍔ㄩ噸鍐檜rl錛屾妸sessionid浣滀負璇鋒眰鍙傛暟鍖呭惈鍦╱rl褰撲腑,鐢ㄤ簬璺熻釜鐢ㄦ埛鐨剆ession鐘舵侊紝鑰屼笉鍍弒ervlet,jsp榪樿
鑷繁紜紪鐮佸疄鐜?br />瀹冩湁鍑犱釜閲嶈鐨勫睘鎬?
*forward:鎸囧畾鍏ㄥ眬杞彂閾炬帴錛堝彧閫傜敤浜?flobal-forwards>forward,鑰屼笉鑳藉紩鐢╝ction forward瀛愬厓绱?
*href:鎸囧畾瀹屾暣鐨剈rl閾炬帴(<html:link url="http//www.sina.com"/>)
*page:鎸囧畾鐩稿浜庡綋鍓嶇綉欏電殑url(<html:link page="/test.do"/>
4:PlugIn(struts鎻掍歡)
鍦╯truts-config.xml瑕佸姞涓婄浉搴旂殑鎻忚堪璇彞
<plug-in className="org.apache.struts.webapp.example.memory.MemoryDatabasePlugIn">
聽 <set-property property="pathname" value="/WEB-INF/database.xml"/>
</plug-in>
鍏朵腑MemoryDatabaseplugIn鏄嚜宸卞紑鍙戠殑涓涓彃浠訛紝瀹冨繀欏籵rg.paache.struts.action.PlugIn鎺ュ彛,鍖呭惈涓や釜鏂規硶init,destroy
init鍦╯truts鍔犺澆鏃惰嚜鍔ㄨ璋冪敤錛宒estroy褰撳簲鐢ㄥ叧闂椂璋冪敤錛屽彲浠ユ斁涓浜涢噴鏀捐祫婧愮殑璇彞錛堝鍏抽棴鏁版嵁搴撹繛鎺ョ殑璇彞絳夛級
騫朵笖榪欎釜閲岄潰榪樺寘鍚睘鎬athname,涔熻鐩稿簲鐨刧et,set鏂規硶錛屼互渚垮湪struts妗嗘灦鍦ㄥ姞杞芥彃浠舵椂錛屼細鑷姩璋冪敤setPathname()鏂規硶錛屾妸
<set-property>瀛愬厓绱犵殑pathname璁劇疆鎴怣emoryDatabasePlugIn閲屽搴斿睘鎬х殑鍊紇alue="/WEB-INF/database.xml"
榪樿娉ㄦ剰灝辨槸<plug-in>蹇呴』浣嶄簬鍏跺畠閰嶇疆鍏冪礌鍚庨潰錛屽嚭鐜板涓寜欏哄簭鍔犺澆
5:
<!-- Process a user logon -->
<action聽聽聽 path="/SubmitLogon"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 type="org.apache.struts.webapp.example.LogonAction"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 name="LogonForm"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 scope="request"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 input="logon">
聽<exception
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 key="expired.password"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 type="org.apache.struts.webapp.example.ExpiredPasswordException"
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 path="/ExpiredPassword.do"/>
聽聽聽聽聽聽 </action>
scope鎺ㄨ崘浣跨敤request,褰撶劧涔熷彲浠ョ敤session錛屼竴涓狝ctionForm鍙搴斾竴嬈¤姹傦紝涓嶈瓚婅繃request,
濡傛灉鎴戜滑浣跨敤type="org.apache.struts.validator.DynaValidatorForm"
閭d箞瀹冧細鑷姩鍒涘緩涓涓狝ctionForms涓庝箣瀵瑰簲
exception瀛愬厓绱?褰撲竴涓敤鎴風櫥褰曚互鍚庯紝鏈夊彲鑳?"ExpiredPasswordException"錛堣秴鏃訛級 浼氭姏鍑?
聽濡傛灉鍙戠敓浜嗙殑璇?Struts 浼氭崟鑾積xception 騫跺彂閫佸埌 "ExpiredPassword" action.
6錛?br />鑷繁寮鍙戜竴涓畾鍒舵爣璁?lt;app:checkLogon/>鐢ㄦ埛媯鏌ョ敤鎴鋒槸鍚︾櫥褰?br />package org.apache.struts.webapp.example;
import ...
public final class CheckLogonTag extends TagSupport {
聽聽聽 private String name = Constants.USER_KEY;
聽聽聽 private static String LOGIN_PATH = "/Logon.do";
聽聽聽 private String page = LOGIN_PATH;
聽聽聽 public int doStartTag() throws JspException {
聽聽聽 return (SKIP_BODY);
聽聽聽 }
聽聽聽 public int doEndTag() throws JspException {
聽聽聽 聽boolean valid = false;
聽聽聽 聽HttpSession session = pageContext.getSession();
聽聽聽 聽if ((session != null) && (session.getAttribute(name) != null)) {
聽聽聽 聽聽聽聽 valid = true;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 if (valid) {
聽聽聽聽聽聽聽聽聽聽聽 return (EVAL_PAGE);
聽聽聽聽聽聽聽 } else {
聽聽聽聽聽聽聽聽聽聽聽 ModuleConfig config =
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 (ModuleConfig) pageContext.getServletContext().getAttribute(
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 org.apache.struts.Globals.MODULE_KEY);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 try {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 pageContext.forward(config.getPrefix() + page);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 } catch (ServletException e) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 throw new JspException(e.toString());
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 } catch (IOException e) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 throw new JspException(e.toString());
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 return (SKIP_PAGE);
聽聽聽聽聽聽聽 }
聽聽聽 }
聽聽聽 public void release() {
聽聽聽聽聽聽聽 super.release();
聽聽聽聽聽聽聽 this.name = Constants.USER_KEY;
聽聽聽聽聽聽聽 this.page = LOGIN_PATH;
聽聽聽 }
}
浣嗗鏋滄瘮杈冨ぇ鐨勫簲鐢ㄨ繕鏄敤鏍囧噯鐨刯aas楠岃瘉
7
<html:link action="/EditRegistration?action=Edit">
-------
///////////////////////////////////
<logic:equal
name="RegistrationForm"
property="action"
scope="request"
value="Edit"
>
<app:checkLogon/><!--濡傛灉action涓嶦dit鐩哥瓑灝辨墽琛岃繖閲岋紝鍚﹀垯涓嶄細鎵ц-->
</logic:equal>
1)////
<logic:present name="test">
濡傛灉鍦╝ction涓緗簡test灝辨墽琛屽埌榪欏効銆傚錛歳equest.setAttribute("test","test")鎴杝ession.setAttribute("test","test")
<bean:write name="test"/>
</logic:present>
package org.apache.struts.webapp.example;
public final class EditSubscriptionAction extends Action
{
聽聽聽 public EditSubscriptionAction()
聽聽聽 {
聽聽聽聽聽聽聽 log = LogFactory.getLog("org.apache.struts.webapp.Example");
聽聽聽 }
聽聽聽 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
聽聽聽聽聽聽聽 throws Exception
聽聽聽 {
聽聽聽聽聽聽聽 HttpSession session = request.getSession();
聽聽聽聽聽聽聽 String action = request.getParameter("action");
聽聽聽聽聽聽聽 if(action == null)
聽聽聽聽聽聽聽聽聽聽聽 action = "Create";
聽聽聽聽聽聽聽 String host = request.getParameter("host");
聽聽聽聽聽聽聽 if(log.isDebugEnabled())
聽聽聽聽聽聽聽聽聽聽聽 log.debug("EditSubscriptionAction:聽 Processing " + action + " action");
聽聽聽聽聽聽聽 User user = (User)session.getAttribute("user");
聽聽聽聽聽聽聽 if(subscription == null && !action.equals("Create"))///create
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 if(log.isTraceEnabled())
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 log.trace(" No subscription for user " + user.getUsername() + " and host " + host);
聽聽聽聽聽聽聽聽聽聽聽 return mapping.findForward("failure");
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 else //edit
聽聽聽聽聽聽 --------------------
}
8 MailReader婧愮爜<struts 1.2 webapps涓媠truts-mailreader.war騫朵笖鍖呭惈璇存槑鏂囨。錛屾槸姣忎竴涓垵瀛﹁呭拰鏈夌粡楠岀殑錛屽簲璇ヨ鐪嬬殑鏂囩珷