struts2开发样例
Struts2的入门案例

北大青鸟中关村:Struts2的入门案例Struts2 是一个非常优秀的MVC框架,是基于Model2 设计模型设计的.在企业的开发中Struts2框架越来越多的被使用,所以我们来配置一下Struts2的一个使用案例.搭建struts2环境时,我们一般需要做以下几个步骤的工作:第一步:创建javaweb工程第二步:北大青鸟中关村:找到开发Struts2应用需要使用到的jar 文件.到/download.cgi#struts2014下载struts-2.x.x-all.zip,我们使用版本为2.3.3。
下载完后解压文件,开发struts2应用需要依赖的jar文件在解压目录的lib文件夹下。
不同的应用需要的JAR包是不同的。
下面给出了开发Struts 2程序最少需要的JAR。
如图:第三步:在WebRoot下新建demo1的文件夹在demo1下创建页面demo1.jsp代码如下<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!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>Insert title here</title></head><body><h1>访问Action</h1><a href="${ pageContext.request.contextPath }/hello.action">访问Action</a></body></html>在浏览器中的运行结果如下:北大青鸟中关村:当点击这个超链接的时候,我们需要提交到后台的Action中.这时我们就需要编写一个Action第四步:创建Action文件,用来控制页面和服务器之间的转发。
struts2例子

三.Struts2实例下面我们通过实例来学习一下Struts2的使用。
通过本实例的学习,我们将会对struts2的表单以及表单验证有一个初步的认识、了解struts2的配置以及初探Struts2的本地化输出。
1.实例说明本例是Struts2的简单实例,通过本工程的学习,我们将会对struts2的表单以及表单验证有一个初步的认识、了解struts2的配置以及初探Struts2的本地化输出。
2. 编码准备1)包的引入在MyEclipse或NetBeans中建立web工程,将所需的包放入WebRoot/lib目录中,本实例所需的包有:commons-logging-1.1.jarfreemarker-2.3.8.jarognl-2.6.11.jarstruts2-core-2.0.8.jarxwork-2.0.3.jar这些包在struts-2.0.8-all\struts-2.0.8\lib目录下都可以找到,请读者自行下载。
2) web.xml的配置要使struts能正常工作,需修改web.xml的内容,为其增加struts2的FilterDispatcher,修改后的web.xml的内容如下:3)建立源码目录和jsp存放目录在src目录下建立example文件夹,用于存放本实例的java文件等。
在WebRoot文件夹下建立子文件夹example,用于存放本工程的jsp文件。
3. 编码1) Welcome.jsp和Login.jsp的编写首先我们建立Welcome.jsp,该文件包含两个链接,点击“登录”链接后跳转到登录信息输入页面,点击“注册”按钮跳转到注册页,为了学习struts2配置中的通配符使用,我们暂不实现注册功能。
Welcome.jsp的代码如下:在该页面的顶部,我们需要将struts2的标签库引入,语句为:<%@ taglib prefix="s" uri="/struts-tags" %>在该页面,主要用到struts2的<s:url>标签,该页面主要用到该标签的两个属性,分别为value 和action,其中action属性表示用action来产生url,而value表示使用的目标值。
struts2教程实例

struts2教程实例1.第⼀个struts2项⽬建议:参考官⽅配置操作⼀遍,因为技术不断更新,不同版本的struts的类可能不同,⽼版本的多个类可能在新版本中集成了⼀个2.struts2⼯作流程原理2.1步骤1.创建Web Project2.导⼊Jar(使⽤maven控制的话,配置pom.xml)<!--pom配置见 -->3.在web.xml配置struts2的过滤器<filter><filter-name>struts2</filter-name><!--该类会因struts版本不同⽽变化,在struts2.0-2.1.2为org.apache.struts2.dispatcher.FilterDispatcher,在之后版本为下述--> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><!-- 所有的url都会被url过滤器解析 --><url-pattern>/*</url-pattern></filter-mapping>4.创建Struts核⼼xml⽂件5.创建action类继承与ActionSupport6.配置struts.xml<!--详细配置及介绍见:-->2.2流程1、客户端浏览器发出HTTP请求2、该请求被StrutsPrepareAndExecuteFilter接收3、根据struts.xml配置,找到需要调⽤的Action类和⽅法,并通过IoC⽅式,将值注⼊给Aciton4、Action调⽤业务逻辑组件处理业务逻辑5、Action执⾏完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页⾯6、返回HTTP响应到客户端浏览器2.3原理注意:在struts2.1.2后FilterDispatcher被替换为了StrutsPrepareAndExecuteFilter1、客户端初始化⼀个指向Servlet容器(例如Tomcat)的请求2、这个请求经过⼀系列的过滤器(Filter)(这些过滤器中有⼀个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)3、接着被StrutsPrepareAndExecuteFilter(能够拦截请求对象ServletRequest和ServletResponse结合Struts.xml构建独⽴于servlet的ActionContxt)调⽤,StrutsPrepareAndExecuteFilter询问ActionMapper(含有struts.xml中Action配置的name,namespce,result等的HashMap)来决定这个请是否需要调⽤某个Action4、如果ActionMapper决定需要调⽤某个Action,StrutsPrepareAndExecuteFilter把请求的处理交给ActionProxy5、 ActionProxy通过Configuration Manager询问框架的配置⽂件struts.xml,找到需要调⽤的Action类6、 ActionProxy创建⼀个ActionInvocation的实例。
Struts2详细实例教程

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,在其中加入一个过滤器,过滤/*路径。
struts2框架快速入门小案例

struts2框架快速⼊门⼩案例struts2快速⼊门: index.jsp------>HelloAction--------->hello.jsp struts2流程 1.导⼊jar包 struts2的⽬录结构: apps: 例⼦程序 docs:⽂档 lib:struts2框架所应⽤的jar以及插件包 src:源代码 core 它是struts2的源代码 xwork-core struts2底层使⽤了xwork,xwork的源代码 注意:在struts2开发,⼀般情况下最少导⼊的jar包,去apps下的struts2-blank⽰例程序中copy 2.创建index.jsp页⾯ 3.对struts2框架进⾏配置 1.web.xml⽂件中配置前端控制器(核⼼控制器)-----就是⼀个Filter(⽬的:是为了让struts2框架可以运⾏。
) <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern></filter-mapping> 2.在src下(对应Tomcat的classes下)创建⼀个struts.xml配置⽂件 ,这个是struts2框架配置⽂件(⽬的:是为了struts2框架流程可以执⾏。
) 4.创建⼀个HelloAction类//要求,在HelloAction类中创建⼀个返回值是String类型的⽅法,注意,⽆参数。
实验六 Struts2开发案例

实验六 Struts2开发案例姓名:宋x 班级:计科16xx 学号:1609xxxxx 一、实验目标了解和熟悉Struts2校验框架和国际化信息的使用方法。
二、实验要求掌握校验框架的配置方法,熟悉常用的几个校验规划和正则表达式的使用方法,并实现国际化信息提示。
三、实验内容完成页面的注册信息,对所有的字段进行校验,具体要求如下。
(1)用户名不能为空,且长度在10到20之间。
(2)密码不能为空,且长度在8到10之间,提示信息使用国际化实现。
四、实验步骤(1)创建Web工程chap4_example,添加Struts2支持,如图2所示。
最终项目结构,如图1所示。
图1 项目结构图2 添加Sturts2支持(2)创建业务逻辑LoginAction,如图3所示。
图3 业务逻辑LoginAction(3)创建对应的校验规则文件LoginAction-validation.xml,如图4所示。
图4 LoginAction-validation.xml(4)配置struts.xml,如图5所示。
图5 struts.xml(5)创建login.jsp、success.jsp、error.jsp文件,如图6所示。
图6 创建的jsp(6)在浏览器中测试网站,如图7所示。
图7 登录与结果五、实验结果在这一次实验中,很多多少都是前几次实验做过的,这次实验新学的就是校验规则、中文与英文的相对应。
因为每个网站要适应不同的国家,所以还要建立相应的中文与英文的对应规则,要分别创建两个properties文件。
一个是英文与这对应的中文,还有一个是当输入出错之后,显示的内容。
要特别注意这两个的的区别。
还要注意properties 文件保存的时候,要转化为ASCII码文件。
Struts2小例子
Struts2小例子第一个Struts 2.0例子工具:MyEclipse 6.0.1第一步:新建web project第二步:为项目加入Struts 2.0 的jar包官方下载地址:/download.cgi#struts216解压打开lib文件夹:找到7个文件注:在网上看的没有两个包,开启tomcat后发现报了:Exception starting filter struts2Unable to load configuration. - bean -jar:file:/D:/tools/apache-tomcat-6.0.13/webapps/struts2pro/WEB-INF/lib/struts2-core-2.1.6.jar!/ struts-default.xml:46:178错误将文件添加到项目的目录下转到MyEclipse会显示第三步:修改web.xml配置文件代码修改为:第四步:创建struts.xml文件要放在项目的src目录下struts.xml代码:第五步:创建实体类创建登陆页面效果:用到的Sturts 2 标签表单<s2:form action="login">文本框<s2:textfield name=""label="usersname"></s2:textfield><br>密码<s2:password name="users.password" label="password"></s2:password><br> 提交按钮<s2:submit value="login"></s2:submit>第六步:创建action classLoginAction 继承自ActionSupport类点击browse按钮点击OK编写LoginAction.java代码:实现父类中的execute方法,判断用户输入的用户名及密码,进行比较,符合条件返回SUCCESS, 否则返回ERROR。
【java开发系列】——struts2简单入门示例
【java开发系列】——struts2简单⼊门⽰例上篇推荐:前⾔ 最近正好有时间总结⼀下,过去的知识历程,虽说东西都是⼊门级的,⾼⼿肯定是不屑⼀顾了,但是对于初次涉猎的⼩⽩们,还是可以提供点参考的。
struts2其实就是为我们封装了servlet,简化了jsp跳转的复杂操作,并且提供了易于编写的标签,可以快速开发view层的代码。
过去,我们⽤jsp和servlet搭配,实现展现时,⼤体的过程是: 1 jsp触发action 2 servlet接受action,交给后台class处理 3 后台class跳转到其他的jsp,实现数据展现 现在有了struts2,实现过程变为 1 jsp出发action 2 struts2拦截请求,调⽤后台action 3 action返回结果,由不同的jsp展现数据 下⾯我们看下,需要的jar包 前⾯两个是apache commons的jar包,暂且忽略 freemarker提供了另⼀种展现⽅式 ognl提供了OGNL表达式 struts2-core提供struts2核⼼包 xwork-core由于struts2很多事基于webwork的,因此也需要这个的核⼼包 我们提供了三个jsp登陆界⾯login.jsp1 <%@ page language="java" contentType="text/html; charset=GBK"2 pageEncoding="GBK"%>3 <%@taglib prefix="s" uri="/struts-tags"%>4<html>5<head>6<meta http-equiv="Content-Type" content="text/html; charset=GBK">7<title><s:text name="loginPage"/></title>8</head>9<body>10<s:form action="login">11<s:textfield name="username" key="user"/>12<s:textfield name="password" key="pass"/>13<s:submit key="login"/>14</s:form>15</body>16</html>登陆成功界⾯welcome.jsp<%@ page language="java" contentType="text/html; charset=GBK"pageEncoding="GBK"%><%@taglib prefix="s" uri="/struts-tags"%><html><head><title><s:text name="succPage"/></title><meta http-equiv="Content-Type" content="text/html; charset=GBK"></head><s:text name="succTip"><s:param>${er}</s:param></s:text><br/></body></html>登陆失败界⾯error.jsp<%@ page language="java" contentType="text/html; charset=GBK"pageEncoding="GBK"%><%@taglib prefix="s" uri="/struts-tags"%><html><head><title><s:text name="errorPage"/></title><meta http-equiv="Content-Type" content="text/html; charset=GBK"></head><body><s:text name="failTip"/></body></html> 当login.jsp触发action时,就会向后抬发送login.action的请求,这个请求被后台拦截,交给struts.xml中配置的action处理1<?xml version="1.0" encoding="GBK"?>2<!DOCTYPE struts PUBLIC3 "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"4 "/dtds/struts-2.1.7.dtd">5<struts>6<!-- 指定全局国际化资源⽂件 -->7<constant name="struts.custom.i18n.resources" value="mess"/>8<!-- 指定国际化编码所使⽤的字符集 -->9<constant name="struts.i18n.encoding" value="GBK"/>10<!-- 所有的Action定义都应该放在package下 -->11<package name="test" extends="struts-default">12<action name="login" class="com.test.action.LoginAction">13<result name="error">/error.jsp</result>14<result name="success">/welcome.jsp</result>15</action>16</package>17</struts>下⾯是LoginAction的代码,可以看到成功登陆后,程序把username写⼊session中。
Struts2开发
4. package元素
struts.xml文件中使用package (包)来管理Action、Result、拦截器等配置 信息。
Java EE 教程
9
•
4.1.2 Struts 2配置
package可以将多个Action组织为一个模块,便于系统的维护。一个 package可以扩展自另外一个package,提高重用性。
5. Action元素 Action是Struts2框架的运行单元,Action常用属性如下:
Java EE 教程
10
•
4.1.2 Struts 2配置
(1)name:action名称,匹配请求URI。默认不能使用“/”,要使用斜 杠需要设置:struts.enable.SlashesInActionNames=true
<init-param> <param-name>参数名称</param-name> <param-value>参数值</param-value>
</init-param>
</filter>
struts2 整合例子
struts2 整合例子下面是一个简单的 Struts2 整合例子:1. 创建一个 Maven Web 项目,并在 pom.xml 文件中添加以下依赖:```。
<dependency>。
<groupId>org.apache.struts</groupId>。
<artifactId>struts2-core</artifactId>。
<version>2.5.22</version>。
</dependency>。
```。
2. 在 web.xml 文件中添加 Struts2 过滤器和拦截器的配置:```。
<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>。
<listener>。
<listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>。
</listener>。
```。
3. 创建 Action 类和页面,并配置 action 的访问路径:```java。
public class HelloWorldAction extends ActionSupport 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、Struts2开发前期1、文件下载•从Apache官方网站下载Struts2的文件(/2.1.6/index.html)•struts-2.0.14解压后包含了5个文件夹,如下是针对五个文件的说明:•apps: Struts2的一些例子,可以再Tomcat部署运行.•docs: Struts2所有的帮助文档.•lib: 包含了Struts2所有的的.jar包已经它以来的第三方.jar包•src: 源代码.•J4: 对jdk1.4 的支持文件2、主要用到的jar包•Struts2-core-2.x.x.jar :struts2框架的核心类库•Xwork-2.x.x.jar:Xwork类型•Ognl-2.6.x.jar:对象图导航语言,struts2框架通过其读写对象的属性•Freemarker-2.3.x.jar:struts2的UI标签的模板使用Freemarker编写•Commons-lodding-1.1.x.jar:ASF出品的日志包,struts2框架使用这个日志包来支持Log4j和JDK1.4的日志记录•Commons-fileupload-1.2.1.jar文件上传组件,2.1.6版本后必须加入此文件•commons-logging-1.0.4.jar日志jar包3、jar包及项目的是配置⏹将jar包复制到web项目的web-inf-→lib文件夹下⏹web.xml中添加:<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>备注:<!—自从struts 2.1.3以后,下面的FilterDispatcher已经标注为过时--> <filter-class>org.apache.struts2. FilterDispatcher </filter-class>解释:struts2读取到struts.xml的内容后,以javabean形式存在内存中,以后struts2对用户的每次请求处理将使用内存中的数据,而不是每次都读取struts.xml文件。
二、jsp页面数据通过action校验实例1、建立一个jsp文件,里面有用户名,密码框。
Jsp文件中引入标签<%@taglib uri= "/struts-tags"prefix="s"%>---用于显示后台返回的信息以下写在body中:<s:fielderror></s:fielderror>根据action的返回结果,显示验证信息<form action="validationmessage "method="post">用户名:<input type="text"name="username"/>密码:<input type="password"name="password"/><input type="submit"value="提交"/ ></form>2、编写Action类ValidationLogin.java,此Action类必须继承ActionSupport类●Action类中的变量必须跟jsp页面中form提交的变量名相同。
●每个变量必须是有getter和setter方法。
●Validate()方法对form表单提交的参数进行验证。
public void validate(){if(isNull(username)){//fieldError可以在前台取得显示出来this.addFieldError("username", "用户名不能为空");}if(isNull(password)){this.addFieldError("password", "用户密码不能为空");}}●也可以定义成功后的方法,通过在form表单的forward路径中指定方法。
例如:在action类中添加方法;public String save(){//通过这种方式,前台可以通过request对象获取message信息。
ActionContext.getContext().put("message", "保存成功");return"message";}备注:ActionContext详解在第二节最后在jsp页面的action中就要这样写:<form action="validationmessage!save.action"method="post">3、在struts.xml中配置action类.●首先在src包下创建struts.xml文件,通用内容如下:<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration2.0//EN""/dtds/struts-2.0.dtd"> <struts></struts>配置ValidationLogin类;//struts2中的配置具有继承关系,可以定义namespace,跳转的时候就会先到namespace下的package中查找action的配置方法,如果找不到就到父类中,每个package都必须继承”struts-default”packageNamespace书写格式:namespace="/yanzheng"下面的配置中我没有使用namespace,因为小例子就不需要分这么多包了<package name="default"extends="struts-default">//下面name自己定义,前台jsp页面跳转的时候就到这个name<action name="validationmessage"class="com.validation.action.ValidationLogin">//result就是此类返回的信息,如果用户名和密码都输入了,name就从save 方法中返回了“message”信息。
<result name="message">/message.jsp</result>//如果没有通过验证,那么就返回验证信息到jsp页面,input是固定写法<result name="input">/index.jsp</result></action></package>到这一步,这个例子就讲完了,下面是ActionContext解释:为了避免与Servlet API耦合在一起,方便Action类做单元测试,Struts 2对HttpServletRequest、HttpSession和ServletContext进行了封装,构造了三个Map对象来替代这三种对象,在Action中,直接使用HttpServletRequest、HttpSession和ServletContext对应的Map对象来保存和读取数据。
●(一)通过ActionContext来获取request、session和application对象的LoginAction1ActionContext context = ActionContext.getContext();Map request = (Map)context.get("request");Map session = context.getSession();Map application = context.getApplication();request.put("greeting", "欢迎您来到程序员之家");//在请求中放置欢迎信息。
session.put("user", user);//在session中保存user对象application.put("counter", count);在JSP中读取<body><h3>${ername},${requestScope.greeting}。
<br>本站的访问量是:${applicationScope.counter}</h3></body>●(二)直接使用ActionContex类的put()方法ActionContext.getContext().put("greeting", "欢迎您来到http://www. ");然后在结果页面中,从请求对象中取出greeting属性,如下:${requestScope.greeting} 或者<%=request.getAttribute("greeting")%>三、拦截器继承AbstractInterceptor类重写intercept方法四、OGNL表达式1、OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言,让你通过简单一致的表达式语法来读取和设置Java对象的属性值,调用对象的方法,遍历整个对象的结构图,实现字段类型转换等功能。