Struts2 学习(一)
一、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文件)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"> <!--配置核心拦截器-->
<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-->
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
3、定义一个 action
HelloAction,提供一个execute方法(公共无参数)。
package com.struts2.action; /**
* @author zt1994 2018/3/8 11:19
*/
public class HelloAction {
private String name; public String execute() throws Exception{
return "success";
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
4、HelloWorld.jsp 视图文件
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>HelloWorld</title>
</head>
<body>
<h1>恭喜成功配置好基本的struts2环境</h1>
<h2>Hello World</h2>
</body>
</html>
5、Struts2的配置文件 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>
<!-- 指定Struts2处于开发阶段,可以进行调试 -->
<constant name="struts.devMode" value="true"/>
<package name="default" extends="struts-default" namespace="/oa"> <action name="hello" class="com.struts2.action.HelloAction" method="execute">
<!--结果集,即action中成功返回的视图-->
<result name="success">/HelloWorld.jsp</result>
</action> </package>
</struts>
6、部署项目,访问Action
访问格式:http://http://localhost:8080/oa/hello.action
7、Struts2 简单执行流程
最新文章
- 修改applicationhost.config允许外部访问
- CodeForces 474B E(Contest #1)
- MD5在java中的使用
- Process32First 返回FALSE的原因
- MATLAB实现将图像转换为素描(简笔画)风格
- Servlet、JSP选择题
- PHP 日期比较
- linux系统下挂载windows共享目录
- PHP Framework安装
- 深入了解jsonp解决跨域访问
- Hibernate Tools
- 1625: [Usaco2007 Dec]宝石手镯
- D01 Elon Mulsk The future we&#39;re building — and boring
- VS2013 重装 无法打开项目
- 结合JDK源码看设计模式——迭代器模式
- JVM探秘6--图解虚拟机栈的局部变量表和操作数栈工作流程
- tensorboard中show不出来数据
- 【LeetCode每天一题】3Sum(三数之和)
- python中的argparse模块(参数解析)
- http://xx.xxx.xxx.xx:8080/把路径设置成http服务访问的形式
热门文章
- [Flex] 组件Tree系列 —— 运用LabelFunction hasChildren getChildren设置Tree包含节点个数
- 机器学习 - ML + 深度学习 - DL
- Python常用功能函数
- dotnet --info
- vue-cli 3.5 解决 typescript cannot find file 问题。
- rest-assured之认证授权(Authentication)
- stark - 2 ⇲路由分发
- SPOJ - TTM 主席树
- 剑指offer——面试题19:正则表达式匹配
- 利用JS获取本地时间和服务器时间