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 简单执行流程

Struts2 学习(一)的更多相关文章
- [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Struts2学习笔记⑧
今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...
- Struts2学习笔记①
Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...
- Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)
Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...
- Struts2学习:interceptor(拦截器)的使用
对于需要登陆验证.权限验证等功能的网站,每一次请求,每一个action都写一段验证的代码,未免显得冗余且不易维护.struts2提供了拦截器interceptor,为这些页面提供一个切面,或者说公共组 ...
- Struts2 学习笔记(概述)
Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并 ...
- Java后台处理框架之struts2学习总结
Java后台处理框架之struts2学习总结 最近我在网上了解到,在实际的开发项目中struts2的使用率在不断降低,取而代之的是springMVC.可能有很多的朋友看到这里就会说,那还不如不学str ...
- struts2学习之旅三 权限管理和导航设计
1,权限管理的db设计和dao实现,尽量简单快速有效: db的设计如下:权限按照角色来赋给用户: 权限对应每一个具体的功能,有菜单级别的,有导航级别的,还有页面级别的功能: 涉及到权限的敏感操作一般都 ...
- struts2 学习记录 过滤器 国际化
struts2接触不是一天两天了,但是一直没有用它做什么项目,但老师确一直说它有很大的学习价值,所以还是把我学习到的东西给记录一下,记录的东西没有规律,只是给自己留个备份, struts2中最关键的是 ...
随机推荐
- linux命令提示符[root@localhost ~]#详解
[root@localhost ~]# 1. @之前代表当前登录用户 在Linux中管理员用户是root,还有一些普通用户: 在此例中,root代表当前登录用户 2. @之后代表当前计算机主机 ...
- scrapy下载中间件,UA池和代理池
一.下载中间件 框架图: 下载中间件(Downloader Middlewares) 位于scrapy引擎和下载器之间的一层组件. - 作用: (1)引擎将请求传递给下载器过程中, 下载中间件可以对请 ...
- [AIR] AS3读取txt文档
package { import flash.display.Sprite; import flash.events.Event; import flash.filesystem.File; impo ...
- 如何使用MySQL Workbench创建数据库存储过程
方法/步骤 1 打开My SQL Workbench 2 右击要启动的my SQL数据库连接,然后选择[connection to database] 3 此时进入数据库实例管理界面,下方显示 ...
- UIScreen和UIWindow
UIScreen 和UIWindow UIScreen object defines the properties associated with a hardware-based display 就 ...
- Linux环境部署安装Maven
第一步:Maven下载 1. 手动下载 访问官网:http://maven.apache.org/download.cgi 当前最新版本是3.6.0,如果想下载其他版本 可通过点击下图选中项进入历史更 ...
- 修改testng源码,添加beforeMethod和afterMethod中的日志到test中(可以不改源码,废弃)
在使用testng生成报告的时候,只会记录test方法中的日志,但是一般会在beforeMethod.beforeTest.afterMethod.afterTest中做一下数据的处理,这里面的日志没 ...
- 适配器模式-如何把usb插到插座上
前言 下面所写的内容不是实际的业务场景, 也可能不符合正常的生活习惯, 或者不满足一些人的口味 所写的内容包括之前的帖子,只是为了方便大家更好的记住这个设计模式,实际生活中要灵活应用 设计模式重思想, ...
- vue项目element-ui框架中的弹窗中的表单验证清除问题
问题回顾: 1.vue项目的在弹窗上的form表单验证,第一次点击新增时正常,第二次新增打开弹窗后由于表单内容为空,出现验证这种情况 2.为了解决上面的情况,在执行点击新增事件加上this.$refs ...
- Cook-Torrance光照模型
Cook-Torrance光照模型将物体粗糙表面看作由很多微平面组成,每一个微平面都可以看成一个理想的镜面反射体,物体表面粗糙程度由微平面斜率的变化来表示.越粗糙的表面由斜率变化越大,反之越小. Co ...