一、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 学习(一)的更多相关文章

  1. [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. Struts2学习笔记⑧

    今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...

  4. Struts2学习笔记①

    Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...

  5. Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)

    Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...

  6. Struts2学习:interceptor(拦截器)的使用

    对于需要登陆验证.权限验证等功能的网站,每一次请求,每一个action都写一段验证的代码,未免显得冗余且不易维护.struts2提供了拦截器interceptor,为这些页面提供一个切面,或者说公共组 ...

  7. Struts2 学习笔记(概述)

    Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并 ...

  8. Java后台处理框架之struts2学习总结

    Java后台处理框架之struts2学习总结 最近我在网上了解到,在实际的开发项目中struts2的使用率在不断降低,取而代之的是springMVC.可能有很多的朋友看到这里就会说,那还不如不学str ...

  9. struts2学习之旅三 权限管理和导航设计

    1,权限管理的db设计和dao实现,尽量简单快速有效: db的设计如下:权限按照角色来赋给用户: 权限对应每一个具体的功能,有菜单级别的,有导航级别的,还有页面级别的功能: 涉及到权限的敏感操作一般都 ...

  10. struts2 学习记录 过滤器 国际化

    struts2接触不是一天两天了,但是一直没有用它做什么项目,但老师确一直说它有很大的学习价值,所以还是把我学习到的东西给记录一下,记录的东西没有规律,只是给自己留个备份, struts2中最关键的是 ...

随机推荐

  1. c++实验3 链式存储线性表

    1.线性表链式存储结构及基本操作算法实现 (1)单链表存储结构类的定义: #include <iostream> using namespace std; template <cla ...

  2. javascript滚动到大于一定距离显示隐藏

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. [Java] 编写第一个java程序

    1)先不用myEclipse编写,用txt编写,新建Test.txt:修改扩展名变为Test.java; 2)编辑,手写输入代码,保存(以保存在E盘下为例): public class Test{ p ...

  4. [Swift]字符串根据索引获取指定字符,依据ASCII实现字符和整数的相互转换

    ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧 ...

  5. word的xml文件中空白页和换页

    ■ word中分页符(插入空白页): <w:r>                    <w:rPr>                    <w:rFonts w:as ...

  6. API Monitor程序分析工具简介

    API Monitor是一个免费软件,可以让你监视和控制应用程序和服务,取得该应用程序的API调用情况. 它是一个强大的工具,看到的应用程序和服务是如何工作的,或跟踪,你在自己的应用程序的问题. AP ...

  7. 使用python uiautomation从钉钉网页版提取公司所有联系人信息

    之前写了一个提取QQ群里所有人信息的脚本 https://www.cnblogs.com/Yinkaisheng/p/5114932.html 今天写一个从钉钉网页版提取公司所有人通讯录的脚本,,本脚 ...

  8. js Object.keys 用法

    Object.keys()   可以将对象里的所以的键取出来放到一个数组中 1.传入对象, 返回 包含对象可枚举属性和方法的数组 var obj = {'a': 'Beijing', 'b': 'Ha ...

  9. FileUpload.PostedFile 为null异常 NullReferenceException

    FileUpload控件PostedFile属性总是为null,提示有异常NullReferenceException.我的程序中加了UpdatePannel控件.把UpdatePannel去掉之后就 ...

  10. Nodejs 实现windows后台运行

    首先需要到http://nssm.cc/download/?page=download 下载 nssm 下下来之后是压缩包形式的,解压之后 ctrl + R 进入cmd 命令行界面 在命令行模式下进入 ...