`
wenson
  • 浏览: 1053509 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

手把手教你在Eclipse中配置并开发Struts(二)

 
阅读更多
作者:baggio785

来源:http://blog.csdn.net/baggio785

原文地址:http://blog.csdn.net/baggio785/archive/2006/03/10/620579.aspx(转载请注明出处)

日期:2006-3-9

关键词:Eclipse,MyEclipse,Struts,Java

创建消息资源文件

视图组件将使用标签来输出文本内容,这些内容来自于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">

&#x7528;&#x6237;&#x540D;&#xFF1A;<html:text property="username"/><html:errors property="username"/><br/>

&#x5BC6;&#x3000;&#x7801;&#xFF1A;<html:password property="userpassword"/><html:errors property="userpassword"/><br/>

<html:submit value="&#x767B;&#x5F55;"/><html:reset value="&#x53D6;&#x6D88;"/>

</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中,通过<html:errors/>来显示错误信息
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中,通过<html:errors/>来显示错误信息。
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中<login:present>标签的name以及<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(){

}


}

 

运行

如果用户名和密码为空,运行结果如图十二、图十三、图十四所示。


(图十二)

如果用户名为admin,运行结果如图十三


(图十三)

如果通过验证,运行结果如图十四


(图十四)

 

 

小结

1    为了降低偶合度,应该建立一个存放常量的JAVA文件。例如logonAction.java中的String badusername = "admin",或者request.setAttribute("savelogon",sl)的第一个参数。

2    要实现Struts的国际化,支持多国语言,编码方式一定要为UTF-8。

3    在配置Action时,见图九,如果选取redirect,则在struts-config.xml中的action元素会多一个属性,redirect="true"。运行的结果是success.jsp中无法获得request范围内的savelogon对象。

 手把手教你在Eclipse中配置开发Struts(一)

 


分享到:
评论

相关推荐

    在Eclipse中配置Struts2项目(html)手把手教会你 +struts2 标签库介绍(html) + STRUTS2学习文档.pdf + Struts2―表单验证validate(html) + struts2和struts的比较 + struts教程(html)

    在Eclipse中配置Struts2项目(html)手把手教会你 如何在Eclipse中配置Struts2。 struts2 标签库介绍(html)对Struts2的标签做了详细的介绍让你轻松掌握Struts2的标签。 STRUTS2学习文档.pdf 对Struts2的一些配置...

    struts2手把手教你struts2

    本文旨在手把手教你如何入门 Struts2,通过实际操作来理解其核心概念和配置过程。 首先,我们来看一下 Struts2 的优点和它解决的问题。Struts2 作为 MVC 2 模型的框架,提供了丰富的功能,比如一个完整的标签库...

    手把手教你Struts2.0

    - 在struts.xml文件中,你可以定义Action类、结果页面、拦截器栈等,例如`&lt;action&gt;`元素定义了一个动作,`&lt;result&gt;`元素定义了动作执行后的跳转页面。 6. **Action和结果**: - Action类是业务逻辑的载体,它接收...

    SSH入门教程(手把手教你)

    SSH入门教程:手把手教你整合Struts1.2、Spring和Hibernate SSH是Java开发中的一个经典技术栈,由Struts、Spring和Hibernate三个开源框架组成。本教程将引导初学者逐步了解并掌握这三个框架的整合,从而实现一个...

    手把手教你SSH2整合

    首先,确保已安装JDK、Eclipse或IDEA等开发环境,并下载Spring、Struts2和Hibernate的最新稳定版库。 2. **创建项目结构** 创建一个新的Maven或Gradle项目,按照标准的Java Web项目结构组织源代码和配置文件。 3...

    手把手struts2.0+hibernate3.1+spring2.0环境配置和实验指导

    - 在MyEclipse中配置好数据库连接,并确保连接正确无误。 2. **创建Web项目** - 使用MyEclipse创建一个新的Web项目,命名为`aaa`。 3. **引入Spring框架** - 通过MyEclipse引入Spring框架的所有必需的jar包,并...

    手把手教你实现第一个SSH项目

    - **ActionForm**:在Struts中,ActionForm是用于在Action类和JSP页面之间传递数据的类。在这里,我们创建了一个名为`loginForm`的ActionForm,包含两个String类型的属性`username`和`password`。 - **Action**:...

    一个简单的手把手叫你写购物车的PDF文件

    标题中的“一个简单的手把手教你写购物车的PDF文件”表明这是一个教程性质的文档,旨在指导读者如何构建一个基础的购物车系统。购物车是电子商务网站的核心功能之一,它允许用户选择并存储他们想要购买的商品,直到...

    jqgrid 项目手把手开发文档

    文档中详细介绍了项目的基本开发流程、所需环境配置以及具体的实施步骤,便于开发人员在实际工作中参考使用。 #### 三、开发原则 - **尽量简化**:简化代码结构,降低维护难度。 - **提高代码复用性**:避免重复...

    用案例学Java Web整合开发 源码

    《用案例学JavaWeb整合开发:Java+Eclipse+Struts2+Ajax》中的“组织机构和用户管理、权限管理、合同管理、项目管理、工作流引擎、全文检索引擎、数据导出组件”等功能模块可以直接应用在真实的系统中。

    struts学习资料

    3. **Interceptor拦截器**:这是Struts2的一个重要特性,它允许你在Action执行前后插入自定义的处理逻辑,如日志记录、权限检查等。拦截器链使得代码结构更加清晰,易于维护。 4. **结果类型(Result)**:Action...

    Struts教学参考书

    - **开发环境配置与案例演示**:手把手指导搭建Struts开发环境,使用Eclipse和MyEclipse,不依赖插件自动生成,而是手动创建`struts-config.xml`配置文件和Action类,增强对框架配置的理解。 - **互动教学**:在配置...

    手把手练习SSH实例

    在ActionForm配置中,选择动态Form并继承自`DynaValidatorForm`,定义两个属性`username`和`password`。同时,设置`jsp`文件的路径和Input source。 3. **创建forwards** 创建一个名为`indexGo`的forwards,用于在...

    MyEclipse-Struts-01-1.rar_Java编程_Java_

    【描述】中的内容揭示了该教程的实践性质,"手把手教你怎么使用MyEclipse部署框架和编程"意味着它将包含一系列步骤指导,逐步演示如何在MyEclipse中设置Struts项目,编写代码,以及如何测试和运行应用。这种教学方式...

    web的Maven工程代码.zip

    在本案例中,"web"可能指的是基于Java的Web应用,如Spring MVC或Struts等框架开发的项目。 【描述】"web的Maven工程代码"暗示了这个压缩包包含了一个完整的Web应用项目结构,其中包括了Maven配置文件(pom.xml)、...

    major.zip

    标题中的"major.zip"是一个压缩文件,通常用于存储多个文件或文件夹以便更方便地传输或存储。...在实际工作中,这两个文件可能是某个Java项目的一部分,需要解压并结合其他上下文信息来理解其用途和功能。

    实验报告5.doc.zip

    在本实验报告中,我们将深入探讨Java编程语言的相关知识点,这是一个广泛应用于软件开发、Web应用程序、移动应用(尤其是Android平台)以及企业级解决方案的强大工具。Java以其“一次编写,到处运行”的理念,提供了...

    项目五:网上拍卖系统 网上拍卖系统

    项目五:网上拍卖系统 介绍 基于B2C的网上拍卖系统主要用于帮助人们应用互联网方便快捷买到自己所中意的商品,并参与到秒杀与竞拍当中。 数据库:SQL Server 使用技术:Spring + Struts2 + ...开发工具:Eclipse 链接

Global site tag (gtag.js) - Google Analytics