(1)用MyEclipse建立一个Web Project,项目名称为myStruts2,结构如下图:

(2)导入struts2需要的包,我是把解压后的struts-2.3.16.3\apps\struts2-blank\WEB-INF\lib\下面所有的包都导入;

(3)修改web.xml,设置filter和filter-mapping:

  1. <?xml version="1.0" encoding="GB2312"?>
  2. <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  3. <filter>
  4. <filter-name>struts2</filter-name>
  5. <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  6. </filter>
  7.  
  8. <filter-mapping>
  9. <filter-name>struts2</filter-name>
  10. <url-pattern>/*</url-pattern>
  11. </filter-mapping>
  12. <welcome-file-list>
  13. <welcome-file>index.jsp</welcome-file>
  14. </welcome-file-list>
  15. </web-app>

(4)在WebRoot\jsp\下面新建三个jsp文件:

input.jsp,用于输入信息

  1. <%@ page language="java" pageEncoding="gb2312"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <!-- struts2标签库调用声明 -->
  4. <%@taglib prefix="s" uri="/struts-tags"%>
  5. <html>
  6. <head>
  7. <title>输入页面</title>
  8. </head>
  9. <body>
  10. <!-- form标签库定义,以及调用哪个Action声明 -->
  11. <s:form action="INPUT">
  12. <table width="60%" height="76" border="0">
  13. <!-- 各标签定义 -->
  14. <s:textfield name="name" label="姓名"/>
  15. <s:textfield name="phone" label="电话"/>
  16. <s:textfield name="mail" label="邮箱"/>
  17. <s:submit value="确定" align="center"/>
  18. </table>
  19. </s:form>
  20. </body>
  21. </html>

list.jsp,用于列出输入的信息

  1. <%@ page language="java" contentType="text/html; charset=GB2312"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4. <head>
  5. <title>输入成功</title>
  6. </head>
  7. <body>
  8. <!-- 取得session中用户名值 -->
  9. 姓名:${sessionScope.name}<br>
  10. 电话:${sessionScope.phone}<br>
  11. 邮箱:${sessionScope.mail}
  12. </body>
  13. </html>

error.jsp,用于出错提示:

  1. <%@ page language="java" contentType="text/html; charset=GB2312"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4. <head>
  5. <title>输入失败</title>
  6. </head>
  7. <body>
  8. 失败,请重新输入!
  9. </body>
  10. </html>

(5)创建struts.xml文件,设置package和Action:

  1. <?xml version="1.0" encoding="gb2312"?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5. <struts>
  6. <!-- Action所在包定义 -->
  7. <package name="myStruts2" extends="struts-default">
  8. <!-- 全局导航页面定义 -->
  9. <global-results>
  10. <result name="global">/jsp/error.jsp</result>
  11. </global-results>
  12. <!-- Action名字,类以及导航页面定义 -->
  13. <!-- 通过Action类处理才导航的的Action定义 -->
  14. <action name="INPUT"
  15. class="myStruts2.InputAction">
  16. <result name="input">/jsp/input.jsp</result>
  17. <result name="list">/jsp/list.jsp</result>
  18. <result name="error">/jsp/error.jsp</result>
  19. </action>
  20. <!-- 直接导航的的Action定义 -->
  21. <action name="index" >
  22. <result >/jsp/input.jsp</result>
  23. </action>
  24. </package>
  25. </struts>

(6)创建InputAction类:

  1. package myStruts2;
  2.  
  3. import com.opensymphony.xwork2.ActionContext;
  4. import com.opensymphony.xwork2.ActionSupport;
  5.  
  6. public class InputAction extends ActionSupport {
  7. // Action类公用私有变量,用来做页面导航标志
  8. private static String FORWARD = null;
  9. // 姓名,电话,邮箱
  10. private String name;
  11. private String phone;
  12. private String mail;
  13.  
  14. public String getName() {
  15. return name;
  16. }
  17.  
  18. public void setName(String x) {
  19. this.name = x;
  20. }
  21.  
  22. public String getPhone() {
  23. return phone;
  24. }
  25.  
  26. public void setPhone(String x) {
  27. this.phone = x;
  28. }
  29.  
  30. public String getMail() {
  31. return mail;
  32. }
  33.  
  34. public void setMail(String x) {
  35. this.mail = x;
  36. }
  37.  
  38. public String execute() throws Exception {
  39.  
  40. // 属性值即JSP页面上输入的值
  41. name = getName();
  42. phone = getPhone();
  43. mail = getMail();
  44.  
  45. try {
  46. // 判断输入值是否是空对象或没有输入
  47. if (name != null && !name.equals("")
  48. && phone != null && !phone.equals("")
  49. && mail != null && !mail.equals(""))
  50. {
  51. ActionContext.getContext().getSession().put("name", getName());
  52. ActionContext.getContext().getSession().put("phone", getPhone());
  53. ActionContext.getContext().getSession().put("mail", getMail());
  54. // 根据标志内容导航到操作成功页面
  55. FORWARD = "list";
  56. } else {
  57. // 根据标志内容导航到操作失败页面
  58. FORWARD = "error";
  59. }
  60. } catch (Exception ex) {
  61. ex.printStackTrace();
  62. }
  63. return FORWARD;
  64.  
  65. }
  66.  
  67. }

(7)部署到Tomcat后运行,结果如下:

Struts2例子的更多相关文章

  1. maven+struts2例子

    本文在开发第一个maven示例的基础上进行扩展. 第一个maven示例目录结构如下: 扩展后目录为: 打开pom.xml 在WEB-INF文件夹下新建web.xml: <?xml version ...

  2. Struts2 源码分析——过滤器(Filter)

    章节简言 上一章笔者试着建一个Hello world的例子.是一个空白的struts2例子.明白了运行struts2至少需要用到哪一些Jar包.而这一章笔者将根据前面章节(Struts2 源码分析—— ...

  3. Struts2源码解析2

    看了前面一节对Struts2各个模块运行有了大概了解,也对调用的函数有了一定的了解,本节希望打断点跑一个Struts2例子! 还是放在struts2结构图: 一:项目启动后解析web.xml文件,会解 ...

  4. sturts2 回顾

    第一个简单的struts2例子: 1.  创建一个web project 2.  导入jar包 具体jar包在struts 的例子中的lib文件夹中copy

  5. Struts2登录小例子

    前面实现了一个数据显示的例子,下面我来实现以下使用Struts2登录 首先是配置不用过多解释 注意名字要和类名保持一致 因为实现的是action这个方法所以需要用action.log来跳转到类里面 解 ...

  6. Struts2入门(一)——环境搭建和简单例子(Struts2 2.5.2版本)

    一.前言 1.了解三大框架 什么是框架? 框架是一种规范,一种规则,一种把技术组织起来的规则,这就是框架. 什么是三大框架(SSH),Struts.hibernate和spring的作用是什么? St ...

  7. struts2中把action中的值传递到jsp页面的例子

    例子: RegistAction的代码: package com.wss.action; import javax.servlet.http.HttpServletRequest; import or ...

  8. Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8整合例子(附完整的请假流程例子,jbpm基础,常见问题解决)

    Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8 整合例子(附完整的请假流程例子). 1.jbpm4.4 测试环境搭建 2.Jbpm4.4+hibernat ...

  9. jqGrid(struts2+jdbc+jsp)增删改查的例子

      前几日一直在找关于Java操作jqgrid返回json的例子,在网上也看了不少东西,结果都没几个合理的,于是本人结合网上的零散数据进行整理,完成了 一个比较完整的jqgrid小例子,考虑到还有很多 ...

随机推荐

  1. 使用OData技术遇到的问题及解决办法

    “System.NotSupportedException”类型的未经处理的异常在 Microsoft.Data.Services.Client.dll 中发生 其他信息: 对此 POST 请求的响应 ...

  2. Thrift架构~windows下安装和Hello World及编码引起的错误

    最近开始正式接触Thrift架构,很牛B的技术,它被apache收纳了,属于开源中的一员,呵呵. 概念: Thrift源于大名鼎鼎的facebook之手,在2007年facebook提交Apache基 ...

  3. Java线程:线程的交互

      一.线程交互的基础知识   SCJP所要求的线程交互知识点需要从java.lang.Object的类的三个方法来学习:    void notify()           唤醒在此对象监视器上等 ...

  4. web应用程序性能优化

    web应用程序基本上都是在浏览器地址栏输入一段网站,然后进入,最后浏览器显示你想要的东西. 这就是用户所能体会到的东西.那作为程序员我们看到了什么呢? 一次HTTP 请求主要的流程是: 1.DNS服务 ...

  5. C++学习之重载、覆盖与隐藏

    MaiziTest12.cpp : 定义控制台应用程序的入口点. 1.重载特征 1)相同的范围(在同一个类中): 2)函数名相同: 3)参数不同: 4)virtual关键字可有可无. 2.覆盖 指的是 ...

  6. iOS $299刀企业证书申请的过程以及细节补充

    最近申请了iOS的 299刀企业证书,相关过程有些问题,分享出来,以便后来人参考. 申请的过程我主要参考了别人以前的文章,链接如下: 1.https://developer.apple.com/cn/ ...

  7. 【转】中间代码opcode的执行

    原文链接:http://www.orlion.ga/941/ 原文:http://www.nowamagic.net/librarys/veda/detail/1543 假如我们现在使用的是CLI模式 ...

  8. SQL*Loader之CASE2

    CASE2 1. 控制文件 [oracle@node3 ulcase]$ cat ulcase2.ctl -- NAME -- ulcase2.ctl - SQL*Loader Case Study ...

  9. LeetCode:3Sum_15

    LeetCOde:3Sum [问题再现] Given an array S of n integers, are there elements a, b, c in S such that a + b ...

  10. Anliven - 解决问题的一些方法

    How to resolve the problem? 获取基本的相关信息(后续处理问题的基础)  在怎样的背景环境下?发生了怎样的问题? 如果无法清楚地辨别或陈述问题的基本信息,那么,此时要面对的将 ...