一、Struts2的由来(简单了解)
Struts 1是全世界第一个发布的MVC框架,它由Craig McClanahan在2001年6月发布,该框架一经推出,就得到了世界上Java Web开发者的拥护,经过长达6年时间的锤炼,Struts 1框架更加成熟、稳定,性能也有了很好的保证。
后来Struts 2 问世了,号称是一个全新的框架,但这仅仅是相对Struts 1而言。Struts 2与Struts 1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:WebWork基础上发展起来的。从某种程度上来讲,Strut2没有继承Struts 1的血统,而是继承了WebWork的血统。或者说,WebWork衍生出了Struts 2,而不是Struts 1衍生了Struts 2。因为Struts 2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证;而且吸收了Struts 1和WebWork两者的优势,因此,是一个非常值得期待的框架。
虽然这种全新的框架也慢慢在被新的框架取代,但我觉得还是有学习的必要,有些工作原理之类的未必是新的。
1.1、Struts1 中存在的问题
1) 支持的表现层技术单一:Struts 1 只支持JSP作为表现层技术,不提供与其他表现层技术(如Velocity、FreeMarker等)的整合。这一点严重制约了Struts 1框架的使用
2) 与Servlet API严重耦合,难于测试
3) 代码严重依赖于Struts 1 API,属于侵入式设计
1.2、WebWork相对于Struts 2的优点
1) 支持更多的表现层技术,有更好的适应性:WebWork对多种表现层技术:JSP、Velocity和FreeMarker等都有很好的支持
2)Action无需与Servlet API耦合,更容易测试
3)Action无需与WebWork耦合,代码重用率高
二、Struts 2的安装与配置
2.1、Struts 2 下载
下载地址:http://struts.apache.org/ 直接点击download,进入到如下页面,单击第一个Struts...-all.zip下载
下载完后,解压到本地磁盘,该文件夹包含如下文件结构:
-》apps:该文件夹下包含了struts 2 的示例应用。
-》docs:struts2的相关文档,包含struts2的快速入门、struts2的帮助文档及API文档等内容。
-》lib:该文件夹下包含了struts2框架的核心类库,以及struts2的第三方插件类库。
-》 src:该文件下包含了struts2框架的全部源代码。
2.2、配置
2.2.1、创建Java Web项目
2.2.2、三步完成Struts2 FrameWork开发环境的搭建
☞①加入搭建Struts2 FrameWork开发环境的必需Jar包,将必需的11个Jar包复制到【lib】文件夹中到【lib】文件夹
☞②在【src】目录下创建“struts.xml”文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="Struts2_StudyDemo" extends="struts-default">
<action name="index">
<result>/index.jsp</result>
</action>
</package>
</struts>
☞③在【web.xml】文件中配置Struts2的核心过滤器(红色部分)
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" 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">
<display-name>Struts2_StudyDemo</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<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>
</web-app>
2.2.3、创建Model(模型)类MessageStore
package com.zl.struts.model;
public class MessageStore {
private String message;
public MessageStore(String msg) {
this.setMessage(msg);
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
2.2.4、创建Action类HelloWorldAction类,充当Controller
package com.zl.struts.action;
import com.opensymphony.xwork2.ActionSupport;
import com.zl.struts.model.MessageStore;
public class HelloWorldAction extends ActionSupport{
private MessageStore msgStore;
@Override
public String execute() throws Exception {
msgStore = new MessageStore("Helloworld!");
return SUCCESS;
}
public MessageStore getMsgStore() {
return msgStore;
}
public void setMsgStore(MessageStore msgStore) {
this.msgStore = msgStore;
}
}
2.2.5、创建View(视图)类
HelloWorld.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!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>HelloWorld!</title>
</head>
<body>
<h2><s:property value="msgStore.message" /></h2>
</body>
</html>
2.2.6、配置struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="Struts2_StudyDemo" extends="struts-default">
<action name="index">
<result>/index.jsp</result>
</action>
<action name="hello" class="com.zl.struts.action.HelloWorldAction" method="execute">
<result name="success">/HelloWorld.jsp</result>
</action>
</package>
</struts>
2.2.7、创建Action的URL链接
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!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=ISO-8859-1">
<title>Basic Struts 2 Application - Welcome</title>
</head>
<body>
<h1>Welcome To Struts 2!</h1>
<p><a href="<s:url action='hello'/>">Hello World</a></p>
</body>
</html>
“<%@ taglib prefix="s" uri="/struts-tags" %>”表示引入struts2的标签,“<s:url action>”是一个Struts2的标签,用于创建Action的URL链接,
“<s:url action='hello'/>”表示链接到一个名字为“hello”的Action,这个名字为“hello”的Action是在struts.xml配置文件配置好的,在struts.xml文件中可以找到如下的配置信息
<action name="hello" class="com.zl.struts.actionHelloWorldAction" method="execute">
<result name="success">/HelloWorld.jsp</result>
</action>
2.2.8、部署运行
单击项目名右键,选择Run As -》Run on Server
点击超链接: