struts的初步使用

环境搭建:

1 …/ pom.xml的jar包配置
在这里插入图片描述
2.web.xml配置
在这里插入图片描述
3.struts.xml的配置
struts.xml(核心配置文件)
在这里插入图片描述
struts-base.xml的配置
在这里插入图片描述
配置web.xml文件
(注:Ctrl+Shift+t是查找jar包(查找类)的快捷键)
在这里插入图片描述

动态方法的调用

1.在子控制器写出需要的方法
在这里插入图片描述
配置struts-sy.xml


<!-- 相对MVC的差异性
package:用来将一类控制器进行分类
http://localhost:8080/struts/sy/user_list.action 中的"/sy"对应的是    namespace="/sy" 
extends="base"表示包的继承
"/user_*"中的  * 就在该地址栏为   list     -->



<package name="sy" extends="base" namespace="/sy">
	<action name="/user_*" class="com.hsl.one.web.UserAction" method="{1}" >
	<result name="success">/test.jsp</result>//对应显示的jsp页面
	</action>
	</package>


测试:网页地址栏

http://localhost:8080/struts/sy/user_list.action 查看所有的方法
http://localhost:8080/struts/sy/user_add.action 添加的方法
http://localhost:8080/struts/sy/user_delete.action 删除的方法
http://localhost:8080/struts/sy/user_edit.action 修改的方法

测试成功:
在这里插入图片描述

jsp传递参数到后台的三种方式:

1.set传参
2.实现modalDriven接口传参
3.类实例.属性传参
子控制器:
在这里插入图片描述
在这里插入图片描述
struts-sy.xml配置添加:

<action name="/dome_*" class="com.hsl.one.web.DomeAction" method="{1}" >
	<result name="rs">/rs.jsp</result>
	</action>

jsp页面传参:

//set传参
<a href="${pageContext.request.contextPath }/sy/dome_test1.action?sex=女">测试1</a>

//  实现modalDriven接口传参
<a href="${pageContext.request.contextPath }/sy/dome_test2.action?uname=qw&upwd=1234">测试2</a>

//  类实例.属性传参
<a href="${pageContext.request.contextPath }/sy/dome_test3.action?user2.uname=we&user2.upwd=12345">测试3</a>

结果显示:
在这里插入图片描述
附:User实体类:

public class User {
	private String uname;
	private String upwd;
	public String getUname() {
		return uname;
	}
	public void setUname(String uname) {
		this.uname = uname;
	}
	public String getUpwd() {
		return upwd;
	}
	public void setUpwd(String upwd) {
		this.upwd = upwd;
	}
	public User(String uname, String upwd) {
		super();
		this.uname = uname;
		this.upwd = upwd;
	}
	public User() {
		super();
	}
	@Override
	public String toString() {
		return "User [uname=" + uname + ", upwd=" + upwd + "]";
	}
	
}

后台传值到jsp页面的方式(struts与tomcat容器的交互)

1.注入
耦合 (常用)

子控制器的方法:
public String dome() {
		HttpServletRequest request=ServletActionContext.getRequest();
		request.setAttribute("rs", "非注入式耦合方式");
		return "rs";
	}

解耦 (使用全路径名,不常用)

public String dome() {
		ActionContext context=ActionContext.getContext();
		HttpServletRequest request=(HttpServletRequest)context.get("request的全限定路径名");
		request.setAttribute("rs", "注入式解耦方式");
		return "rs";
	}

2.非注入
耦合(常用)
需实现ServletRequestAware接口

添加一个属性:
private HttpServletRequest request;
重写setServletRequest方法:

public void setServletRequest(HttpServletRequest request) {
		// TODO Auto-generated method stub
		this.request=request;
	}
	测试方法:
	
	public String dome() {
		request.setAttribute("rs", "注入式耦合方式");
		return "rs";
	}

解耦 (使用全路径名,不常用)
需实现requestAware接口

重写setRequest方法:
public void setRequest(HttpServletRequest request) {
		// TODO Auto-generated method stub
		this.request=(HttpServletRequest)context.get("request的全限定路径名");
	}
测试方法:
public String dome() {
		request.setAttribute("rs", "非注入式解耦方式");
		return "rs";
	}

上面是为了获取到request对象

  • 1、传参可以使用request对象进行传参
  • 2、struts特有的传参方式,叫做值栈传参
    换个说法就是,只要该action有get方法,那么它就能直接在结果集中获取参数值

struts-sy.xml配置:

<action name="/tomcat_*" class="com.hsl.one.web.TomcatAction" method="{1}" >
	<result name="rs">/rs.jsp</result>
	</action>

jsp页面效果测试:

<a href="${pageContext.request.contextPath }/sy/tomcat_dome.action?sex=男">测试1</a><br>
<a href="${pageContext.request.contextPath }/sy/tomcat_dome.action?uname=qw&upwd=1234">测试2</a><br>
<a href="${pageContext.request.contextPath }/sy/tomcat_dome.action?user2.uname=we&user2.upwd=12345">测试3</a>

测试结果显示:
逐一测试
在这里插入图片描述
此结果验证了
“只要该action有get方法,那么它就能直接在结果集中获取参数值“该方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值