Struts的使用
一、Struts2的获取
Struts的官方网站为:http://struts.apache.org/
下载完Struts2的jar包,解压,Struts2资源包的目录结构如下图:

- apps目录下包含了官方提供的Struts2应用示例.各示例均为war文件.
- docs 目录下是官方提供的Struts2文档,可以通过index.html页面进行访问
- lib 目录下是Struts2的发行包以及依赖包
- src目录下是Struts的源代码
二、Struts2的使用
(1)导包:新建java Web项目,添加struts2的jar 文件。Struts2的依赖的基础jar如下

(2)web.xml中配置Struts2的核心过滤器
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <!-- Struts2的核心过滤器:注意,要放在所有过滤器的最后 -->
<filter>
<filter-name>struts</filter-name>
<!-- 早期的Struts的核心过滤器是:org.apache.struts2.dispatcher.FilterDispatcher
而在2.1.3之后使用下面的过滤器类
-->
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>.action</url-pattern>
</filter-mapping>
</web-app>
(3)编写一个测试的实体类。如下:
package entity;
public class Student {
private String stuNo;
private String stuName;
public String getStuNo() {
return stuNo;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
}
(4)新建一个类继承ActionSupport,类里面定义私有地属性(非方法内),可以是任意类型的数据或对象,给这些属性添加set方法用于传递值到界面,添加get方法用于取界面的数据。例子如下:
package controNer;
import com.opensymphony.xwork2.ActionSupport;
import entity.Student;
public class StudentControNer extends ActionSupport{
private Student stu = new Student();
public String show(){
stu.setStuName("张三");
stu.setStuNo("1001");
return "showStudent";
}
public String changeStudent(){
System.out.println(stu.getStuNo());
System.out.println(stu.getStuName());
String stuName=stu.getStuNo();
stu.setStuNo(stu.getStuName());
stu.setStuName(stuName);
return "changeStudent";
}
public Student getStu() {
return stu;
}
public void setStu(Student stu) {
this.stu = stu;
}
}
(5)在src目录下新建一个Struts的xml文件,如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="queryStudent" class="controNer.StudentControNer" method="show">
<result name="showStudent">index.jsp</result>
</action>
<action name="changeStudent" class="controNer.StudentControNer" method="changeStudent">
<result name="changeStudent">index.jsp</result>
</action>
</package>
</struts>
在Struts配置文件中,包含以下几个元素:
- package元素用于定义Struts2处理请求的逻辑单元,name属性为必需的并且唯一,指定包的名称(被其他包引用),extends属性类似Java的extends关键字,用于指定要扩展的包
- action元素用于配置Struts2框架的”工作单元”action类,action元素将一个请求的URL(action的名字)对应到一个Action类.name必需的,用来表示action的名字;class属性可选,用于设定Action类的全限定名.
- result元素用于设定Action类处理结果后系统下一步将要做什么.name属性表示result的逻辑视图名称,必须与Action类返回的字符串进行匹配;而result元素的值表示与逻辑视图名对应的物理资源之间的映射,用来指定这个结果对应的实际资源的位置.
(6)添加一个jsp页面,用来测试
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<form action="changeStudent.action">
<input type="text" value="${stu.stuNo}" name="stu.stuNo">
<input type="text" value="${stu.stuName}" name="stu.stuName">
<input type="submit">
</form>
</body>
</html>
(7)程序运行的流程说明:
首先,浏览器访问struts中action的name.action,在web.xml执行过滤器,当检测到地址栏带有.action的情况时,会调用Struts留给我们的过滤器处理方法,进入到struts的配置文件中,然后检查.action前面的字段,当字段名和某个action的name值相同时,通过action的class和method查找到继承了ActionSupport的class的类,找到里面的method的方法,进行处理,通过这个类的私有属性的get方法,就可以找到界面提交过来的同一名字同一类型的对象的值,通过set方法就可以将数据返回界面。
详情请看:http://www.cnblogs.com/365txrw/p/StrutsCofigInfo.html
Struts的使用的更多相关文章
- 菜鸟学Struts2——Struts工作原理
在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ...
- Struts的拦截器
Struts的拦截器 1.什么是拦截器 Struts的拦截器和Servlet过滤器类似,在执行Action的execute方法之前,Struts会首先执行Struts.xml中引用的拦截器,在执行完所 ...
- Struts框架的核心业务
Struts的核心业务 Struts核心业务有很多,这里主要介绍了比较简单一些的: 请求数据的处理,和数据自动封装,类型自动转换 1.Struts中数据处理 1.1.方式1:直接过去servletap ...
- Struts的文件上传下载
Struts的文件上传下载 1.文件上传 Struts2的文件上传也是使用fileUpload的组件,这个组默认是集合在框架里面的.且是使用拦截器:<interceptor name=" ...
- 配置hibernate,Struts。文件
hibernate文件配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernat ...
- hibernate与Struts框架结合编写简单针对修改练习
失败页面fail.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ...
- 3. 解析 struts.xml 文件
1. struts.xml 文件基本配置: 主要放在资源路径下,配置 sturts2相关的 Action , 拦截器等配置 <struts> <!-- 设置常量 --> < ...
- Struts+Spring+Hibernate项目的启动线程
在Java Web项目中,经常要在项目开始运行时启动一个线程,每隔一定的时间就运行一定的代码,比如扫描数据库的变化等等.要实现这个功能,可以现在web.xml文件中定义一个Listener,然后在这个 ...
- Struts 原理
今天开始接触公司的框架,叫YNA,三个字母应该是雅马哈的缩写,这个框架听公司前辈说功能很强大,但实际上我看不懂.哈哈...... 其中整合了SSH框架,接下来我说下Struts的一些原理 其实这张图就 ...
- axis2+struts拦截地址冲突问题
axis2和struts在整合过程中,struts会把axis的地址也拦截了,默认当成一个action处理, 会因为找不到action而报错: <!-- struts配置 --> < ...
随机推荐
- Linux系列教程(二十二)——Linux的bash变量
上篇博客我们介绍了bash的一些基本功能,这是我们平时操作最频繁的.本篇博客我们介绍bash的变量,为后面编写shell脚本做铺垫. 1.什么是变量 变量是计算机内存的单元,其中存放的值可以改变. 当 ...
- [转载] Redis资料汇总专题
转载自http://www.cnblogs.com/tommyli/archive/2011/12/14/2287614.html 1.Redis是什么? 十五分钟介绍 Redis数据结构 Redis ...
- Android 使用GangSDK创建第三方家族公会系统经验分享
由于需要对之前的游戏加入一个家族系统,想到这块儿可能会有大量的工作需要自己做,就偷了个懒去网上搜罗了一波,有没有类似现成的系统?结果让我惊奇的发现,目前市面上居然真的有类似的服务,虽然是小公司开发的, ...
- 华南师大 2017 年 ACM 程序设计竞赛新生初赛题解
题解 被你们虐了千百遍的题目和 OJ 也很累的,也想要休息,所以你们别想了,行行好放过它们,我们来看题解吧... A. 诡异的计数法 Description cgy 太喜欢质数了以至于他计数也需要用质 ...
- Javascript-基础概念总结
[作用域]javascript中的作用域可以理解为一个语句执行的环境大小,有全局的作用域,函数作用域和eval作用域.在JS中没有块级作用域.讲到作用域,不得不讲执行环境,执行环境在JS中是最为重要的 ...
- 解决微信公众平台IP白名单
微信公众平台,作为自媒体的旗舰级产品,越来越多的人已经投入它的怀抱.正如它的广告词所说:再小的个体,也有品牌 好吧,闲话不多说,今天要说的是它的IP白名单机制. 我们现在安装的大部分的电信的家庭级别的 ...
- ##1.Centos7环境准备-- openstack pike
##1.Centos7环境准备 openstack pike 安装 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##.Centos7环境准备 #Ce ...
- cinder块存储 后端采用lvm、nfs安装配置
#cinder块存储 后端采用lvm.nfs安装配置 openstack pike 安装 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html #cinder ...
- Django学习(2)数据宝库
数据库是一所大宝库,藏着各种宝贝.一个没有数据库的网站,功能有限.在Django中,支持的数据库有以下四种: SQLite3 MySQL PostgreSQL Oracle 其中SQLite3为Dja ...
- YiShop_商城网站建设应该注意什么
现在电子商务迅速发展,而专门搭建商城网站的第三方开发商也很多.现在搭建一个商城网站容易,如何运营一个商城网站才是重点.下面就由YiShop说说电子商城网站建设要思考什么呢(1)建设网站的目的是什么首先 ...