`
unbounder
  • 浏览: 174391 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

快速入门Struts2

阅读更多
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的官方文档十分适合学习。
2
0
分享到:
评论

相关推荐

    struts2轻松入门

    本教程旨在帮助初学者快速入门Struts2,理解其核心概念和基本操作。 首先,我们要了解Struts2的基础。Struts2是Struts1的升级版,它吸收了WebWork框架的优点,提供了更灵活的控制流、更强大的拦截器机制和更丰富的...

    Struts2入门教程

    本教程旨在帮助初学者快速入门Struts2,了解其基本概念和应用。 一、Struts2简介 Struts2是Apache软件基金会的一个开源项目,它是Struts1的升级版,继承并改进了其前任的许多特性。Struts2的核心是Action类,它负责...

    Struts2 环境搭建,五分钟即可快速入门

    ### Struts2环境搭建及Hello World程序实现 #### 一、Struts2简介 Struts2框架是基于Struts和WebWork技术的基础上发展而来的,它不仅继承了这两个...这不仅可以帮助您快速入门Struts2,也为后续深入学习奠定了基础。

    struts2学习小项目(很适合初学者)

    总的来说,这个"struts2学习小项目"是一个很好的起点,它可以帮助初学者快速入门Struts2框架,并通过实际操作加深对Java Web开发的理解。在实践中,你可以逐步学习并掌握Struts2的特性,如动态方法调用、结果类型、...

    Struts2入门资料,适用于myeclipse配置等

    这个压缩包提供的"Struts2资料"很可能包含了相关的教程、示例代码、配置文档等,可以帮助初学者快速入门Struts2框架,并了解如何在MyEclipse中进行配置和开发。通过这些资源,你可以逐步掌握Struts2的基本用法,...

    Struts2之Hello World | #struts2

    Struts2是一个强大的Java web开发框架,用于构建可维护、可扩展且结构良好的应用程序。它在Web MVC(Model-View-Controller)模式的基础上...希望这个简短的教程能帮助你快速入门Struts2,祝你在编程旅程中不断进步!

    struts2入门demo

    Struts2是一个强大的Java EE应用程序框架,用于构建和维护可扩展、模块化且易于管理的Web...对于想要深入学习Struts2的人来说,这是一个很好的起点,可以帮助他们快速掌握基础,为进一步的学习和实践打下坚实的基础。

    java Struts2快速入门教程pdf

    本教程将带你深入理解Struts2的基础概念、核心组件以及如何快速入门。 一、Struts2框架概述 Struts2是Struts1的升级版,它吸收了WebWork框架的优点,极大地提高了开发效率和代码的可维护性。Struts2基于拦截器模型...

    Struts2入门demo

    这个"Struts2入门demo"旨在为初学者提供一个快速理解并实践Struts2框架的起点。以下是对Struts2核心概念和相关知识点的详细说明: 1. **MVC模式**:Struts2是基于Model-View-Controller(MVC)设计模式的,它将业务...

    struts2入门级的例子

    通过实践这些例子,你可以快速掌握Struts2的使用方法,从而提高你的Web开发技能。 1. **配置环境**: 首先,你需要设置Java开发环境和Apache Tomcat服务器,并在项目中引入Struts2的核心库。这通常涉及下载Struts2的...

    Struts2 In Action

    - **章节概述**:这一章通过一个简单的示例项目,引导读者快速入门Struts2。通过实际操作,读者可以直观地感受到Struts2框架的强大之处。 - **关键知识点**: - 快速搭建Struts2环境 - 创建第一个Struts2应用 -...

    Struts2 实例 HelloWorld

    ### Struts2 实例 HelloWorld 知识...这不仅帮助初学者快速入门Struts2框架,还让大家对glassfish2的应用服务器有了更深入的了解。未来,随着更多项目采用glassfish作为应用服务器,掌握这一技术将成为一项重要的技能。

    Struts2教程

    为了快速入门Struts2,我们可以从最简单的Hello World案例开始。以下是一个典型的开发流程: 1. **环境搭建**:确保安装了Java JDK和MyEclipse IDE,并配置了Struts2相关的库和插件。 2. **创建Web项目**:在...

    旺旺教师————Struts2

    ### Struts2 相关知识点概述 #### 一、旺旺教师及背景介绍 旺旺教师,即刘红旺老师,是一位资深的软件工程师及教育培训专家。他出生于1982年,在山西...旺旺老师的教程为学习者提供了一个快速入门Struts2的良好途径。

    Struts2 的入门简单的hello

    总之,“Struts2 的入门简单的hello”是一个很好的起点,帮助开发者快速理解MVC架构和Struts2的工作原理。通过实践这个示例,你可以建立起对Struts2框架的基本认识,并为进一步深入学习和应用奠定基础。

Global site tag (gtag.js) - Google Analytics