MyEclipse2017创建Struts2项目

过程:
1.新建一个web项目
在这里插入图片描述
2.在项目右键选择如图所示
在这里插入图片描述
3.导入struts后会自动生成两个xml文件和一个jar包,web.xml和struts.xml
在这里插入图片描述

MyEclipse2017创建Struts2项目

什么是框架

框架是一个软件的半成品.

JavaEE的三层架构

在这里插入图片描述

Struts2概述

Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java Servlet API,鼓励开发者采用MVC架构。

缘起于Apache Struts的WebWork框架,旨在提供相对于Struts框架的增强和改进,同时保留与Struts框架类似的结构。2005年12月,WebWork宣布WebWork 2.2以Apache Struts 2的名义合并至Struts。2007年2月第一个全发布(full release)版本释出。–WIKI百科

从前面的JAVAEE三层架构上面我们可以了解到,Struts2是属于Web层的框架,Web层的框架都有一个特点,那就是基于前端控制器模式实现的.

前端控制器模式

传统开发中,每个请求都需要对应一个Servlet,而Struts2框架将所有的请求都先经过Struts2的前端控制器,也就是Struts2中的过滤器.

创建一个Struts2项目

下载Struts2

下载地址:Welcome to the Apache Struts project

Struts2目录介绍

在这里插入图片描述

Struts2核心Jar包

找到Struts2示例程序

Struts2安装目录->apps->apps->Struts-blank.war

解压Struts-blank.war

得到示例程序文件夹,进入到WEB-INF里面的lib查看Struts2基本开发包

在这里插入图片描述

基本开发包一共有13个(这里我用的是Struts2.3版本)各个版本的基本开发包数量不一样.

创建一个Web项目

在这里插入图片描述

导入Struts2核心Jar包

在这里插入图片描述

编写Jsp页面

在这里插入图片描述

编写Action类

在这里插入图片描述

Action类中必须有一个名字是execute方法,而且这个方法必须是公有(public),返回值必须是String,且该方法没有任何参数.

将Action类配置到Struts.xml

在这里插入图片描述

在src目录下新建struts.xml

梳理

在这里插入图片描述

配置前端过滤器

在这里插入图片描述

编写跳转成功页面

在这里插入图片描述

部署并访问项目

在这里插入图片描述

Struts2执行流程

在这里插入图片描述
当用户访问某一个Action的时候,先经过核心过滤器,在核心过滤器中执行一组拦截,执行目标Action,根据Action的返回值,进行页面跳转。

Struts2常见配置

配置XML提示

在这里插入图片描述

Action的配置

package标签配置

在这里插入图片描述
package标签是包,他的作用是为了更好的管理Action.

package标签的常用属性

  • name:包的名称,在一个Struts2项目中可以随便定义,只要不重名即可
  • extends:继承的包,一般继承struts-default
  • namespace:名称空间,与action标签中的name属性共同决定了访问路径
    • 名称空间的三种不同的写法
      • 带名称的名称空间:namespace="/test"
      • 根名称空间:namespace="/"
      • 默认名称空间:namespace=""
  • abstract:声明包是抽象包

Action标签的配置

Action标签将标识符映射到处理程序类。当请求与操作名称匹配时,框架使用映射来确定如何处理请求。

action标签的常用属性

  • name:与namespace共同决定浏览器访问路径
    • 假如请求http://www.planetstruts.org/struts2-mailreader/Welcome.action将映射到Welcome类去操作
  • class:Action类的全路径
  • method:用于确定执行Action类中的某个方法,默认执行的是Action类中的execute方法
  • converter:Struts2框架中的类型转换

常量配置

Struts常量配置

查看Struts常量

/org/apache/struts2/default.properties
在这里插入图片描述

  • struts.i18n.encoding=UTF-8:Struts2框架默认编码格式是UTF-8
  • struts.action.extension=action:Struts2请求的默认扩展名

修改常量的值的方法

  • 在struts.xml中修改常量**(常用方法)**
    • 在这里插入图片描述
  • 直接修改default.properties
  • 通过web.xml修改常量

多个Struts.xml配置文件的配置

当我们有多个包的时候,不能将所有的struts配置都写在一个struts.xml文件中,这样的做法会给我们后期维护带来阻碍.对于大型应用程序,最好使用多个配置文件,以便管理应用程序

可以创建许多配置文件,但需要在struts.xml文件中定义它。struts的include子元素用于定义支持的配置文件。

在这里插入图片描述

Action的写法

Action类是一个POJO

在这里插入图片描述
维基百科对POJO的描述:

在软件工程中,普通旧Java对象(POJO)是一个普通的Java 对象,不受任何特殊限制的约束,也不需要任何类路径。该术语由Martin Fowler,Rebecca Parsons和Josh MacKenzie于2000年9月创造:[1]

“我们想知道为什么人们如此反对在他们的系统中使用常规物体,并得出结论认为这是因为简单的物体缺乏一个奇特的名字。所以我们给了他们一个,它很好地被捕获了。” [1]

术语“POJO”最初表示Java对象,它不遵循任何主要的Java对象模型,约定或框架; 现在,“POJO”也可以用作“Plain Old JavaScript Object” 的首字母缩写词,在这种情况下,该术语表示类似谱系的JavaScript对象。[2]

术语继续旧的条款对于不使用花哨的新功能,如POTS(技术型普通老式电话服务的)电话波德(普通旧文档中)的Perl。与.NET框架上的POJO相当的是Plain Old CLR Object(POCO)。[3]对于PHP,它是Plain Old PHP Object(POPO)。[4] [5]

POJO现象最有可能获得广泛接受,因为需要一个与复杂对象框架形成对比的通用且易于理解的术语

Action类实现Action接口

在这里插入图片描述

访问Action的不同方式

通过action标签的method属性访问

在这里插入图片描述
Action类中有四个不同的方法,当我们访问某个方法的时候执行某个action
在struts.xml中的使用action标签的method属性访问action

通过通配符的方式进行action的访问

在这里插入图片描述

动态访问

通过使用struts.xml的方法修改Struts配置开启动态方法访问

<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
  • 1

书写action标签

<action name="customer" class="test.demo3.CustomerAction"></action>
  • 1

然后再JSP页面配置访问路径

	<!--前面写上Actionname的名称中间写个!,后面是方法的名称 -->
	<a href="${ pageContext.request.contextPath }/customer!find.action">查询客户</a>
	<br />
	<a href="${ pageContext.request.contextPath }/customer!update.action">修改客户</a>
	<br />
	<a href="${ pageContext.request.contextPath }/customer!delete.action">删除客户</a>
	<br />
	<a href="${ pageContext.request.contextPath }/customer!save.action">保存客户</a>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

JSP页面书写方法:前面写上Actionname的名称中间写个!,后面是方法的名称
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangchuang2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值