手把手教你在Eclipse中配置并开发Struts(二)
2006-10-12 08:00
766 查看
作者: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)
为了实现国际化,消息资源文件中的汉字采用的是UTF-8编码。查看如何实现汉字转化为UTF-8。
创建JSP文件
logon.jsp(所在路径为/form/)接收用户输入的用户名和密码,并显示表单验证失败的错误信息。success.jsp显示登录成功的信息。
JSP文件全部使用客户化标签,无JAVA代码,输入的文本内容完全由标签提供。
代码清单三(logon.jsp)
代码清单四(success.jsp)
创建ActionForm Bean组件logonFrom
用户提交HTML表单后,Struts框架会自动把表单数据封装到ActionForm Bean(本例是logonForm)中。ActionForm Bean的属性必须与HTML表单的字段一一对应。ActionForm Bean会对表单数据进行验证,并提供将HTML表单的字段值重置为默认值的方法(等同于HTML中Form表单的Reset)。
代码清单五(logonFrom.java)
创建控制器Action组件logonAction
logonAction对表单数据进行业务逻辑验证。
代码清单六(logonAction.java)
创建模型组件SaveLogon
本模型提供get/set方法,以及saveToDb方法。在例子中并未实现saveToDb方法。
代码清单七(SaveLogon.java)
运行
如果用户名和密码为空,运行结果如图十二、图十三、图十四所示。
(图十二)
如果用户名为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(一)
来源: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 = 欢迎您登录! |
创建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> |
<%@ 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.userpas 4000 sword.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中配置并开发Struts(二)
- 手把手教你在Eclipse中配置并开发Struts(一)
- 手把手教你在Eclipse中配置开发Struts(二)
- 手把手教你在Eclipse中配置开发Struts
- 手把手教你在Eclipse中配置并开发Struts(二)
- 手把手教你在Eclipse中配置开发Struts(一)
- 手把手教你在Eclipse中配置开发Struts(一)
- 手把手教你在Eclipse中配置开发Struts(一)
- 手把手教你在Eclipse中配置开发Struts(二)
- 手把手教你在Eclipse中配置并开发Struts(二)
- 手把手教你在Eclipse中配置开发Struts(一)
- 如何配置基于eclipse的easy structs插件,并介绍了如何结合使用easy structs和eclipes来开发struts的应用
- Eclipse开发struts完全指南(二)安装与配置
- Java EE中级开发工程师手把手教你Eclipse开发环境配置 之 从JKD到Web全套
- eclipse 下配置 struts 开发环境
- 配置eclipse 3.4开发struts应用
- 配置eclipse 3.4开发struts应用
- 你在Eclipse中配置开发Struts(一)
- Eclipse WTP 开发Struts环境配置
- Eclipse3.0.1+Myeclipse3.8.2+tomcat5开发第一个struts应用(配置篇