Struts2
Struts2 简介及入门
Struts2 概述
Struts2 是目前较为普及和成熟的基于MVC设计模式的web应用程序框架,它不仅仅是Struts1 的升级版本,更是一个全新的Struts架构。最初,是以WebWork框架和Struts框架为基础,通过提供增强和改进的Struts框架,进而实现简化web技术人员开发工作的目标。不久之后,Webwork框架和Struts社区联合创造了现在流行的Struts2框架
Struts2 框架的优点
- 开源的项目 - 可扩展
- MVC设计模式 - 实现了MVC设计模式
- 配置简单 - 通过简单的配置,即可实现复杂的业务逻辑
- 表达式/标签库 - Struts2提供有很强大的表达式,和标签库,标签可自行样式,主题,模板
- 验证机制 - Struts2提供有强大的数据验证框架
- 支持国际化 - Struts2国际化系统,一个页面,不同的展示
- AJAX - Struts2还提供有AJAX支持,使得ajax操作变得简单
- 异常处理 - 在Struts2 中,还配有异常处理机制,可综合处理异常,不用单独处理
- AOP - Struts2 拦截器采用AOP设计,时得开发变得更加灵活
- 视图技术 - Struts2 为多种视图选项(JSP、Freemarker、Velocity、XSLT等)提供支持。
Struts2 环境设置
下载Struts2文件
这块使用的是struts-2.5.12-all.zip,下载解压后即可看到Struts2文件目录
Struts2-HelloWorld
下载了Struts2文件,接下来就让我们进行配置,跑个HelloWorld!
- 新建一个动态的Web工程(Dynamic Web Project)
- WEB-INF\lib下导入Struts2核心jar和其他jar(版本根据自己实际情况)
commons-fileupload-x.y.z.jar
commons-io-x.y.z.jar
commons-lang-x.y.jar
commons-logging-x.y.z.jar
freemarker-x.y.z.jar
javassist-x.y.z.GA.jar
log4j-api-x.y.z.jar
log4j-core-x.y.z.jar
ognl-x.y.z.jar
struts2-core-x.y.z.jar
以上jar可在下载的Struts2文件lib中找到,有些可百度下载或者下载我打包好的Struts2HelloWorld - 接下来就开始真正写代码了
- 新建类(HelloWorldAction.java)
Action类是Struts2 应用程序的关键,通过它来实现我们所需的业务逻辑
package com.wanl.action;
public class HelloWorldAction {
public String name;
//无参构造
public HelloWorldAction() {
System.out.println("HelloWorldAction.HelloWorldAction()");
}
public String execute(){
//写业务逻辑!
System.out.println("execute..." + name);
return "success";//表示逻辑视图
}
}
- 创建所需视图(hello.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>欢迎</title>
</head>
<body>
hello${name}
</body>
</html>
- 创建Struts2配置文件(struts.xml)
切记struts.xml放在src下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="day01" namespace="/" extends="struts-default">
<action name="hello" class="com.wanl.action.HelloWorldAction">
<result name="success">hello.jsp</result>
</action>
</package>
</struts>
- 回到我们的web.xml
配置Struts2核心过滤器
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>01_Struts2_helloworld</display-name>
<filter>
<filter-name>Struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
- 将项目加到服务器,启动tomcat9.0
- 浏览器发送请求(http://(自己本地地址及tomcat端口)/01_Struts2_helloworld/hello.action)
我们可以看到成功返回到了我们的hello.jsp,仔细想想我们xml所配的东西,就能够想明白了!
当我们,们多发几次请求,看到控制台打印如下
可得结论Struts2每一次请求都会创建一个Action,这时我们在请求后面加上name参数,看会发生什么?
http://localhost/01_Struts2_helloworld/hello.action?name=struts2
在jsp页面通过el表达式拿到了所传参数,是不是很神奇,这都是Struts2为我们所做的一些处理(值栈知识点)