Struts2有自己的圈子了,我也写一个Struts2的入门实例吧。
本人是从Struts1与Spring MVC过来的,发现Struts2与前面两种MVC有很大区别,不过总的来说Struts2代码量更少一些,但配置文件都没有多大变化,还是换汤不换药,这个例子并未采用Annotation方式,所以还是以XML配置文件为主。
首先我们先来搭建环境:
我用的是WinXP2+MyEclipse6.0。 Struts2的包是2.09的。先在MyEclipse建立一个Web项目,叫struts2_base如图:
系统会自动生成一些常用的文件夹和配置文件。把下面几个包复制到lib里:
1. ognl-2.6.11.jar
2. struts2-core-2.0.9.jar
3. xwork-2.0.4.jar
4. freemakerker-2.38.jar
打开web.xml,修改成以下配置:
xml 代码
- version="1.0" encoding="UTF-8"?>
- <web-app version="2.4" xmlns=""
- xmlns:xsi=""
- xsi:schemaLocation="
- /web-app_2_4.xsd">
-
- <filter>
- <filter-name>struts2filter-name>
- <filter-class>
- org.apache.struts2.dispatcher.FilterDispatcher
- filter-class>
- filter>
-
-
- <filter-mapping>
- <filter-name>struts2filter-name>
- <url-pattern>/*url-pattern>
- filter-mapping>
-
-
- <welcome-file-list>
- <welcome-file>index.jspwelcome-file>
- <welcome-file>index.htmlwelcome-file>
- <welcome-file>index.htmwelcome-file>
- welcome-file-list>
-
- web-app>
到现在为止,剩下的工作就是如何使用Struts2了。上面的步骤永远是相同的,就是一个复制粘贴的过程,同你自己写的Servlet,Filter的配置没有什么区别。
既然是MVC,那这三层是缺一不可。
1.先来Model层:
HelloWorld.java
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- package com.superleo.po;
-
- public class HelloWorld {
- private String words;
-
- public String getWords() {
- return words;
- }
-
- public void setWords(String words) {
- this.words = words;
- }
-
- }
java 代码
建立一个简单的对象,应该对象只有一个属性words。这样,Model层就算是完成了。
2.再来实现Controller层。
HelloAction.java
java 代码
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- package com.superleo.controller;
-
- import com.opensymphony.xwork2.ActionSupport;
- import com.superleo.po.HelloWorld;
-
-
-
-
-
- public class HelloAction extends ActionSupport {
-
- private static final long serialVersionUID = 1L;
-
- private HelloWorld helloWorld;
-
- public HelloWorld getHelloWorld() {
- return helloWorld;
- }
-
- public void setHelloWorld(HelloWorld helloWorld) {
- this.helloWorld = helloWorld;
- }
-
- @Override
- public String execute() {
- return SUCCESS;
- }
-
- }
也没有什么好说的,和实体其实感觉上还是一样的。这就是Struts2的高明之处――你的Action不会到外都是request, response, session这些耳熟能详的对象了,一切变的简单了,这个转变估计也是需要时间来体会它的巧妙(当然request, response, session还能正常使用,这个例子太简单了,就没用上。)
在这里,要注意这个“return SUCCESS;”
这个SUCCESS是事先定义好的常量,意思是如果执行没有问题,则跳转到SUCCESS指定的页面。于是在SRC下建立下面的配置文件:
struts.xml
Java语法一样,第一看挺吓人的,这么多,一大堆。其实熟悉以后就发现只有那么几个东西配置来配置去的,而且常用的也只有那几个。
xml 代码
-
- "">
- <struts>
-
- <include file="struts-default.xml" />
-
-
- <package name="default" extends="struts-default">
- <action name="hello"
- class="com.superleo.controller.HelloAction">
- <result name="success">success.jspresult>
- <result name="input">index.jspresult>
- action>
-
- package>
- struts>
配置文件这东西和
在这个配置文件里,我们把自己定义好的HelloAction类配置好,并给它起了个别名叫“hello”,供View层页面调用.
xml 代码
- <result name="success">success.jspresult> 执行成功跳转的页面
- <result name="input">index.jspresult> 执行失败跳转的页面(这里还涉及到一个验证的问题,具体请看下次第二个版本。)
最后就是View层了,这里只有两个很简单的页面:
View1: index.jsp
xml 代码
- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
-
- >
- <html>
- <head>
- <title>你好,世界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>
-
- <form action="hello.action" method="post">
- <fieldset>
- <legend>Struts2入门实例legend>
- <p>
-
- <label id="helloWorld.words">请输入你想说的话:label>
- <input type="text" name="helloWorld.words" value="试试看!" />
- p>
- <p>
- <input type="submit" value="提交" />
- p>
- fieldset>
- form>
-
-
- body>
- html>
OK一切装备完成,最后,你的目录结构是这个样子:
发布你的系统,开始运行吧! 好运
View2: success.jsp
- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
-
- >
- <html>
- <head>
- <title>成功啦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>
-
- 您所输入的文字是:${helloWorld.words} <br>
-
-
-
- body>
- html>
xml 代码
阅读(2903) | 评论(0) | 转发(0) |