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中最关键的是 ...
随机推荐
- python 特性:height-->while
""" 出题:height 女生找对象 男生在1米-1.5米之间 小强你在哪里? 男生在1.5-1.7米之间 没有安全感 男生在1.7 - 1.8米之间 帅哥 留个电话 ...
- Tomcat内存溢出解决java.lang.OutOfMemoryError: PermGen space
背景:把两个项目同时部署在tomcat,启动快好的时候,报java.lang.OutOfMemoryError: PermGen space 原因:因为两个项目的jar包太多,JVM把里面的class ...
- 网络CCNA基础了解
关于网络 CCNA.CCNP.CCIE 中的 CCNA 一.逻辑与.或.非 AND --> "与"计算 1 AND 1 = 1(取严) 1 AND 0 = 0 0 AND 1 ...
- <转>jmeter JDBC Request之Query Type
本博客转载自:http://www.cnblogs.com/imyalost/category/846346.html 个人感觉不错,对jmeter讲解非常详细,担心以后找不到了,所以转发出来,留着慢 ...
- CSS 加号选择器("+")
加号选择器("+"):就是指对找到的某类的元素除第一个元素以外的兄弟元素起作用,即第一个元素不起作用,后面的兄弟元素都会起作用 效果:给每一个li加一个border-left, ...
- Web开发模式
原文链接 开发模式的介绍(完善版) 在Web开发模式中,有两个主要的开发结构,称为模式一(Mode I)和模式二(Mode II). 首先我们来理清一些概念吧: DAO(Data Access Obj ...
- elasticsearch kibana简单查询
kibana CRUD 操作页面 一.简单的CRUD操作 1.添加 PUT /index/type/id { "json数据" } 2.查询 GET /index/type/id ...
- Q844 比较含退格的字符串
给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = "ab#c", T = " ...
- golang io.ReadFull
buf := make([]byte, 10, 10) file, _ := os.Open("./data.txt") n, err := io.ReadFull(file, b ...
- js中的 == 与 === 、永远不要使用 ==
前言: 很久没有复习基础了,所以导致做项目的时候被坑,咳咳,基础还是很重要的. === 是没有强制类型转换的,和其他大部分语言的 == 是一样的.而js中 == 是有类型转换的,这也是js饱受诟病的原 ...