Struts 2开讲了!!!
首先我们要知道我们为什么要学习Struts2这门技术?
Struts2是java程序员所必需学习的一门技术几乎面试都会提起!
Struts英文单词是什么意思,怎么理解?
翻译:支柱,支杆,来源于建筑和旧式飞机使用的金属支架。在软件开发中Struts也是一个非常优秀的框架。
关于Struts2的背景有哪些?
Struts刚开始是Jakarta项目中的一个子项目后来转到了Apache软件基金会(Apache Software Foundation)
的开源项目。Struts是流行和成熟的基于MVC设计模式的Web应用程序框架。
使用Struts的目的是什么?
为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。
*********************************************************************
MVC模式
MVC是模型视图控制器(Model View Controller),一种软件设计典范,用一种业务逻辑,数据,界面显示分离的方
法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
Controller:控制器;View:视图;Model:模型。
MVC流程图:

Struts发展历史:
Struts2之前是不是有Struts1?
Struts1是2001年发布的,目前仍有公司再用Struts1框架,Struts2是2007年发布的,相比Struts1而言后者已经有了全新的改革,但是他不是一个全新的框架他是WebWork这个框架上升级的。简单的说Struts2没有继承Struts1的特点而是继承了WebWork这个框架的特点。所以用一句话来总结Struts2是不一个全新的框架,稳定性,性能等各个方面都有很好的保证,同时吸收了Struts1和WebWork两者的优势。
Apache Struts2的环境需求如下:

在Struts2中我们会用到注解所以JDK必需是1.5之上。
***********************下面我们就来实现struts2的第一个小例子吧!****************************
第一步:创建Web工程 ,引入Struts2的Jar包!!

struts2-core-xxx.jar:Struts2框架的核心类库
xwork-core-xxx.jar:XWork类库,Struts2的构建基础
ognl-xxx.jar:Struts2使用的一种表达式语言类库
freemarker-xxx.jar:Struts2的标签模板使用类库
javassist-xxx.GA.jar:对字节码进行处理
commons-fileupload-xxx.jar:文件上传时需要使用
commons-io-xxx.jar:Java IO 扩展
Commons-lang-xxx.jar:包含了一些数据类型的工具类
接下来我们创建一个helloWorld的JSP页面
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!-- 导入Struts2标签库 -->
<%@taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'HelloWorld.jsp'</title> </head> <body>
<div>
<h1>
<!-- 显示Struts Action 中message的属性内容 -->
<s:property value="message"/>
</h1> </div>
<hr/>
<div>
<form action="helloWorld.action"method="post">
请输入您的姓名:
<input name="name" type="text" />
<input type="submit" value="提交" /> </form>
</div>
</body>
</html>
其次创建Action类
package cn.jbit.strutsdemo;
import com.opensymphony.xwork2.Action;
public class HelloWorldAction implements Action {
//用户输入的姓名
private String name="";
//向用户显示的信息
private String message="";
/**
* execute方法,当Struts2处理用户请求时,在默认配置下调用的方法
* @return
*/
@Override
public String execute() throws Exception {
this.setMessage("你好,"+this.getName()+"!!");
//处理完毕后返回你好加姓名
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
然后我们在Web.xml文件中配置过滤器
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>HelloWord</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>HelloWorld.jsp</welcome-file>
</welcome-file-list>
</web-app>
最后我们在SRC目录下创建一个struts2的配置文件内容如下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<!-- developerment Mode:开发模式以后修改下面配置,不需要重新启动Tmocat服务器 -->
<constant name="struts.devMode" value="true" />
<!-- 创建一个default包,继承自Struts 2 的struts 2的struts-deafult包 -->
<package name="default" namespace="/" extends="struts-default"> <action name="LoginAction" class="cn.jbit.strutsdemo.LoginAction">
<!-- 结果为“success”时跳转至helloworld.jsp页面 -->
<result name="success">login/success.jsp</result>
<result name="login">login/login.jsp</result> </action> <!-- 接收处理用户的/helloWorld.action请求,并根据返回结果,完成跳转 -->
<action name="helloWorld" class="cn.jbit.strutsdemo.HelloWorldAction">
<!-- 结果为“success”时跳转至helloworld.jsp页面 -->
<result name="success">HelloWorld.jsp</result> </action> </package> </struts>
这样我们的第一个案例就完成了,快动手试一下吧
Struts 2开讲了!!!的更多相关文章
- 菜鸟学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的一些原理 其实这张图就 ...
随机推荐
- Visual Studio的Web Performance Test提取规则详解(1)
总结 Visual Studio的Web Performance Test是基于HTTP协议层的,它不依赖于浏览器,通过直接接收,发送HTTP包来和Web服务器交互.Web Performance T ...
- Xcode代码提示联想功能失效,按command键点不进去类库,提示“?”
参考文档:这两篇文章很好的解决了问题.可以很好的解决了问题 Xcode代码提示联想功能失效,按command键点不进去类库,提示“?”,代码全是白色 Xcode4中代码补全(Code Completi ...
- PDO数据库抽象层
PDO的优势在于兼容性,但速度不如mysql和mysqli new PDO($dsn,$username,$passwd[,$options]) $options可以设置数据库连接属性,如: $opt ...
- Python学习笔记(2)
变量 变量名就像我们现实社会的名字,把一个值赋值给一个名字时,它会存储在存储中,称之为变量(Variable),在大多数语言中,都把这种行为称为“给变量赋值”或“把值存储在变量中”. 而Python与 ...
- hdu 3887 Counting Offspring dfs序+树状数组
Counting Offspring Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- SPSS数据分析—最小一乘法
线性回归最常用的是以最小二乘法作为拟合方法,但是该方法比较容易受到强影响点的影响,因此我们在拟合线性回归模型时,也将强影响点作为要考虑的条件.对于强影响点,在无法更正或删除的情况下,需要改用更稳健的拟 ...
- 樱花漫地集于我心,蝶舞纷飞祈愿相随---总结 适者:survival of the fittest 适者:survival of the fittest
编程什么的最讨厌了,总是忘记一些乱七八糟的,看起来并没有什么乱用的,比如(::“<>{}, 还有交作业的时候总是忽略大小写<(▰˘◡˘▰)> 马马虎虎莫名其妙就错了,其实大小写 ...
- 20169212《Linux内核原理与分析》第一周作业
实验 使用touch创建文件: man手册的内容很多,涉及了Linux使用过程中的方方面面,为了便于查找,是做了分册(分区段)处理的,在Research UNIX.BSD.OS X和Linux中,手册 ...
- maven入门探讨
java项目最恶心的一点莫过于需要使用大量的jar.每次引用jar的时候都要自己手动去各地寻找,然后导入到项目的指定文件夹当中最后还要添加Path.这无疑是一项工作量巨大的工作,同时如果控制不当就会提 ...
- ArrayList其实就那么一回事儿之源码浅析
ArrayList 算是常用的集合之一了,不知作为javaner的你有没在百忙之中抽出一点时间看看ArrayList的源码呢. 如果看了,你会觉得其实ArrayList其实就那么一回事儿,对吧,下面就 ...