apache官方地址:http://struts.apache.org/文档清楚,示例简单,强推
引用
在常见的mvc模型中,struts2实际上是解决C的功能,也就是控制器,系统核心控制器为Struts2框架提供的FilterDispatcher,它根据请求自动调用相应的Action。而业务逻辑控制器是指开发人员自行定义的一系列Action,在Action中负责调用相应的业务逻辑组件来完成处理。
大概处理流程为
--------------------------------
人→浏览器发起http洗衣额request→服务器对请求进行分析→得到分析结果
↑ ↓
浏览器解析页面←通过http协议response传送页面←根据分析结果决定返回页面
--------------------------------
上面很白烂了……废话不多说我们还是来实战,工具采用最常见的MyEclipse。
一 第一个struts2应用
1 一个新的web project,暂时命名为StrutsDemo
2 将附件中的jar包加入web-inf下的lib,这几个包是struts2所必须的包
3 修改web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<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>
注意<url-pattern>/*</url-pattern>这一行,决定监控url的类型,默认为.action/.do如果你想用其他结尾的,譬如像笔者有怪癖,可以详见附注1修改方法。
4 开始编写自己的第一个action
public class TestAction extends ActionSupport {
private static final long serialVersionUID = 6241935194381649471L;
private String testValue;
public String getTestValue() {
return testValue;
}
public void setTestValue(String testValue) {
this.testValue = testValue;
}
public String execute() {
testValue = "你好";
return SUCCESS;
}
}
这是一个很简单的控制器,当调用到execute方法时,为testValue赋值,然后返回success
5 写一个简单的jsp
在web-inf下建议page目录,然后新建一个StrutsTest.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>StrutsTest</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<div>
<span>${testValue}</span>
</div>
</body>
</html>
利用el表达式获得testValue的值。
好啦,页面有了,控制也有了,那么怎么调用把两者关联起来呢?请往下看!
6 在src目录下建立一个名为struts.xml的文件,其实也可以直接下classes目录下建立这个文件,效果是一样的。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation"
value="false" />
<constant name="struts.devMode" value="false" />
<constant name="struts.i18n.encoding" value="utf-8" />
<package name="" namespace="/" extends="struts-default">
<action name="test" class="action.TestAction">
<result name="success">/WEB-INF/page/StrutsTest.jsp</result>
</action>
</package>
</struts>
大概解释一下配置的内容,package继承自struts2的jar包中的struts-default.xml
action将浏览器访问的url和刚才编写的TestAction关系起来,而result表示不同的返回值分别对应的JSP页面。
7 至此,一个很简单的struts2的web应用已经完成了
发布到tomcat,在浏览器上键入
http://localhost:8080/StrutsDemo/test.action
就会出现“你好”的字样。
二 引入struts标签
正是练武不练功,到老一场空,虽然是快速入门,但我们也还是介绍一下非常好用的struts标签。
所有支持的标签库请看这个
http://struts.apache.org/2.1.6/docs/tag-reference.html
既然是入门,这里只打算展示几个常见的控制标签的用法。
业务逻辑层代码稍微改动,我们需要输出一个list到页面上去:
public class TestAction extends ActionSupport {
private static final long serialVersionUID = 6241935194381649471L;
private ArrayList<String> aList = new ArrayList<String>();
public ArrayList<String> getAList() {
return aList;
}
public void setAList(ArrayList<String> list) {
aList = list;
}
public String execute() {
for (int i = 0; i < 10; i++) {
String temp = i + "";
aList.add(temp);
}
return "list";
}
}
页面jsp代码为
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>StrutsTest2</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<s:iterator value="aList" id="list" status="stat">
<s:if test="#stat.odd==true">
<span> <s:property value="list" /> </span>
</s:if>
<s:else>
<span>奇数项不显示</span>
</s:else>
</s:iterator>
</body>
</html>
注意这里,
<%@ taglib prefix="s" uri="/struts-tags"%>,引入struts标签库,而后<s:>开头的标签都是struts标签。
s:iterator是一个很好用的循环标签,很多时候传送上来的数据是一个list或者map,这时候用这个标签会很方便。这个标签有个名为status的属性,利用这个属性可以控制list每一个数据显示的效果,譬如我们的例子中,分奇数、偶数行显示不同效果,就是利用status这个属性。
s:if也是一个很常见的控制标签,意思看字面就可以理解。
此外,struts标签库中还包括大量的ui标签,例如s:form/s:checkbox这些的,都会方便开发。不过白菜萝卜各有所好吧,笔者还是喜欢在传统html标签下开发js,所以不是很热衷于Struts的UI标签。
完成上面的工作后,接下来就是和之前类似的活路:修改struts.xml建立联系,发布到tomcat或是jboss诸如此类,访问得到结果,略过不谈。
三 附注
1 struts2一般的url结尾多是.action或者.do,那么如果想设置其他后缀怎么办呢?
其实只需要在struts.xml同级目录新建一个struts.properites的配置文件,然后在里面写上下面这句话:
引用
struts.action.extension=cssc
好的,譬如xxxx/test.cssc的url也可以在我们的系统中运行了,其他后缀名以此类推。
事实上这个配置文件功能绝不仅限于此,那就是后话了。
2 当业务逻辑逐渐复杂时,如果每个action都需要一个新的类就实在太麻烦了,我们可以尝试一下这种方法解决。
<package name="" namespace="/" extends="struts-default">
<action name="test_*" method="{1}" class="action.TestAction">
<result name="success">/WEB-INF/page/StrutsTest.jsp</result>
<result name="list">/WEB-INF/page/StrutsTest2.jsp</result>
</action>
</package>
注意上面的struts.xml中action的写法,这里使用了一个通配符,这样我们在action类撰写时就可以不一定要使用默认的execute方法。譬如说我们如果定义一个名为first的方法,那么url为text_first.action就可以了。
四 总结
既然是快速入门,必然简略,笔者仍然建议使用最上面那个连接,struts2的官方文档十分适合学习。
分享到:
相关推荐
本教程旨在帮助初学者快速入门Struts2,理解其核心概念和基本操作。 首先,我们要了解Struts2的基础。Struts2是Struts1的升级版,它吸收了WebWork框架的优点,提供了更灵活的控制流、更强大的拦截器机制和更丰富的...
本教程旨在帮助初学者快速入门Struts2,了解其基本概念和应用。 一、Struts2简介 Struts2是Apache软件基金会的一个开源项目,它是Struts1的升级版,继承并改进了其前任的许多特性。Struts2的核心是Action类,它负责...
### Struts2环境搭建及Hello World程序实现 #### 一、Struts2简介 Struts2框架是基于Struts和WebWork技术的基础上发展而来的,它不仅继承了这两个...这不仅可以帮助您快速入门Struts2,也为后续深入学习奠定了基础。
总的来说,这个"struts2学习小项目"是一个很好的起点,它可以帮助初学者快速入门Struts2框架,并通过实际操作加深对Java Web开发的理解。在实践中,你可以逐步学习并掌握Struts2的特性,如动态方法调用、结果类型、...
这个压缩包提供的"Struts2资料"很可能包含了相关的教程、示例代码、配置文档等,可以帮助初学者快速入门Struts2框架,并了解如何在MyEclipse中进行配置和开发。通过这些资源,你可以逐步掌握Struts2的基本用法,...
Struts2是一个强大的Java web开发框架,用于构建可维护、可扩展且结构良好的应用程序。它在Web MVC(Model-View-Controller)模式的基础上...希望这个简短的教程能帮助你快速入门Struts2,祝你在编程旅程中不断进步!
Struts2是一个强大的Java EE应用程序框架,用于构建和维护可扩展、模块化且易于管理的Web...对于想要深入学习Struts2的人来说,这是一个很好的起点,可以帮助他们快速掌握基础,为进一步的学习和实践打下坚实的基础。
本教程将带你深入理解Struts2的基础概念、核心组件以及如何快速入门。 一、Struts2框架概述 Struts2是Struts1的升级版,它吸收了WebWork框架的优点,极大地提高了开发效率和代码的可维护性。Struts2基于拦截器模型...
这个"Struts2入门demo"旨在为初学者提供一个快速理解并实践Struts2框架的起点。以下是对Struts2核心概念和相关知识点的详细说明: 1. **MVC模式**:Struts2是基于Model-View-Controller(MVC)设计模式的,它将业务...
通过实践这些例子,你可以快速掌握Struts2的使用方法,从而提高你的Web开发技能。 1. **配置环境**: 首先,你需要设置Java开发环境和Apache Tomcat服务器,并在项目中引入Struts2的核心库。这通常涉及下载Struts2的...
- **章节概述**:这一章通过一个简单的示例项目,引导读者快速入门Struts2。通过实际操作,读者可以直观地感受到Struts2框架的强大之处。 - **关键知识点**: - 快速搭建Struts2环境 - 创建第一个Struts2应用 -...
### Struts2 实例 HelloWorld 知识...这不仅帮助初学者快速入门Struts2框架,还让大家对glassfish2的应用服务器有了更深入的了解。未来,随着更多项目采用glassfish作为应用服务器,掌握这一技术将成为一项重要的技能。
为了快速入门Struts2,我们可以从最简单的Hello World案例开始。以下是一个典型的开发流程: 1. **环境搭建**:确保安装了Java JDK和MyEclipse IDE,并配置了Struts2相关的库和插件。 2. **创建Web项目**:在...
### Struts2 相关知识点概述 #### 一、旺旺教师及背景介绍 旺旺教师,即刘红旺老师,是一位资深的软件工程师及教育培训专家。他出生于1982年,在山西...旺旺老师的教程为学习者提供了一个快速入门Struts2的良好途径。
总之,“Struts2 的入门简单的hello”是一个很好的起点,帮助开发者快速理解MVC架构和Struts2的工作原理。通过实践这个示例,你可以建立起对Struts2框架的基本认识,并为进一步深入学习和应用奠定基础。