- 前端向后台传递参数
在后台获取前端传递的参数时,一定要创建get(),set()方法,使用对象驱动时还要保证存在无参构造
1.属性驱动获得参数
通过在Action类中创建与前端页面中name值相同的属性值,并创建get()
与set()
方法,同时还可以自动转换数据类型,但是只支持8大基本数据类型以及包装类的转换.
在下面代码中user与pwd都能获取到
private String user;
private String pwd;
public String login(){
System.out.println(user);
System.out.println(pwd);
return "SUCCESS";
}
前端页面
<form action="${pageContext.request.contextPath}/LoginAction.action" method="post">
<input onfocus="ts('tsxx')" type="text" name="user" ><br>
<input onfocus="ts('tsxx')" type="password" name = "pwd"><br>
<input type="submit" value="登录">
</form>
- 对象驱动获取参数
可以在Action类中直接封装复杂类型的属性值,要继承一个名为ActionSupport
的父类,
在前端页面中书写name
值时, 需要在属性值写属性名.子属性名
User对象中存在name与password属性
private User user;
public String login(){
System.out.println(user.getName());
System.out.println(user.getPassword());
return "SUCCESS";
}
前端页面
<form action="${pageContext.request.contextPath}/LoginAction.action" method="post">
<input onfocus="ts('tsxx')" type="text" name="user.name" ><br>
<input onfocus="ts('tsxx')" type="password" name = "user.password"><br>
<input type="submit" value="登录">
</form>
- 模型驱动获取参数
模型驱动获取参数需要继承ActionSupport
的父类同时要实现ModelDriven<T>
接口,其中T
为要接收参数的类型,前端页面中的name
值与T
对象中的属性值一样即可.
public class LoginAction extends ActionSupport implements ModelDriven<User> {
private User user= new User ();
public String login() {
System.out.println(user);
return "SUCCESS";
}
@Override
public User getModel() {
return user;
}
}
前端页面直接写User对象中的属性名即可
<form action="${pageContext.request.contextPath}/LoginAction.action" method="post">
<input onfocus="ts('tsxx')" type="text" name="user" ><br>
<input onfocus="ts('tsxx')" type="password" name = "pwd"><br>
<input type="submit" value="登录">
</form>
- 后台向前端传值
- 通过属性方法传值,在前端获取是需要用到Struts标签库,get与set方法一定要写
private User user;
private String msg;
public String login(){
if(user.getName().equals("aaa") && user.getPassword().equals("123")){
System.out.println(user.getName());
System.out.println(user.getPassword());
return "SUCCESS";
}else{
msg="用户名或密码错误!";
return "input";
}
}
前端jsp页面需要导入Struts的标签库
//导入标签库代码
<%@ taglib prefix="s" uri="/struts-tags" %>
//接收参数代码
<s:property value="msg"/>
- 通过
ActionContext.getContext().put(key, value);
把值放到context中,前端取值时<s:property value="#key"/>
即可