通过代码示例跟我学Struts框架——利用JBuilder创建Struts应用示例(第2部分)
- 格式:pdf
- 大小:286.22 KB
- 文档页数:11
struts1开发学习笔记使用一个简单的例子记录struts1开发过程。
0、 描述主要功能描述:index 界面上只有两个超链接,分别可以打开录入产品界面和显示产品列表界面。
newProduct.jsp 是录入的界面,searchProduct.jsp 是查询列表的界面。
ProductAction.java 是处理逻辑的action简单描述流程图:1、 构建环境在Myeclipse 中,新建一个工程StrutsTest ,选择该工程,右键Myeclipse->add srutscapapibality ,弹出界面,选择struts1.2支持。
如下图所示:添加完struts 支持后,lib 目录下会增添struts 的jar 包、增添struts 的配置文件:/WEB-INF/struts-config.xml 、同时在web.xml 中增添了struts 的配置。
2、 代码编写2)创建工具类Util.java,从数据库连接池中获得连接。
需要两个步骤第一步:在WebRoot/META-INF/下新建一个context文件,通过jndi方式配置数据源,第二步:在util类中读取配置获得连接,util.java如下:3)创建工具类EncodingFilter.java,自定义过滤器,并在web.xml中配置,参考web.xml配置中内容。
EncodingFilter.java的内容如下:4)修改web.xml,指定首页为index.jsp。
文件内容如下:最后定义了一个fileld 的过滤器,是用来过滤字符编码的,后面会提到。
6)index.jsp中提到productAction.action?method=viewAddForm,需要在在配置文件中配置了action的实现类,以及作为上传数据时用来保存数据的form:productForm10)searchProduct.jsp是查询结果界面,代码如下:http://localhost:8080/StrutsTest即可访问。
Struts的原理和优点.Struts工作原理MVC即Model—View—Controller的缩写,是一种常用的设计模式。
MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。
MVC的工作原理,如下图1所示:Struts 是MVC的一种实现,它将Servlet和JSP 标记(属于J2EE 规范)用作实现的一部分。
Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展.Struts的工作原理,视图:主要由JSP生成页面完成视图,Struts提供丰富的JSP 标签库: Html,Bean,Logic,Template等,这有利于分开表现逻辑和程序逻辑。
控制:在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。
ActionServlet是一个通用的控制组件。
这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。
它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。
另外控制组件也负责用相应的请求参数填充Action From(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。
动作类实现核心商业逻辑,它可以访问java bean 或调用EJB。
最后动作类把控制权传给后续的JSP 文件,后者生成视图。
所有这些控制逻辑利用Struts-config.xml文件来配置。
模型:模型以一个或多个java bean的形式存在。
这些bean分为三类:Action Form、Action、JavaBean or EJB.Action Form通常称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。
Action通常称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用Java Bean或EJB等。
jbuilder 用法(实用版)目录1.什么是 JBUILDER2.JBUILDER 的基本用法3.JBUILDER 的配置4.JBUILDER 的优点5.JBUILDER 的缺点6.JBUILDER 的发展前景正文1.什么是 JBUILDERJBUILDER 是一个使用 Java 编写的 Web 应用程序开发框架。
它允许开发人员使用简单的拖放操作构建 Web 应用程序,而无需编写复杂的HTML 和 JavaScript 代码。
JBUILDER 旨在使 Web 应用程序开发变得更加快速、简单和可靠。
2.JBUILDER 的基本用法JBUILDER 的基本用法包括以下几个步骤:(1)下载和安装 JBUILDER:可以从 JBUILDER 的官方网站上下载并安装 JBUILDER。
(2)创建一个新的 JBUILDER 项目:打开 JBUILDER,选择“新建项目”,然后选择一个项目模板,例如“空白项目”或“Maven 项目”。
(3)设计用户界面:在 JBUILDER 的“设计”视图中,可以使用拖放操作构建用户界面。
例如,可以添加文本框、按钮和表格等控件。
(4)编写后端代码:在 JBUILDER 的“代码”视图中,可以编写后端代码。
例如,可以编写 Servlet 或 Spring Boot 控制器,以及实体类、接口和 DAO 等。
(5)运行和测试应用程序:在 JBUILDER 的“运行”视图中,可以运行和测试应用程序。
例如,可以查看应用程序的页面响应,或者测试应用程序的功能。
3.JBUILDER 的配置JBUILDER 提供了多种配置选项,以满足不同开发人员的需求。
例如,可以配置 JBUILDER 的开发环境、构建工具和应用程序服务器等。
4.JBUILDER 的优点JBUILDER 具有以下几个优点:(1)简单易学:JBUILDER 的拖放操作使得 Web 应用程序开发变得更加简单和容易学习。
(2)快速开发:JBUILDER 的模板和组件库可以加快 Web 应用程序的开发速度。
struts2入门手册首先这个教程是基于你已经安装了myeclipse的基础上的,如果你还没有安装myeclipse 工具软件的话,你需要马上去安装一个。
如果你已经有了工具软件了的话,现在就按照以下步骤来入门struts2吧。
一、下载struts2进入struts的官网/,点击download,选择Full Distrybution:下的struts2-xxx-all.zip,下载struts2的最新版本,将压缩包解压,放置到D盘目录下。
二、解压struts2进入你解压后的struts2文件夹中,到D:\struts2-xxx\apps中,解压其中的struts2-blank.war 压缩文件到D:\struts2-xxx\example,这是struts2提供的基础例子,里面的WEB-INF\lib目录下的包正是struts2正常工作所需要的基本包。
三、导入struts2基本包打开你的myeclipse,创建一个web project工程,命名为test(你也可以自己随意起一个),不要急着点击Finish,先选择Next>,继续选择Next>,在弹出的对话框中把第二个单选框打勾,如图,再点击Finish。
创建好之后在你创建的工程上目录下的WebRoot/WEB-INF/lib目录上单击右键,选择import...,选择General下的File System,点击Next>,选择Browse...,浏览选择到D:\struts\example\WEB-INF\lib目录,点击确定。
选择Sellct All,点击Finish,就完成了struts需要的最基础的核心包的导入。
四、用struts实现一个简单的登陆验证1.修改工程目录下的WebRoot\WEB-INF目录下的web.xml文件,将里面的内容替换为如下代码:<?xml version="1.0"encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID"version="3.0"><display-name>test</display-name><!-- 设置初始页面的URL --><welcome-file-list><welcome-file>login.jsp</welcome-file></welcome-file-list><!-- 设置struts过滤器 --><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>2.在工程的src目录下创建struts.xml,代码如下:<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><!-- 是否开启动态方法调用 --><constant name="struts.enable.DynamicMethodInvocation"value="false"/> <!-- 指定被struts2处理的请求的后缀类型,多个用逗号隔开 --><constant name="struts.action.extension"value="action"/><!-- 设置浏览器是否静态缓存内容,开发阶段最好关闭 --><constant name="struts.devMode"value="true"/><!-- 设置当struts.xml改动后,是否重新加载,默认为false,开发环境下最好打开 --> <constant name="struts.configuraction.xml.reload"value="true"/> <package name="myPackage"namespace="/"extends="struts-default"> <action name="login"class="action.LoginAction"><result name="success">/welcome.jsp</result> <result name="input">/login.jsp</result></action></package></struts>3.在工程的src目录下创建package(包),命名为action,在action中新建class,命名为LoginAction,代码如下:package action;import javax.servlet.http.HttpSession;import com.opensymphony.xwork2.ActionSupport;import org.apache.struts2.ServletActionContext;@SuppressWarnings("serial")public class LoginAction extends ActionSupport {private String name;private String password;public String getName() {return name;}public void setName(String name) { = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String forward() throws Exception {return SUCCESS;}//重载ActionSupport中的execute()方法public String execute() throws Exception {//验证输入的Name是否为"name",是则返回"success"否则返回"input"if("name".equals(name)) {HttpSession session = ServletActionContext.getRequest().getSession();session.setAttribute("name", name);return SUCCESS;} else {return INPUT;}}}4.在工程的WebRoot目录下创建login.jsp,代码如下:<%@page language="java"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib prefix="s"uri="/struts-tags"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> <title>Login</title></head><body><!-- 创建一个登陆表单 --><s:url action="login"id="loginUrl"></s:url><s:form action="%{loginUrl}"method="post"><s:textfield label="Name"name="name"/><s:password label="Password"name="password"/><s:submit></s:submit></s:form></body></html>5.在工程的WebRoot目录下创建welcome.jsp,代码如下:<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@taglib prefix="s"uri="/struts-tags"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> <title>Welcome</title></head><body><h1>登陆成功</h1></body></html>现在就来验证一下我们的登陆页面吧,选择工具栏中的按钮,在弹出的对话框中单击project后的矩形选框,从下拉列表中选择你创建的工程,然后单击Add,从弹出的对话框中单击sever后的矩形选框,从下拉列表中选择tomcat7,单击Finish。
Struts2基础知识Struts2概述1.Struts2框架应用javaee三层结构中的web层框架。
2.Struts2框架在struts1和webwork基础之上发展的全新框架。
3.Struts2所解决的问题:在以往实现一个功能时,都需要写很多的servlet,从而造成后期维护上的不方便。
图解:4.现在比较稳定的Struts2版本struts-2.3.24-all.zip5.web层常见框架1.struts2.springMVCStruts2框架入门1.导入jar包1.在lib里面有jar包,但不能全部导入,因为里面含有一些spring包,是不能使用的,导入会导致程序不能运行。
2.到app目录里面复制案例的jar包是最好的方法。
2.创建action3.配置action类的访问路径1.创建struts2核心配置文件,该核心配置文件位置和名称是固定的,位置必须在src下面,名称为struts.xml 。
2.引入dtd约束,可以在案例文件中找到,复制在struts.xml文件中即可。
3.action的配置*注意访问路径:http://域名/端口号/项目名/action名.action注意:.action可以省略,但建议不要省略,为了兼容一些老版本的浏览器。
4.配置Struts2的过滤器,可以在案例中的web.xml文件中找到,复制粘贴即可。
Struts2执行过程图解:Struts2配置1.是一种常量标签2.修改Struts2的默认常量值1.常用方式在struts.xml中进行配置。
2.其它两种方式1.在src下面创建struts.properties文件并修改。
2.在web.xml文件中进行修改。
3.Struts2最常用的常量struts.il8n.encoding=UTF-8,解决表单在通过post方式提交中文时,中文乱码的问题。
Struts2笔记(一)可使用全局页面。
1、配置方法:在package标签下配置2、注意:该标签只能在一个package标签中使用,如果有多个标签,需要重新定义。
/topic/128973struts2表单标签1、struts资源文件中文解决方法在命令行中输入以下命令native2ascii -encoding gb2312 ApplicationResources.properties ApplicationResourcesgbk.properties第一个文件为资源文件,第二个为新生成的文件,将新生成的文件拷入工程就可以了2、开发struts2流程1.创建web工程2.拷贝commons-fileupload-1.2.1.jar,commons-logging-1.0.4.jar,freemarker-2.3.13.jar,ognl-2.6.11.jar,struts2-core-2.1.6.jar,xwork-2.1.2.jar,放入web-inf--lib中3.在web.xml文件中添加struts2的核心Filter,过滤客户端发送过来的请求,代码如下<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>org.apache.struts2.dispatcher.FilterDispatcher为struts2中提供的一个控制器4.创建struts.xml文件,放在src目录下.代码如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="strutsqs" extends="struts-default"></package></struts>5.在src目录下创建一个类,创建几个属性及对应的get,set方法6.创建public String execute() throws Exception方法,7.在struts.xml文件中添加如下代码:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="strutsqs" extends="struts-default"><action name="login" class="ers.action.LoginAction"><result name="success">/Main.jsp</result><result name="failed">/Login.jsp</result></action></package></struts>3、创建拦截器:1.创建类继承AbstractInterceptor,覆盖intercept方法,代码如下public String intercept(ActionInvocation invocation) throws Exception {LoginAction action=(LoginAction)invocation.getAction();String result=invocation.invoke();return null;}2.在struts.xml文件中配置如下<package name="strutsqs" extends="struts-default"><interceptors><interceptor name="myInterceptor" class="ers.interceptor.LoginInterceptor"> <param name="name">简单拦截器</param></interceptor></interceptors><action name="login" class="ers.action.LoginAction"><result name="success">/Main.jsp</result><result name="failed">/Login.jsp</result><result name="input">/Login.jsp</result><interceptor-ref name="myInterceptor"></interceptor-ref></action></package>也可以创建拦截器栈<interceptors><interceptor name="myinterceptor1"class="com.haitian.bbs.interceptor.MyInterceptor"></interceptor> <interceptor name="myinterceptor2"class="com.haitian.bbs.interceptor.MyInterceptor2"></interceptor> <interceptor-stack name="stack1"><interceptor-ref name="myinterceptor2"></interceptor-ref><interceptor-ref name="myinterceptor1"></interceptor-ref><interceptor-ref name="defaultStack"></interceptor-ref></interceptor-stack></interceptors>4.标签中引用资源文件内容<s:textfield name="age" key="regist.age" value="%{getText('regist.password')}"></s:textfield><s:select list=”#{‘1’:getText(‘sex.man’),’0’:getText(‘sex.women’)}”<s:text name=”bel”/>5.创建资源文件在src下创建messageResource_zh_CN.properties文件在src下创建struts.properties文件,添加struts.custom.i18n.resources=messageResource_zh_CN 6.Action中访问servlet APIActionContext ctx=ActionContext.getContext();ctx.getApplication()获得application对象ctx.put(“”,””);//相当于request.setAttribute(“”,””);ctx.getSession()//获得session对象get(Object key);//类似于调用HttpServletRequest的getAttribute(String name);方法Map getApplication();返回一个Map对象,该对象模拟了应该的ServletContext实例Map getSession();返回一个Map对象,该Map对象模拟了HttmpSession实例Map getParameters();获取所有的请求参数,类似于调用HttpServletRequest对象的getParameterMap方法Void setSession(Map session);直接传入一个Map实例,将实例里的key-value对转换成session的属性名\属性值HttpServletRequest request=ServletActionContext.getRequest();7.Action访问资源文件Action 继承ActionSupport调用this.getText(“ername”);Jsp访问资源文件<s:text name=”bel”/>8.资源文件_各国代码资源文件命名格式:baseName_language_country.propertiesLocale[] localeList=Locale.getAvailableLocales();for(int i=0;i<localeList.length;i++){System.out.println(localeList[i].getDisplayCountry()+”=”+localeList[i].getCountry()+””+localeList[i ].getDisplayLanguage()+”=”+localeList[i].getLanguage());}9.将struts.xml分开在struts.xml中添加如下代码,将其它配置文件导入<struts><include file=”struts-part1.xml”/>..</struts>被包含的配置文件是标准的struts2配置文件,一样包含dtd 信息、strut2配置文件的根元素,此时struts.xml文件中不能再定义action10全局结果result<global-results><result name="">/te.jsp</result></global-results>11模型驱动1创建一个JavaBean,生成setter,getter方法2创建action类实现ModelDriven接口12.创建拦截器1创建类继承AbstractInterceptor,覆盖intercept(ActionInvocation invocation)方法2. ActionContext ac=arg0.getInvocationContext();Map session=ac.getSession();获得session对象Object obj=session.get(“CURRENTUSERBEAN”);//获得session中是否存在此对象If(obj==null)没有登陆过Return “login”;ElseReturn invocation.invoke();3.LoginAction la=(LoginAction)invocation.getAction();获得被拦截的Action 实例4.String result=invocation.invoke();调用execute方法,将拦截方法返回的字符串做为拦截器的返回值或者返回其它字符串,此字符串与struts.xml文件中的result标签中的结果对应。
一、发展历史及简介发展历史Struts最早是作为Apache Jakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServer Pages、Servlet、标签库以及面向对象的技术水准。
Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。
这个框架之所以叫"Struts",是为了提醒我们记住那些支撑我们房屋,建筑,桥梁,甚至我们踩高跷时候的基础支撑。
这也是一个解释Struts在开发Web应用程序中所扮演的角色的精彩描述。
当建立一个物理建筑时,建筑工程师使用支柱为建筑的每一层提供支持。
同样,软件工程师使用Struts为业务应用的每一层提供支持。
它的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。
我们仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。
如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。
早期Smalltalk程序语言便采用了MVC(Model-View-Controller)模式(Patterns)以增加程序代码弹性,MVC模式将程序代码整理切割为三部分,Model部分是业务与应用领域(Business domain)相关逻辑、管理状态之对象,Controller部分接收来自View所输入的资料并与Model部分互动,struts业务流程控制(Flow Control)之处,View部分则负责展现资料、接收使用者输入资料。
在Java应用中,JFC/Swing、AWT、JSP皆是可用作View的技术规格,而JavaBean与Enterprise JavaBean规格则可用于Model程序代码,一旦应用程序以MVC模式加以适当的分割,Model部分程序代码可在不同使用者接口外观的应用程序中重复使用。
随着JSP与Servlet技术大量应用于以Web为基础的应用程序,Java开发人员群体认为应以较佳的模式以提升Web应用程序的可维护性与重复使用性。
Struts2入门初步需掌握1.struts2概述2.struts2环境搭建(第一个struts2的应用程序)3.struts.xml文件配置详解4.struts2请求的URL的搜索路径的顺序概述5.struts2工作原理概述6.struts2指定多个配置文件7.struts2动态方法调用8.使用通配符定义action一:简介Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。
其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。
虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。
二:环境搭建搭建Struts2环境时,我们一般需要做以下几个步骤的工作:1.找到开发Struts2应用需要使用到的jar文件.下载官网:/download.cgi#struts221解压后:开始学习使用依赖的最基本的jar 包2:编写Struts2的配置文件解压其中一个案例在此目录下找到struts.xml 文件先拷贝到项目的src 下。
再对起进行修改。
删除剩余如下代码:[html]01.<?xml version ="1.0"encoding ="UTF-8" ?> 02.<!DOCTYPE struts PUBLIC 03."-//Apache Software Foundation//DTD StrutsConfiguration 2.3//EN" 04."/dtds/struts-2.3.dtd"> 05.06.<struts> 07.08. </struts>无法加载插件。
Struts2(上)一、经典的MVC模式二、Struts1.x对MVC的实现三、Struts1.x的主要组件和作用组件作用ActionServlet 中央控制器Action 分控制器,调用JavaBean实现业务逻辑,Action可以分为Action、DispatchAction等不同类型ActionForm 封装参数,实现服务器验证,文件上传等Forward 转发到目的地,可以是JSP,也可以是另一个ActionStruts-config.xml 配置文件,配置有ActionForm,Action,Forward等,通过XML解析,然后使用反射技术使用该文件Struts标签库和JSTL类似,和Struts-config.xml、ActionForm、Action等对象可以紧密集成四、Struts1.x 开发实例-登录程序见案例。
五、Struts2(WebWork)的MVCStruts2的MVC架构六、Struts2的主要组件组件作用FilterDispatcher 起中央控制器作用的过滤器Action 处于Model层的Action,调用JavaBean实现业务逻辑struts.xml 核心配置文件,配置有Action、Result等result 和forward类似,转发的目的地,支持多种视图技术。
七、Struts2的实例-登录在MyEclipse环境中建立一个新的web工程,名称“Struts2Login”,存放路径“f:\Struts2Login”。
在Struts2.0.11版本中找到war包struts2-blank-2.0.11.war,解开该war包,在WEB-INF/lib 目录下复制出所有的jar包,这些jar包就是一个Struts2程序所需要的基础jar包,把它们复制到新建的web工程的WEB-INF/lib目录中。
在src目录下建立一个类,包名mypack,类名UserAction,其代码如下:package mypack;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport {private String username;private String userpass;public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getUserpass() {return userpass;}public void setUserpass(String userpass) {erpass = userpass;}@Overridepublic String execute() throws Exception {if ("Mike".equals(username) && "123".equals(userpass)|| "张三".equals(username) && "abc".equals(userpass))return "success";elsereturn "error";}}在src目录下建立Struts2的配置文件struts.xml,内容如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><!-- 定义包管理配置的action 继承struts-default.xml中的配置 --><package name="actions" extends="struts-default"><!-- 定义Action(login.action) --><action name="login" class="erAction"><!-- 定义转发路径对应的字符串名 --><result name="success">/Success.jsp</result><result name="error">/Error.jsp</result></action></package></struts>修改web.xml,在其中加入一个过滤器,过滤/*路径。
目录1.1利用JBuilder创建Struts应用示例(第2部分) (2)1.1.1对用户的表单输入进行检查 (2)1.1.2采用服务器端的检查方法---ActionForm组件中 (4)1.1.3采用UserLoginAction进行检查 (9)1.1.4测试本实例的应用效果 (10)1.1利用JBuilder创建Struts应用示例(第2部分)1.1.1对用户的表单输入进行检查1、采用客户端的检查方法JavaScript(1)修改userLogin.jsp页面<%@ page contentType="text/html; charset=GBK" %><%@ 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>userLogin</title><script type="text/javascript" language="javascript">function checkUserNameAndPassWord(thisForm){if((erName.value==null)||(erName.value=="")){window.alert("请输入您的用户名称!");return false;}elseif((erPassWord.value==null)||(erPassWord.value=="")) {window.alert("请输入您的用户密码!");return false;}return true;}</script></head><body bgcolor="#ffffff"><html:form action="/userLoginURI.do" method="post" onsubmit="return checkUserNameAndPassWord(this);" ><table border="0"><tr><td>用户名称:</td><td><html:text property="userName" /></td></tr><tr><td>用户密码:</td><td><html:password property="userPassWord" /></td></tr><tr><td colspan="2" align="center"><html:submit value="提交" /></td></tr></table></html:form></body></html>(2)测试或者1.1.2采用服务器端的检查方法---ActionForm组件中如果是采用了ActionForm中的validate()方法的话,首先,struts-config.xml中Action 需要加入validate="true";其实,在Actionform中的validate必须返回一个自己定义的Actionerrors。
1、修改userLogin.jsp页面中的表单定义<html:form action="/userLoginURI.do" method="post" onsubmit="return checkUserNameAndPassWord(this);" ><html:form action="/userLoginURI.do" method="post" >2、在UserLoginForm类中进行检查public ActionErrors validate(ActionMapping actionMapping,HttpServletRequest httpServletRequest) { ActionErrors actionErrors=new ActionErrors();if((userName==null)||(userName=="")||(userName.length()==0)){actionErrors.add("userName",new ActionMessage("userNameEmpty")); }elseif((userPassWord==null)||(userPassWord=="")||(userPassWord.length()==0)) {actionErrors.add("userPassWord",newActionMessage("userPassWordEmpty"));}return actionErrors;}3、在ApplicationResources.properties中添加下面的内容userNameEmpty="请输入您的用户名称"userPassWordEmpty="请输入您的用户密码"userNameInValid="您所输入的用户名称不是所要求名称:yang"4、在userLogin.jsp中显示错误提示<action input="/userLogin.jsp"name="userLoginForm" path="/userLoginURI" scope="request" type="erLoginAction" validate="true"><forward name="loginSuccess" path="/loginSuccess.jsp" /><forward name="loginFailure" path="/loginFailure.jsp" /></action><div> <html:errors /></div>或者<div> <html:errors property="userNameEmpty"/></div>5、测试一下D:\StrutsExamp\SSHStrutsWeb\src>native2ascii ApplicationResources.properties App licationResources.propertiesuserNameEmpty=\u8bf7\u8f93\u5165\u60a8\u7684\u7528\u6237\u540d\u79f0userPassWordEmpty=\u8bf7\u8f93\u5165\u60a8\u7684\u7528\u6237\u5bc6\u7801 userNameInValid=\u60a8\u6240\u8f93\u5165\u7684\u7528\u6237\u540d\u79f0\u4e0d\u66 2f\u6240\u8981\u6c42\u540d\u79f0\uff1ayang再测试执行一下或者1.1.3采用UserLoginAction进行检查也需要先定义一个Actionerrors,然后再通过saveErrors(request,errors);把Actionerrrors保存到request中。
1、UserLoginForm中的validate方法进行保持不变,进行保留2、在UserLoginAction类中ActionErrors actionErrors=new ActionErrors();if(!userName.equals("yang")){actionErrors.add("invalidUserName",newActionMessage("userNameInValid"));this.saveErrors(request,actionErrors);return mapping.getInputForward();}1.1.4测试本实例的应用效果思考:如果将ActionErrors改变为ActionMessage,应该怎样进行处理呢?ActionMessages是Struts 1.1所新增的类别,它变成了ActionErrors的父类别,同样的,ActionMessage也是Struts 1.1新增的类别,它是ActionError的父类别,资料的格式与完整性检查在ActionForm中我们已经验证了,接下来我们在Action中检查是否符合名称与密码,如果不符合就加入相关的讯息。
在Struts 1.1中特意将Message与Error区别,该是认定所谓的Error是使用者的输入在完整性或格式等上有误,而Message是指输入的资料基本上没有错误,但不能符合後续的商务处理。