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中最关键的是 ...
随机推荐
- 870. Advantage Shuffle
Given two arrays A and B of equal size, the advantage of A with respect to B is the number of indice ...
- ios处理键盘的大小
iOS的键盘有几个通知 UIKeyboardWillShowNotification UIKeyboardDidShowNotification UIKeyboardWillHideNotificat ...
- 对csrf的理解
用户浏览并登陆信任网站A 通过验证,在用户浏览器产出A的cookie 用户在没有登出A的情况下访问攻击网站B B要求访问第三方站点A,发出一个请求 根据B的请求,浏览器带着A的cookie访问A A不 ...
- SpringBoot 启动的时候提示 Field *** in *** required a bean named 'entityManagerFactory' that could not be found.
错误截图 后面发现原来和入口类代码有关. //@SpringBootApplication(scanBasePackages = {"org.jzc.odata.cboard",& ...
- JavaScript的深拷贝和浅拷贝
一.数据类型 数据分为基本数据类型(String, Number, Boolean, Null, Undefined,Symbol)和对象数据类型.. 1.基本数据类型的特点:直接存储在栈(stack ...
- docker 查看容器信息---格式化
镜像,ID,端口号,状态 docker ps -a --format "table {{.Image}}\t{{.ID}}\t{{.Ports}}\t{{.Status}}" 列出 ...
- C#集合之位数组
如果需要处理的数字有许多位,就可以使用BitArray类和BitVector32结构.BitArray类位于System.Collection,BitVector32结构位于System.Collec ...
- 知了课堂 Python Flask零基础 笔记整理
目录 起步 安装Python2.7: Python虚拟环境介绍与安装: pip安装flask: 认识url: URL详解 web服务器和应用服务器以及web应用框架: Flask 第一个flask程序 ...
- 博客主题皮肤探索-GitHub和jsdelivr的使用
有个前言 本萌并不会前端相关的知识,一切都是自己慢慢摸索出来的,如果存在代码方面的不足,请尽快告诉我~~~ 使用一个主题 目前我博客使用是 https://www.cnblogs.com/bndong ...
- sqlserver 并发机制
一.事务四大属性 分别是原子性.一致性.隔离性.持久性. 1.原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库, ...