Struts2的第一个入门实例(一)
关键字: Struts2
Struts2有自己的圈子了,我也写一个Struts2的入门实例吧。
本人是从Struts1与Spring MVC过来的,发现Struts2与前面两种MVC有很大区别,不过总的来说Struts2代码量更少一些,但配置文件都没有多大变化,还是换汤不换药,这个例子并未采用Annotation方式,所以还是以XML配置文件为主。
首先我们先来搭建环境:
我用的是WinXP2+MyEclipse6.0。 Struts2的包是2.09的。先在MyEclipse建立一个Web项目,叫struts2_base如图:
系统会自动生成一些常用的文件夹和配置文件。把下面几个包复制到lib里:
1. ognl-
2. struts2-core-
3. xwork-
4. freemakerker-2.38.jar
打开web.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>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
- /*************************************************
- @Copyright (C), 2007, Zheren Huinen
- @File name: HelloWorld.java
- @Author: Superleo
- @CreateDate: 2007-9-29
- @Description: HelloWorld实体类
- @Extends:
- @Implement:
- @Function List:
- 1. public String getWords()
- 返回设定的字符串
- 2. public void setWords(String words)
- 设置字符串
- @History:
-
- Superleo 2007/9/29 1.0 建立HelloWorld实体
- *************************************************/
- package com.superleo.po;
- public class HelloWorld {
- private String words;
- public String getWords() {
- return words;
- }
- public void setWords(String words) {
- this.words = words;
- }
- }
建立一个简单的对象,应该对象只有一个属性words。这样,Model层就算是完成了。
2.再来实现Controller层。
HelloAction.java
- /*************************************************
- @Copyright (C), 2007, Zheren Huinen
- @File name: HelloAction.java
- @Author: Superleo
- @CreateDate: 2007-9-29
- @Description: HelloAction控制类
- @Extends:
- @Implement:
- @Function List:
- 1. public HelloWorld getHelloWorld()
- 返回一个HelloWorld实体
- 2. public void setHelloWorld(HelloWorld helloWorld)
- 设置一个HelloWorld实体
- 3. public String execute()
- 执行Action的方法
- @History:
-
- Superleo 2007/9/29 1.0 建立HelloWorld实体
- *************************************************/
- package com.superleo.controller;
- import com.opensymphony.xwork2.ActionSupport;
- import com.superleo.po.HelloWorld;
- /**
- * @author Administrator
- *
- */
- 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语法一样,第一看挺吓人的,这么多,一大堆。其实熟悉以后就发现只有那么几个东西配置来配置去的,而且常用的也只有那几个。
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <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层页面调用.
- <result name="success">success.jspresult> 执行成功跳转的页面
- <result name="input">index.jspresult> 执行失败跳转的页面(这里还涉及到一个验证的问题,具体请看下次第二个版本。)
最后就是View层了,这里只有两个很简单的页面:
View1: index.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>
- <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>
发布你的系统,开始运行吧! 好运
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>
评论
发表评论
我的相册
共 34 张
最新评论
-
【翻译】spring配置全书( ...
谢谢你的文档!
-- by vdgame -
【翻译】Rod Johnson—— ...
lz 一直很喜欢你翻译和总结的文章 我除了忘记向你表达敬意与谢意之 ...
-- by fins -
【翻译】Rod Johnson—— ...
头像太像我一个大学同学了。。。。
-- by 40020072 -
【翻译】Rod Johnson—— ...
robbin 写道 开源软件商业化策略总是会引起轩然大波,这真是一个遗憾。我觉得 ...
-- by didasoft -
【翻译】Rod Johnson—— ...
花一个星期研究这些声明 ,然后又变了声明... 到底是开源的呢 , ...
-- by stack3256







评论排行榜