【JavaWeb·9】Struts2框架入门

概念解释

struts2框架:由apache组织针对现有servlet程序做的合理封装改进。

struts2实现action功能

public class MyAction implements Action{
	public String ewxecute()throws Exception{
	//1.接受请求,收参
	//2.调用业务层方法完成功能
	//3.跳转,通过返回值来代表跳转路径和跳转方式
	return "ok";
	}
}

配置struts.xml

<package name="" extends="struts-default" namespace="">
<action name="" class="">
<result name="" type="">目的路径网名</result>
</action>
</package>

访问

http://localhost:8080/module/my
http://localhost:8080/module/my.action

第一个Struts2框架程序

第一步:搭建开发环境

  1. 导入框架相关jar包(框架代码jar包+第三依赖包)
  2. 引入struts2框架配置文件struts.xml,将struts2.xml直接放到src下。
  3. 初始化配置——配置核心过滤器StrutsPrepareAndExecuteFilter

为什么配置核心过滤器?
因为当程序部署到tomcat上后,tomcat会默认去找servlet程序,但我们写的struts2程序内没有servlet程序,加入核心过滤器就是为了让tomcat进入到strtus2框架内的代码进行运行。

在这里插入图片描述将核心过滤器配置在web.xml中

<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-pattern>/*</url-pattern>
</filter-mapping>

第二步:书写MyAction.java

public class MyAction implements Action{
	public String execute()throws Exception{
	//接收请求,收参
	//调用业务方法完成功能
	System.out.println("this is myAction");
	//跳转
	return "ok";
	}
}

第三步:书写配置文件struts2.xml

package:用来在当前配置文件里对action配置信息进行分块管理的标签,只在当前文件里有效,与Java程序代码里的package没有任何关系

class属性:指定action程序的全类名

name属性:指定action程序的网名(一定不能以/开头)

通过result标签设置action返回值与跳转路径的对应关系,如果有多个返回值则定义多个result标签。
标签体是跳转路径,只需要给定目标程序的网名即可。

<package name="stu" extends="struts-default" namespace="/stu">
<!-- 可以定义配置多个action信息 -->
<action name="" class="am.MyAction">
	<result name="ok">/index.jsp</result>
</action>
</package>

struts2里的跳转方式

在result标签里添加type属性控制跳转方式

  • action–>forward–>jsp type=despatcher
<result name="ok" type="dispatcher">/result.jsp</result>
  • action–>forward–>action type=chain
<result name="ok" type="chain">action2</result>
  • action–>redirect–>jsp type=redirect
<result name="ok" type="redirect">/result.jsp</result>
  • action–>redirect–>action type=redirectAction
<result name="ok" type="redirectAction">action</result>

namespace属性是struts提供的分块管理网名的设置。
namespace值必须以/开头,望文生义。
一旦定义了namespace属性,程序的网名就由namespace值+网名组成
为当前package标签里所有action的网名统一添加前缀

<package name="tes" extends="struts-default" namespace="/tes">
<!-- 跨namespace跳转需要配置namespace和actionName -->
<!-- param是用来传数据、指定数据的 -->
<result name="show" type="redirectAction">
	<param name="namespace">/stu</param>
	<param name="actionName">all</param>
</result>
</action>
</package>

接受请求参数

单个数据收参

通过为action程序定义与参数同名的实例变量(提供配套的get和set)收参,实例变量的类型程序员可以直接指定需要的类型。

在这里插入图片描述

通过实体类对象收参

一个实体类对象可以接收若干个数据(数据量由实体类的属性个数决定)
代码开发顺序:实体类–>action–>表单
在这里插入图片描述

工具类ServletActionContext

struts2框架提供了一个工具类ServletActionContext,用来在action程序中获取servlet技术中的常用对象。

request简化写法

1.传统使用request作用的方式

public class MyAction implements Action{
	public String execute(){
	List<Student> list = empServlet.getData();
	//如果需要使用request作用域存放数据
HttpServletRequest request = ServletActionContext.getRequest();
	//将数据存入request作用域
	request.setAttribute("list",list);
	return "pk";
	}
}

2.struts2框架提供了替换写法

//将需要存在request作用域里的数据,直接定义称实例变量(提供get和set)即可
public class MyAction implements Action{
	private List<Student> list;
	//相当于request.setAttribute("list",list);
	public String execute(){
	list = empSAervlet.getData();
	return "pk";
	}
}

3.注意

简化写法只针对request作用域,如果需要使用session和application作用域,则仍然使用ServletActionContext先获取对象,然后向里面存放数据。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值