私の最初のStrutsプログラム


いよいよ私の最初のStrutsプログラムが始まります.その前に少しは知っていましたが、真剣にやってみませんでした.今回は徹底的に明らかにします.プラグインを統合したのでMyEclipeで作りました
の能力はとても良くて、このように多くの事を省くことができます.
(1)MyEclipseの下でプロジェクトを作成する.Strutsフレームワークは主にWeb Projectの開発に用いられ、J 2 EEシリーズに属するため、「MyEclipse」-->「J 2 EE Projects」-->「Web Project」タイプを選択する.
そうでなければ、Strutsプログラムは実行されませんよ.システムは自動的にあなたのプロジェクトのためにJ 2 ee基本パッケージをロードします.
(2)2つ目のステップは、このプロジェクトにStrutsパッケージを追加し、「MyEclipe」メニューの下で「add struts capabilities」を選択することです.MyEclipseは、Struts sSupport for MyEcliplse Webを起動します.
Projectウィザードでは、Strutsプロファイルのパスと名前を設定できます.クラスのパッケージを作成し、その国際化ファイルをこのパッケージのルートディレクトリの下に自動的に配置します.
(3)我々が行うべきこの例は非常に簡単であり,簡単なユーザアイデンティティの合法性判断を完了することである.ユーザーは私たちが提供した操作インタフェースを通じて名前とパスワードを入力します(ここでは「lll」と「aaa」が必要です)、合法的であれば負けます.
歓迎の言葉を出します.そうしないと戻り、エラーの原因を提示します.まず、Strutsラベルを含むJSPファイルであるユーザ要求取得ページを作成します.私たちは2つのJSPを定義しました.1つはloginです.jspユーザーログインの取得に使用
リクエスト、1つはログインに成功した後にジャンプするsuccessです.jsp.login.jspコードは以下の通りです.
  
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<HTML>
  <HEAD>
     <TITLE><bean:message key="login.jsp.title"/></TITLE>
     <html:base/>
  </HEAD>
  <BODY>
  <h3><bean:message key="login.jsp.page.heading"/></h3><html:errors/>
  <html:form action="loginAction.do" focus="username">
  <TABLE border="0" width="100%">
    <TR><TH align="right"><bean:message key="login.jsp.prompt.username"/></TH>
      <TD align="left"><html:text property="username"/></TD></TR>
    <TR><TH align="right"><bean:message key="login.jsp.prompt.password"/></TH>
    <TD align="left"><html:password property="password"/></TD></TR>
    <TR><TD align="right"><html:submit><bean:message key="login.jsp.prompt.submit"/></html:submit></TD>
        <TD align="left"><html:reset><bean:message key="login.jsp.prompt.reset"/></html:reset></TD></TR>
  </TABLE>
  </html:form>
  </BODY>
  </HTML>

の内容は、参照するStrutsタグライブラリの内容と、そのライブラリの内容のプレフィックス情報である.このホームページには、ユーザー名ラベルとユーザー名テキストボックス、パスワードラベル、パスワードテキストボックスを表示する必要があります.注意してください
情報を求めるのはフォームの中で含んで、ここで伝統的なhmtlの
ラベルを使うことができなくて、さもなくばユーザーの相応の要求Strutsは受け取れません.一般ユーザの要求は接尾辞付きに提出される.doのactionオブジェクトは処理します.注意してください.
のactionオブジェクトは名前だけで、実際のActionオブジェクトではありません.
テキストボックスの定義は、従来のhtmlテキストボックスとは異なり、html:textだけでなくpropertyプロパティの内容も定義されます.このプロパティは、あなたが定義したJSPページのActionFormインスタンスオブジェクトの特
定属性対応.
ここではApplicationResourceからpropertiesファイルから対応するkey付きの情報を取り出して表示します.中国語のヒントを正常に表示する方法は、後で説明します.
着きます.
(4)まずstruts-configを定義する.xmlファイル.Web-infディレクトリの下にあります.これは非常に重要なファイルであり、Strutsフレームワークは、それを読み取ることによって、ユーザ要求の転送がユーザ要求に対応していることを決定する.
ActionFormオブジェクト.我々のStruts-Config.xmlファイルの内容は次のとおりです.
参照

"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

 
 
   
 

 
 
 
          type="com.test.LoginAction"validate="false">
    
    

 

 

ここでは、の下にラベルを定義して、対応するActionオブジェクトがどこからのリクエストを処理するかを説明し、対応するユーザのリクエストをそのActionFormオブジェクトにカプセル化して、後で
をクリックすると、ActionFormオブジェクトのデータが更新され、最新のデータが表示されます.は、Actionオブジェクトがsuccessという名前のジャンプを取得するときにジャンプする場所を示します.注意ラベルのファイルパスの参照は、一番前に
プラス/、そうでないとエラーが発生します.エラーメッセージは後で説明します.注意タブで定義されたnameプロパティはActionFormクラスのインスタンスです.ここで定義したのはユーザー管理で再利用するためのuserInforFormです.
この名前を付けて、jspを1つのFormBeanに対応してもいいですが、FormBeanは多くなります.
上のプロファイルから分かるように、ユーザーはloginから.jspがloginAction要求に提出するコンポーネント情報は、対応するFormBeanの属性に対応し、comに提出される.test.LoginActionクラスのインスタンスが処理を完了します.しょりに当たる
ジャンプが完了すると、メッセージがsuccessである場合、successにジャンプする.jsp、そうでなければloginに戻ります.jsp(これはLoginActionコードで定義されています).このような利点は、ページのフローを明確化し、構成可能にすることです.
(5)userInfoFormクラスは以下のように記述する.
  
package com.test;
import org.apache.struts.action.*;
import javax.servlet.http.HttpServletRequest;
public class UserInfoForm extends ActionForm{
	private String username;
	private String password;
	public String getUsername(){return this.username;}
	public void setUsername(String username){this.username = username;}
	public String getPassword(){return (this.password);}
	public void setPassword(String password) {this.password = password;}
	}

StrutsのForm BeanはActionFormクラスを継承する必要があります.その他は標準的なJavaBeanです.
  (6)LoginAction.JAvaコードは次のとおりです.
  
package com.test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionServlet;
public final class LoginAction extends Action
{
	public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,
			HttpServletResponse response) throws IOException,ServletException
	{
		UserInfoForm loginInfoForm=(UserInfoForm)form;
		String username = loginInfoForm.getUsername().trim();
		String password=loginInfoForm.getPassword().trim();
		ActionErrors errors = new ActionErrors();
        if(username.equals("")){
        	ActionError error=new ActionError("error.missing.username");
        	errors.add(ActionErrors.GLOBAL_ERROR,error);
        	}
	    if(password.equals("")){
	    	ActionError error=new ActionError("error.missing.password");
	    	errors.add(ActionErrors.GLOBAL_ERROR,error);
	    }
	    if (errors.size()==0)
	    	{
	    	try{
                if (username.equals("lll") && password.equals("aaa"))
	    			return mapping.findForward("success");
                else
                {
                	ActionError error=new ActionError("error.wrong.userinfo");
                	errors.add(ActionErrors.GLOBAL_ERROR,error);
                }
	    	}catch(Throwable e){
	          e.printStackTrace();
	          ActionError error=new ActionError(e.getMessage());
	          errors.add(ActionErrors.GLOBAL_ERROR,error);
	          }
	}
	  saveErrors(request, errors);
	  return new ActionForward(mapping.getInput());
	}
	}

すべてのActionオブジェクトは、Actionクラスを継承し、executeメソッドを再ロードします.この方法には、ActionMapping、ActionForm、HttpServeretRequest、HttpServeretResponseタイプの4つのパラメータがあります.
また、戻りタイプはActionForwardオブジェクトです.ここでエラーメッセージを補足し,まず特定の場合のエラー情報を格納する必要がある.ActionErrorsオブジェクトに入れます(もちろんActionErrorオブジェクトを生成してから入れます)
.login.jspで対応するエラー情報のプロンプトを完了します.ActionErrorオブジェクトを生成する文字列はキー情報にすぎず、ApplicationResource.propertiesでvalue情報を探します
これで君は勝手に発揮できるだろう.また、エラーオブジェクトは必ずHttpServeretRequestオブジェクトに格納してください.そうしないと表示されませんよ~~~
(7)最後に、アプリケーションリソースを追加します.propertiesファイルの内容は次のとおりです.
参照
# Resources for parameter 'com.yourcompany.struts.ApplicationResources'
# Project testStruts
#Application Resource for the login.jsp
  login.jsp.title=The login page
  login.jsp.page.heading=Welcome World!
  login.jsp.prompt.username=Username:
  login.jsp.prompt.password=Password:
  login.jsp.prompt.submit=Submit
  login.jsp.prompt.reset=Reset
#Application Resource for the success.jsp
   success.jsp.title=The main page
   success.jsp.welcome=Welcome:
#Application Resource for the LoginAction.java
   error.missing.username=
  • missing username
  •    error.missing.password=
  • missing password
  • error.wrong.userinfo=
  • username or password is wrong
  • これらは、対応するファイルに必要な国際化情報であり、ここでは中国語の入力は一時的に許可されません(後述します).
    (8)今からデバッグして、何か問題があるかどうか見てみましょう.Webサーバを起動し、そのプロジェクトをサーバに構成します.ユーザーがホームページにログインして正常になります.ユーザ情報は「lll」、パスワードは「aaa」と入力し、結果は「The」に戻る
    requested resource(/success.jsp)is not available」のエラーメッセージ.まずLoginAction処理が正常であることを説明し、success.jspの内容が定義を忘れていることを確認します.その内容は以下の通りです.
    参照
    <%@ page contentType="text/html; charset=GB2312"%>
    <%@ taglib uri="/WEB-INF/struts-bean.tld"prefix="bean"%>
    <%@ taglib uri="/WEB-INF/struts-logic.tld"prefix="logic"%>


      <bean:message key="success.jsp.title"/>
     
      
      


        
         !


     

    ここではFormBeanから取り出す情報を表示するのでstruts-logicを用いる.tldラベルライブラリは、表示する場所にラベルを使用し、表示するFormBeanと属性名propertyを指定すればよい.
    は、対応するFormBeanインスタンスオブジェクトが存在するかどうかを判断するために使用されます.プロジェクトを再構成し、再実行し、通過します.ユーザー名を空、パスワードを空、または誤ったユーザー名とパスワードを入力すると、予想される効果が得られます.