我是靠谱客的博主 暴躁百合,最近开发中收集的这篇文章主要介绍Struts2:Action获取表单提交数据Action获取表单提交数据,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Action获取表单提交数据

之前web阶段,提交表单到servlet里面,在servlet里面使用request对象里面的方法获取,getParameter,getParameterMap。
提交表单到action,但是action没有request对象,不能直接使用request对象。
action获取表单提交数据主要三种方式:

  • 使用ActionContext类
  • 使用ServletActionContext类
  • 使用接口注入方式

使用ActionContext类获取

  • Map<String,Object> getParameters():返回一个包含所有HttpServletRequest参数信息,因为方法不是静态的方法,需要创建ActionContext类的对象,这个ActionContext类对象不是new出来的。
  • static ActionContext getContext():获取当前线程的ActionContext对象。

1、创建表单:form.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="${pageContext.request.contextPath }/form.action" method="get">
username:<input type="text" name="username"/>
<br/>
password:<input type="text" name="password"/>
<br/>
address:<input type="text" name="address"/>
<br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>

2、提交表单到action里面:struts2.xml

<package name="demo" extends="struts-default" namespace="/">
<action name="form" class="action.LoginAction"></action>
</package>

3、在action使用ActionContext获取数据:LoginAction.java

public class LoginAction extends ActionSupport {
// 第一种方式 使用ActionContext类获取
@Override
public String execute() throws Exception {
// 1 获取ActionContext对象
ActionContext context = ActionContext.getContext();
// 2 调用方法得到表单数据
// key是表单输入项name属性值,value是输入的值
Map<String, Object> map = context.getParameters();
Set<String> keys = map.keySet();
for (String key : keys) {
// 根据key得到value
// 数组形式:因为输入项里面可能有复选框情况
Object[] obj = (Object[]) map.get(key);
System.out.println(Arrays.toString(obj));
}
return NONE;
}
}

使用ServletActionContext类获取

  • static HttpServletRequest getRequest():获取 Web 应用的HttpServletRequest 对象。
  • static HttpServletResponse getResponse():获取 Web 应用的 HttpServletResponse 对象。
  • static ServletContext getServletContext() :获取 Web 应用的 ServletContext 对象。
  • static PageContext getPageContext():获取 Web 应用的PageContext 对象。

调用类里面静态方法,得到request对象

public class LoginAction extends ActionSupport {
// 第二种方式 使用ServletActionContext类获取
@Override
public String execute() throws Exception {
// 1 使用ServletActionContext获取request对象
HttpServletRequest request = ServletActionContext.getRequest();
// 2 调用request里面的方法得到结果
String username = request.getParameter("username");
String password = request.getParameter("password");
String address = request.getParameter("address");
System.out.println(username + ":" + password + ":" + address);
//操作三个域对象
//1 request域
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("req", "reqValue");
//2 session域
HttpSession session = request.getSession();
session.setAttribute("sess", "sessValue");
//3 ServletContext域
ServletContext context = ServletActionContext.getServletContext();
context.setAttribute("contextname", "contextValue");
return NONE;
}
}

使用接口注入(了解)

  • ServletRequestAware:实现该接口的Action可以直接访问Web应用的HttpServletRequest实例。
  • ServletResponseAware:实现该接口的Action可以直接访问Web应用的HttpServletResponse实例。
  • SessionAware:实现该接口的Action可以直接访问Web应用的HttpSession实例。
  • ServletContextAware:实现该接口的Action可以直接访问Web应用的ServletContext实例。

让action实现接口,为了得到request对象

public class LoginAction extends ActionSupport implements ServletRequestAware {
private HttpServletRequest request;
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
@Override
public String execute() throws Exception {
String username = request.getParameter("username");
String password = request.getParameter("password");
String address = request.getParameter("address");
System.out.println(username + ":" + password + ":" + address);
//操作三个域对象
//1 request域
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("req", "reqValue");
//2 session域
HttpSession session = request.getSession();
session.setAttribute("sess", "sessValue");
//3 ServletContext域
ServletContext context = ServletActionContext.getServletContext();
context.setAttribute("contextname", "contextValue");
return NONE;
}
}

最后

以上就是暴躁百合为你收集整理的Struts2:Action获取表单提交数据Action获取表单提交数据的全部内容,希望文章能够帮你解决Struts2:Action获取表单提交数据Action获取表单提交数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部