Struts2——原生接受参数+封装参数(三)

ActionContext

ActionContext context = ActionContext.getContext();
HttpParameters parameters = context.getParameters();
String username = parameters.get("username").getValue();
String nick = parameters.get("nick").getValue();
String[] hobbies = parameters.get("hobby").getMultipleValues();//获取组
System.out.println(username);
System.out.println(nick);
System.out.println(Arrays.toString(hobbies));
context.put("putongName","putong");
context.getSession().put("sessionName","session");
context.getApplication().put("APPName","APP");

HttpServletRequest

HttpServletRequest request = ServletActionContext.getRequest();
String username = request.getParameter("username");
String nick = request.getParameter("nick");
String[] hobbies = request.getParameterValues("hobby");
System.out.println(username);
System.out.println(nick);
System.out.println(Arrays.toString(hobbies));
HttpSession session = request.getSession();
session.setAttribute("sessionName","session");
request.setAttribute("putongName","putong");
request.setAttribute("APPName","App");

结果页面配置全局:

<global-results>
    <result name="error">/login/res.jsp</result>
</global-results>

在Action当中提供对应属性的set方法(会自动接受参数 自动转换类型)

JSP

<form action="${pageContext.request.contextPath}/login/parameter.java" method="post">
    用户名:<input type="text" placeholder="请输入用户名..." name="username"><br/>
    昵称:<input type="text" placeholder="请输入用户名..." name="nick"><br/>
    爱  好: <input type="checkbox" value="足球" name="hobby">足球
    <input type="checkbox" value="篮球" name="hobby">篮球
    <input type="checkbox" value="乒乓球" name="hobby">乒乓球<br/>
    <input type="submit" value="提交">
</form>

不需要分装实现方法(这种方法如果不需要分装可以直接这么用)


private String username;
private Integer nick;
private List hobby;
public void setUsername(String username) {
    this.username = username;
}
public void setNick(Integer nick) {
    this.nick = nick;
}
public void setHobby(List hobby) {
    this.hobby = hobby;
}
@Override
public String execute() throws Exception {
    System.out.println(username);
    return null;
}

需要封装的实现方法

1.直接创建一个domain模型 记得添加 get set方法还有就是在jsp前面链接的时候添加Action当中的对象属性名称

private User user;

public User getUser() {
    return user;
}

public void setUser(User user) {
    this.user = user;
}

@Override
public String execute() throws Exception {
    System.out.println(user);
    return null;
}

jsp界面:

<form action="${pageContext.request.contextPath}/login/parameter.java" method="post">
    用户名:<input type="text" placeholder="请输入用户名..." name="user.username"><br/>
    昵称:<input type="text" placeholder="请输入用户名..." name="user.nick"><br/>
    爱  好: <input type="checkbox" value="足球" name="user.hobby">足球
    <input type="checkbox" value="篮球" name="user.hobby">篮球
    <input type="checkbox" value="乒乓球" name="user.hobby">乒乓球<br/>
    <input type="submit" value="提交">
</form>

2实现ModelDriven<你的类名>的接口

模型驱动(ModelDriven),是通过ModelDriven接口来接收请求参数,Action类必须要实现ModelDriven接口(可以使用泛型),并且要重写getModel()方法,这个方法返回的就是Action所使用的数据模型对象。
     模型驱动方式通过JavaBean模型进行数据传递。只要是普通的JavaBean,就可以充当模型部分。采用这种方式,JavaBean所封装的属性与表单的属性一一对应,JavaBean将成为数据传递的载体。
 

private User user = new User();
@Override
public User getModel() {
    return this.user;
}
@Override
public String execute() throws Exception {
    System.out.println(user);
    return null;
}

List封装

jsp:

用户名:<input type="text" name="user[0].name"/><br/>
年龄:<input type="text" name="user[0].age"/><br/>
用户名:<input type="text" name="user[1].name"/><br/>
年龄:<input type="text" name="user[1].age"/><br/>
用户名:<input type="text" name="user[2].name"/><br/>
年龄:<input type="text" name="user[2].age"/><br/>
<input type="submit" value="提交"/>

java代码部分

private User user;
public User getUser() {
    return user;
}
public void setUser(User user) {
    this.user = user;
}
public String execute() throws Exception {
    System.out.println(user);
    return null;
}

Map封装

jsp:

用户名:<input type="text" name="user['0'].name"/><br/>
年龄:<input type="text" name="user['0'].age"/><br/>
用户名:<input type="text" name="user['1'].name"/><br/>
年龄:<input type="text" name="user['1'].age"/><br/>
用户名:<input type="text" name="user['2'].name"/><br/>
年龄:<input type="text" name="user['2'].age"/><br/>
<input type="submit" value="提交"/>

Java:

private Map<String,User> user;

public Map<String, User> getUser() {
    return user;
}
public void setUser(Map<String, User> user) {
    this.user = user;
}

public String execute() throws Exception {
    System.out.println(user);
    return null;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值