一、Struts 介绍
1、Struts2的概述
1、早期开发模型Servlet+JSP+JavaBean(Model2)显得力不从心:
流程凌乱、数据传递无序、缺乏辅助功能。
2、MVC模式的轻量级Web应用框架:Apache Struts1 很快风靡全球。
代码结构划分合理,实用工具框架(如验证框架、国际化框架)等。
3、时间推移,Struts1的缺点:
线程不安全、灵活性低、和ServletAPI耦合、页面传值麻烦等。
4、异军突起,SpringMVC 和 OpenSymphony 的 WebWork 等。
5、Apache Struts + OpenSymphony WebWork2 = Struts2
Struts2:基于MVC的轻量级的Web应用框架,
6、来源于Webwork2与Struts1.x完全不兼容,Struts2 是一个非常优秀的MVC框架,基于Model2 设计模型。
由传统Struts1和WebWork两个经典框架发展而来:
Struts2框架= Struts2 + XWork
7、Strust2 核心功能:
- 允许POJO(Plain Old Java Objects)对象 作为Action。
- Action的 execute 方法不再与 Servlet API 耦合,更易测试
- 支持更多视图技术(JSP、FreeMarker、Velocity)
- 基于 Spring AOP 思想的拦截器机制,更易扩展
- 更强大、更易用输入校验功能
- 整合Ajax支持
2、Struts2框架的核心两层(Struts+XWork)
3、Struts 目录结构
1、apps:该文件夹包含了基于 struts2 的示例应用,这些示例应用对于学习者是非常有用的。
2、docs:该文件夹下包含了 struts2 相关文档,包括 struts2 快速入门、struts2 的文档以及API文档等。
3、lib:该文件夹下包含了 Struts2 框架和核心类库,以及 struts2 第三方插件类库。
4、src: 该文件夹下包含了 Struts2 框架的全部源代码。
二、Struts 简单入门
1、准备Struts2依赖的jar文件
注意:别拷贝Struts2中lib下所有的jar,必须的jar如下。
Struts2根/apps下,解压struts2-blank.war,拷贝其WEB-INF/lib中的所有的 jar 到自己的项目中。
2、在 web.xml 中配置前端控制器
StrutsPrepareAndExecuteFilter-(参阅struts2-blank项目的web.xml文件)
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 5 version="3.1"> 6 7 <!--配置核心拦截器--> 8 <filter> 9 <filter-name>struts2</filter-name> 10 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 11 </filter> 12 <filter-mapping> 13 <filter-name>struts2</filter-name> 14 <!--拦截所有url--> 15 <url-pattern>/*</url-pattern> 16 </filter-mapping> 17 </web-app>
3、定义一个 action
HelloAction,提供一个execute方法(公共无参数)。
1 package com.struts2.action; 2 3 /** 4 * @author zt1994 2018/3/8 11:19 5 */ 6 public class HelloAction { 7 private String name; 8 9 public String execute() throws Exception{ 10 return "success"; 11 } 12 13 public String getName() { 14 return name; 15 } 16 17 public void setName(String name) { 18 this.name = name; 19 } 20 }
4、HelloWorld.jsp 视图文件
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <html> 3 <head> 4 <title>HelloWorld</title> 5 </head> 6 <body> 7 <h1>恭喜成功配置好基本的struts2环境</h1> 8 <h2>Hello World</h2> 9 </body> 10 </html>
5、Struts2的配置文件 struts.xml
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 <struts> 6 <!-- 指定Struts2处于开发阶段,可以进行调试 --> 7 <constant name="struts.devMode" value="true"/> 8 <package name="default" extends="struts-default" namespace="/oa"> 9 10 <action name="hello" class="com.struts2.action.HelloAction" method="execute"> 11 <!--结果集,即action中成功返回的视图--> 12 <result name="success">/HelloWorld.jsp</result> 13 </action> 14 15 </package> 16 </struts>
6、部署项目,访问Action
访问格式:http://http://localhost:8080/oa/hello.action
7、Struts2 简单执行流程