亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Eclipse中配置開發Struts

發布時間:2021-11-17 17:51:34 來源:億速云 閱讀:205 作者:小新 欄目:編程語言

小編給大家分享一下如何在Eclipse中配置開發Struts,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

需求

本文所要結合的Struts應用實例為用戶登錄(logon),用戶登錄(logon)的需求為:

1  接收用戶名和密碼,跳轉到成功頁面,并提示“歡迎您登錄!”。
2  如果用戶名為空就提交表單,則提示“請輸入用戶名!”。
3  如果密碼為空就提交表單,則提示“請輸入密碼!”。
4  如果輸入非法用戶名,則提示“請輸入正確的用戶名!”。
5  通過模型組件,保存登錄信息。

登錄應用實例的框架介紹

用戶登錄(logon)應用由以下模塊組成:

1  模型(M):模型為一個JAVABEAN組件-SaveLogon,包含username(用戶名)和userpassword(密碼)兩個屬性,提供讀取和設置屬性的方法get/set,以及保存登錄信息的方法saveToDb()。saveToDb的任務是把登錄信息保存到持久化存儲系統(例如數據庫)。

2  視圖(V):視圖包括兩個JSP文件,以及一個ActionForm Bean-logonForm。JSP文件分別為:logon.jsp、success.jsp。logon.jsp負責接受用戶輸入的用戶名和密碼以及顯示出錯信息,success.jsp負責顯示登錄成功信息。

3  控制器(C):控制器為Action類logonAction。對數據進行業務邏輯驗證、調用模型組件保存登錄信息、選擇視圖組件返回給用戶。

Struts的工作機制

用戶在視圖組件(logon.jsp)中輸入用戶名和密碼并提交HTML表單,Struts框架會先讀取WEB.XML中關于servlet的配置,然后自動將表單數據封裝到ActionForm Bean中,在本例中是logonForm。logonForm會對提交的數據進行數據合法性驗證(例如最短長度、是否包含非法字符等)。如果ActionForm Bean驗證未通過,則logonForm返回ActionErrors對象,Struts框架會把ActionErrors對象保存在request范圍內,并把請求轉發到視圖組件,并在視圖組件中通過﹤?xml:namespace prefix = html />標簽,展示request范圍內的ActionErrors對象所包含的錯誤信息;如果通過ActionForm Bean驗證,則logonForm返回的ActionErrors對象為NULL,Struts框架將表單數據提交到控制器組件logonAction,控制器對表單數據進行業務邏輯驗證,如果logonAction驗證未通過,則創建包含錯誤信息的ActionMessages對象,并通過saveErrors方法把ActionMessages對象保存到request范圍內,并把請求轉發到視圖組件,并在視圖組件中通過標簽,展示request范圍內的ActionErrors對象所包含的錯誤信息;如果logonAction驗證通過,則Struts框架訪問模型組件,然后Struts框架會返回ActionFoward對象,并根據Struts-config.xml文件的配置情況,決定將ActionFoward對象包含的轉發信息傳遞到那一個視圖組件。

部署Struts框架

Struts的工作機制大家都有了一定的了解了,現在介紹如何在Eclipse中部署Struts框架。

本文的環境前文已經提到,Eclipse以及其插件MyEclipse和TomcatPlugin的安裝本文不介紹。

1    新建一個項目

1)  選擇Java >> Tomcat Project,下一步,如圖一

如何在Eclipse中配置開發Struts
(圖一)

2)填寫項目名稱,如果不采用項目所在目錄的缺省值,請修改,點擊完成。如圖二

如何在Eclipse中配置開發Struts
(圖二)

2    創建Struts框架

1)    右鍵選擇項目 >> 新建 >> 其他 >> MyEclipse >> Web-Struts >> Struts 1.2 >> Struts 1.2 Form,Action & JSP。如圖三。如果這一步出現錯誤,本文不做描述,請參考我的另一邊文章-MyEclipse中創建Struts出現錯誤的解決辦法

如何在Eclipse中配置開發Struts
(圖三)

2)    配置Struts ActionForm 

因為本文的Struts應用實例為用戶登錄,所以Use case選用logon。Superclass選擇如圖所示,其他默認。如圖四

如何在Eclipse中配置開發Struts
(圖四)

接下來填寫Optional Details,輸入Form表單項,本例為用戶名(username)和密碼(userpassword)。點擊Add,輸入請參考圖五、圖六。

如何在Eclipse中配置開發Struts
(圖五)

如何在Eclipse中配置開發Struts
(圖六)

輸后完畢,Optional Details的Form Properties中會顯示。如圖七

如何在Eclipse中配置開發Struts
(圖七)

Methods選項卡的設置我們采用默認設置,不去修改。

點擊JSP選項卡,將“Create JSP form”選項的勾選中,采用默認設置“/form/logon.jsp”。如圖八

如何在Eclipse中配置開發Struts
(圖八)

3)    配置Struts Action

以上步驟完成了對Form的配置,下面配置Action。

在圖八中點擊下一步,采用默認即可。如圖九

如何在Eclipse中配置開發Struts
(圖九)

Parameter和Methods選項也采用默認。

點擊Forwards選項卡,點擊Add,配置成功頁面信息。本文選取根目錄的success.jsp作為成功頁面,Name為logon_sc。如圖十

如何在Eclipse中配置開發Struts
(圖十)

輸后完畢,Optional Details的Forwards中會顯示。如圖十一

如何在Eclipse中配置開發Struts
(圖十一)

點擊完成。

Struts已經配置完畢。看看Eclipse中,項目中多了一些東東,例如struts相關的jar,以及struts-config.xml和tld文件。struts-config.xml的代碼如下:

代碼清單一(struts-config.xml)

﹤?xml version="1.0" encoding="UTF-8"?>
﹤!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

﹤struts-config>

﹤data-sources />

﹤form-beans >

﹤!--這里是ActionForm的配置信息,ActionForm Bean的name為logonForm,對應的類為com.mystruts.struts.form.LogonForm-->

﹤form-bean name="logonForm" type="com.mystruts.struts.form.LogonForm" />

﹤/form-beans>

﹤global-exceptions />

﹤global-forwards />

﹤action-mappings >

﹤!--這里是Action組件的配置信息,描述了從特定的請求路徑到響應的Action的映射-->

﹤!--attribute設置Action關聯的ActionForm在request或者session范圍內的key.就是在request或者session共享內的名稱-->

﹤!--input指定包含表單的URL,當表單驗證失敗的時候發送的URL-->

﹤!--name指定和該Action關聯的Form名字.該名字必須是在form-bean中定義過的,可寫可不寫-->

﹤!--path指定請求訪問Action的路徑,必須以/開頭-->

﹤!--scope指定Form的存在范圍,例如request-->

﹤!--type指定Action組件對應的類-->

﹤action

attribute="logonForm"

input="/form/logon.jsp"

name="logonForm"

path="/logon"

scope="request"

type="com.mystruts.struts.action.LogonAction">

﹤!--這里是forward,即局部轉發配置信息,登錄成功后轉向/success.jsp,name為logon_sc-->

﹤forward

name="logon_sc"

path="/success.jsp"

/>

﹤/action>

﹤/action-mappings>

﹤!--這里是消息資源文件的配置信息,用來配置Resource Bundle.用于存放本地文本消息文件。parameter指定文件名,不包含后綴名。-->

﹤message-resources parameter="com.mystruts.struts.ApplicationResources" />

﹤/struts-config>

創建消息資源文件

視圖組件將使用標簽來輸出文本內容,這些內容來自于Resource Bundle。Resource Bundle對應消息資源文件。

代碼清單二(ApplicationResources.properties)

# 這里是注釋
logon.page.title = 我的第一個Struts

logon.username.error = 請輸入用戶名!

logon.userpassword.error = 請輸入密碼!

logon.badusername.error = 用戶名不能為admin!

logon.baduserpassword.error = 密碼不能為123456!

logon.success = 歡迎您登錄!

為了實現國際化,消息資源文件中的漢字采用的是UTF-8編碼。查看如何實現漢字轉化為UTF-8

創建JSP文件

logon.jsp(所在路徑為/form/)接收用戶輸入的用戶名和密碼,并顯示表單驗證失敗的錯誤信息。success.jsp顯示登錄成功的信息。

JSP文件全部使用客戶化標簽,無JAVA代碼,輸入的文本內容完全由標簽提供。

代碼清單三(logon.jsp)

﹤%@ page contentType="text/html;charset=UTF-8" language="java"%>
﹤%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>

﹤%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>

﹤%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>

 

﹤html>

﹤head>

﹤!--title使用客戶化標簽,文本內容對應的是消息資源文件中logon.page.title的值-->

﹤title>﹤bean:message key="logon.page.title"/>﹤/title>

﹤/head>

﹤body>

﹤html:form action="/logon" method="POST">

用戶名:﹤html:text property="username"/>﹤html:errors property="username"/>﹤br/>

密 碼:﹤html:password property="userpassword"/>﹤html:errors property="userpassword"/>﹤br/>

﹤html:submit value="登錄"/>﹤html:reset value="取消"/>

﹤/html:form>

﹤/body>

﹤/html> 

代碼清單四(success.jsp)

﹤%@ page language="java" pageEncoding="UTF-8"%>
﹤%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>

﹤%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>

﹤%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>

﹤html:html lang="true">

﹤head>

﹤html:base />

﹤title>success.jsp﹤/title>

﹤/head>

 

﹤body>

﹤logic:present name="savelogon" scope="request">

﹤bean:write name="savelogon" property="username"/>

﹤bean:message key="logon.success"/>

﹤/logic:present>

﹤/body>

﹤/html:html>

創建ActionForm Bean組件logonFrom

用戶提交HTML表單后,Struts框架會自動把表單數據封裝到ActionForm Bean(本例是logonForm)中。ActionForm Bean的屬性必須與HTML表單的字段一一對應。ActionForm Bean會對表單數據進行驗證,并提供將HTML表單的字段值重置為默認值的方法(等同于HTML中Form表單的Reset)。

代碼清單五(logonFrom.java)

package com.mystruts.struts.form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

/**
* MyEclipse Struts
* Creation date: 02-27-2006
*
* XDoclet definition:
* @struts.form name="logonForm"
*/
public class LogonForm extends ActionForm {

// --------------------------------------------------------- Instance Variables

/** userpassword property */
private String userpassword;

/** username property */
private String username;

// --------------------------------------------------------- Methods

/**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
//用于表單驗證的validate方法
public ActionErrors validate(
ActionMapping mapping,
HttpServletRequest request) {


//聲明一個ActionErrors對象
ActionErrors errors = new ActionErrors();

//如果用戶名驗證失敗,將ActionMessage對象保存到ActionErrors對象errors中。logon.username.error對應消息資源文件中的logon.username.error的值。
if(username==null || username.length()<3){
errors.add("username", new ActionMessage("logon.username.error"));
}


//如果密碼驗證失敗,將ActionMessage對象保存到ActionErrors對象errors中。logon.userpassword.error對應消息資源文件中的logon.userpassword.error的值。
if(userpassword==null || userpassword.length()<3){
errors.add("userpassword", new ActionMessage("logon.userpassword.error"));
}
// TODO Auto-generated method stub

//返回ActionErrors對象errors,Struts框架會把errors保存在request范圍內,并將請求轉發到視圖組件logon.jsp中,通過來顯示錯誤信息
return errors;
}

/**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {

// TODO Auto-generated method stub
this.username = null;
this.userpassword = null;
}

/**
* Returns the userpassword.
* @return String
*/
public String getUserpassword() {
return userpassword;
}

/**
* Set the userpassword.
* @param userpassword The userpassword to set
*/
public void setUserpassword(String userpassword) {
this.userpassword = userpassword;
}

/**
* Returns the username.
* @return String
*/
public String getUsername() {
return username;
}

/**
* Set the username.
* @param username The username to set
*/
public void setUsername(String username) {
this.username = username;
}

}

創建控制器Action組件logonAction

logonAction對表單數據進行業務邏輯驗證。

代碼清單六(logonAction.java)

package com.mystruts.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

import com.mystruts.struts.SaveLogon;
import com.mystruts.struts.form.LogonForm;

/**
* MyEclipse Struts
* Creation date: 02-27-2006
*
* XDoclet definition:
* @struts.action path="/logon" name="logonForm" input="/form/logon.jsp" scope="request" validate="true"
* @struts.action-forward name="logon_sc" path="/success.jsp"
*/
public class LogonAction extends Action {

// --------------------------------------------------------- Instance Variables

// --------------------------------------------------------- Methods

/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
//通過ActionForm Bean的驗證后,Struts框架會自動調用execute方法
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
// TODO Auto-generated method stub

//獲得表單數據中的username
String username = (String)((LogonForm)form).getUsername();

//獲得表單數據中的userpassword
String userpassword = (String)((LogonForm)form).getUserpassword();

//定義非法用戶名
String badusername = "admin";

//定義非法密碼
String baduserpassword = "123456";


//聲明一個ActionMessages對象
ActionMessages errors = new ActionMessages();

if(badusername.equals(username)){

//如果用戶名驗證失敗,將ActionMessage對象保存到ActionMessages對象errors中。logon.badusername.error對應消息資源文件中的logon.badusername.error的值。
errors.add("username",new ActionMessage("logon.badusername.error",badusername));

//保存ActionMessages對象errors到request范圍。
saveErrors(request,errors);

//返回ActionForward對象,Struts框架會把請求轉發到視圖組件logon.jsp中,通過來顯示錯誤信息。
return(new ActionForward(mapping.getInput()));
}

if(userpassword.equals(baduserpassword)){
errors.add("userpassword",new ActionMessage("logon.baduserpassword.error",baduserpassword));
saveErrors(request,errors);
return(new ActionForward(mapping.getInput()));
}


//定義模型組件SaveLogon
SaveLogon sl = new SaveLogon();
sl.setUsername(username);
sl.setUserpassword(userpassword);
sl.saveToDb();


//控制器組件將SavaLogon對象保存到request范圍,savalogon對應視圖組件success.jsp中﹤?xml:namespace prefix = login />﹤login:present>標簽的name以及﹤?xml:namespace prefix = bear />﹤bear:write>標簽的name
request.setAttribute("savelogon",sl);

//清除request范圍內的ActionForm Bean,因為后面的請求已經不需要了
request.removeAttribute(mapping.getAttribute());


//控制器組件將信息轉交到視圖組件logon.jsp,logon_sc對應struts-config.xml中的forward元素的name
return(mapping.findForward("logon_sc"));
}

}

創建模型組件SaveLogon

本模型提供get/set方法,以及saveToDb方法。在例子中并未實現saveToDb方法。

代碼清單七(SaveLogon.java)

package com.mystruts.struts;

/**
* @author Administrator
*
*/
public class SaveLogon {

private String username = null;
private String userpassword = null;

public void setUsername(String username){
this.username = username;
}

public String getUsername(){
return this.username;
}

public void setUserpassword(String userpassword){
this.userpassword = userpassword;
}

public String getUserpassword(){
return this.userpassword;
}

public void saveToDb(){

}


}

運行

如果用戶名和密碼為空,運行結果如圖十二、圖十三、圖十四所示。

如何在Eclipse中配置開發Struts
(圖十二)

如果用戶名為admin,運行結果如圖十三

如何在Eclipse中配置開發Struts
(圖十三)

如果通過驗證,運行結果如圖十四

如何在Eclipse中配置開發Struts
(圖十四)

看完了這篇文章,相信你對“如何在Eclipse中配置開發Struts”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

郁南县| 哈巴河县| 禄丰县| 临海市| 蒙阴县| 贵南县| 六盘水市| 嘉鱼县| 洪湖市| 盐城市| 平武县| 湖北省| 合肥市| 定安县| 利辛县| 城口县| 板桥市| 汶上县| 彭州市| 黄大仙区| 伊春市| 新安县| 即墨市| 崇信县| 陕西省| 青阳县| 徐汇区| 盘山县| 讷河市| 红桥区| 观塘区| 尼玛县| 泸西县| 长汀县| 安顺市| 陆丰市| 梨树县| 双城市| 巴青县| 海安县| 淮北市|