Struts2例子
(1)用MyEclipse建立一个Web Project,项目名称为myStruts2,结构如下图:
(2)导入struts2需要的包,我是把解压后的struts-2.3.16.3\apps\struts2-blank\WEB-INF\lib\下面所有的包都导入;
(3)修改web.xml,设置filter和filter-mapping:
- <?xml version="1.0" encoding="GB2312"?>
- <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">
- <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>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
(4)在WebRoot\jsp\下面新建三个jsp文件:
input.jsp,用于输入信息
- <%@ page language="java" pageEncoding="gb2312"%>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <!-- struts2标签库调用声明 -->
- <%@taglib prefix="s" uri="/struts-tags"%>
- <html>
- <head>
- <title>输入页面</title>
- </head>
- <body>
- <!-- form标签库定义,以及调用哪个Action声明 -->
- <s:form action="INPUT">
- <table width="60%" height="76" border="0">
- <!-- 各标签定义 -->
- <s:textfield name="name" label="姓名"/>
- <s:textfield name="phone" label="电话"/>
- <s:textfield name="mail" label="邮箱"/>
- <s:submit value="确定" align="center"/>
- </table>
- </s:form>
- </body>
- </html>
list.jsp,用于列出输入的信息
- <%@ page language="java" contentType="text/html; charset=GB2312"%>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>输入成功</title>
- </head>
- <body>
- <!-- 取得session中用户名值 -->
- 姓名:${sessionScope.name}<br>
- 电话:${sessionScope.phone}<br>
- 邮箱:${sessionScope.mail}
- </body>
- </html>
error.jsp,用于出错提示:
- <%@ page language="java" contentType="text/html; charset=GB2312"%>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>输入失败</title>
- </head>
- <body>
- 失败,请重新输入!
- </body>
- </html>
(5)创建struts.xml文件,设置package和Action:
- <?xml version="1.0" encoding="gb2312"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <!-- Action所在包定义 -->
- <package name="myStruts2" extends="struts-default">
- <!-- 全局导航页面定义 -->
- <global-results>
- <result name="global">/jsp/error.jsp</result>
- </global-results>
- <!-- Action名字,类以及导航页面定义 -->
- <!-- 通过Action类处理才导航的的Action定义 -->
- <action name="INPUT"
- class="myStruts2.InputAction">
- <result name="input">/jsp/input.jsp</result>
- <result name="list">/jsp/list.jsp</result>
- <result name="error">/jsp/error.jsp</result>
- </action>
- <!-- 直接导航的的Action定义 -->
- <action name="index" >
- <result >/jsp/input.jsp</result>
- </action>
- </package>
- </struts>
(6)创建InputAction类:
- package myStruts2;
- import com.opensymphony.xwork2.ActionContext;
- import com.opensymphony.xwork2.ActionSupport;
- public class InputAction extends ActionSupport {
- // Action类公用私有变量,用来做页面导航标志
- private static String FORWARD = null;
- // 姓名,电话,邮箱
- private String name;
- private String phone;
- private String mail;
- public String getName() {
- return name;
- }
- public void setName(String x) {
- this.name = x;
- }
- public String getPhone() {
- return phone;
- }
- public void setPhone(String x) {
- this.phone = x;
- }
- public String getMail() {
- return mail;
- }
- public void setMail(String x) {
- this.mail = x;
- }
- public String execute() throws Exception {
- // 属性值即JSP页面上输入的值
- name = getName();
- phone = getPhone();
- mail = getMail();
- try {
- // 判断输入值是否是空对象或没有输入
- if (name != null && !name.equals("")
- && phone != null && !phone.equals("")
- && mail != null && !mail.equals(""))
- {
- ActionContext.getContext().getSession().put("name", getName());
- ActionContext.getContext().getSession().put("phone", getPhone());
- ActionContext.getContext().getSession().put("mail", getMail());
- // 根据标志内容导航到操作成功页面
- FORWARD = "list";
- } else {
- // 根据标志内容导航到操作失败页面
- FORWARD = "error";
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- return FORWARD;
- }
- }
(7)部署到Tomcat后运行,结果如下:
Struts2例子的更多相关文章
- maven+struts2例子
本文在开发第一个maven示例的基础上进行扩展. 第一个maven示例目录结构如下: 扩展后目录为: 打开pom.xml 在WEB-INF文件夹下新建web.xml: <?xml version ...
- Struts2 源码分析——过滤器(Filter)
章节简言 上一章笔者试着建一个Hello world的例子.是一个空白的struts2例子.明白了运行struts2至少需要用到哪一些Jar包.而这一章笔者将根据前面章节(Struts2 源码分析—— ...
- Struts2源码解析2
看了前面一节对Struts2各个模块运行有了大概了解,也对调用的函数有了一定的了解,本节希望打断点跑一个Struts2例子! 还是放在struts2结构图: 一:项目启动后解析web.xml文件,会解 ...
- sturts2 回顾
第一个简单的struts2例子: 1. 创建一个web project 2. 导入jar包 具体jar包在struts 的例子中的lib文件夹中copy
- Struts2登录小例子
前面实现了一个数据显示的例子,下面我来实现以下使用Struts2登录 首先是配置不用过多解释 注意名字要和类名保持一致 因为实现的是action这个方法所以需要用action.log来跳转到类里面 解 ...
- Struts2入门(一)——环境搭建和简单例子(Struts2 2.5.2版本)
一.前言 1.了解三大框架 什么是框架? 框架是一种规范,一种规则,一种把技术组织起来的规则,这就是框架. 什么是三大框架(SSH),Struts.hibernate和spring的作用是什么? St ...
- struts2中把action中的值传递到jsp页面的例子
例子: RegistAction的代码: package com.wss.action; import javax.servlet.http.HttpServletRequest; import or ...
- 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 ...
- jqGrid(struts2+jdbc+jsp)增删改查的例子
前几日一直在找关于Java操作jqgrid返回json的例子,在网上也看了不少东西,结果都没几个合理的,于是本人结合网上的零散数据进行整理,完成了 一个比较完整的jqgrid小例子,考虑到还有很多 ...
随机推荐
- 使用OData技术遇到的问题及解决办法
“System.NotSupportedException”类型的未经处理的异常在 Microsoft.Data.Services.Client.dll 中发生 其他信息: 对此 POST 请求的响应 ...
- Thrift架构~windows下安装和Hello World及编码引起的错误
最近开始正式接触Thrift架构,很牛B的技术,它被apache收纳了,属于开源中的一员,呵呵. 概念: Thrift源于大名鼎鼎的facebook之手,在2007年facebook提交Apache基 ...
- Java线程:线程的交互
一.线程交互的基础知识 SCJP所要求的线程交互知识点需要从java.lang.Object的类的三个方法来学习: void notify() 唤醒在此对象监视器上等 ...
- web应用程序性能优化
web应用程序基本上都是在浏览器地址栏输入一段网站,然后进入,最后浏览器显示你想要的东西. 这就是用户所能体会到的东西.那作为程序员我们看到了什么呢? 一次HTTP 请求主要的流程是: 1.DNS服务 ...
- C++学习之重载、覆盖与隐藏
MaiziTest12.cpp : 定义控制台应用程序的入口点. 1.重载特征 1)相同的范围(在同一个类中): 2)函数名相同: 3)参数不同: 4)virtual关键字可有可无. 2.覆盖 指的是 ...
- iOS $299刀企业证书申请的过程以及细节补充
最近申请了iOS的 299刀企业证书,相关过程有些问题,分享出来,以便后来人参考. 申请的过程我主要参考了别人以前的文章,链接如下: 1.https://developer.apple.com/cn/ ...
- 【转】中间代码opcode的执行
原文链接:http://www.orlion.ga/941/ 原文:http://www.nowamagic.net/librarys/veda/detail/1543 假如我们现在使用的是CLI模式 ...
- SQL*Loader之CASE2
CASE2 1. 控制文件 [oracle@node3 ulcase]$ cat ulcase2.ctl -- NAME -- ulcase2.ctl - SQL*Loader Case Study ...
- LeetCode:3Sum_15
LeetCOde:3Sum [问题再现] Given an array S of n integers, are there elements a, b, c in S such that a + b ...
- Anliven - 解决问题的一些方法
How to resolve the problem? 获取基本的相关信息(后续处理问题的基础) 在怎样的背景环境下?发生了怎样的问题? 如果无法清楚地辨别或陈述问题的基本信息,那么,此时要面对的将 ...