1、在Action类中也可以获取到Servlet一些常量的API
* 需求:提供JSP的表单页面的数据,在Action中使用Servlet的API接收,然后保存到三个域对象中,最后再显示到JSP的页面上
* 提供JSP的页面,以供两种方式的使用
<form action="${pageContext.request.contextPath }/demo1Action.action" method="post">
姓名: <input type="text" name="username" /><br/>
密码: <input type="password" name="password"/><br/>
<input type="submit" value="注册" />
</form>
2、完全解耦合的方式
* 如果使用该方式,Struts2框架中提供了一个类,ActionContext类,该类中提供了一些方法,通过方法获取Servlet的API
* 一些常用的方法如下:
* Action类的代码:
/**
* 完全解耦合的方式, 使用servlet的API
* @author Administrator
*/
public class Demo1Action extends ActionSupport {
public String execute() throws Exception {
// 完全解耦合的方式
ActionContext context = ActionContext.getContext();
// 获取到请求的参数,封装所有请求的参数
Map<String, Object> map = context.getParameters();
// 遍历获取到的数据
Set<String> keys = map.keySet();
for (String key : keys) {
// 通过key, 来获取值
String[] vals = (String[]) map.get(key);
System.out.println(key + ": " + Arrays.toString(vals));
}
// 如果向request对象中存入值
context.put("msg", "小风");
// 获取其他map集合
context.getSession().put("msg", "小苍");
context.getApplication().put("msg", "小泽");
return SUCCESS;
}
}
* 配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="demo1" namespace="/" extends="struts-default">
<action name="demo1Action" class="com.itheima.demo1.Demo1Action" method="execute">
<result name="success">/demo1/suc.jsp</result>
</action>
</package>
</struts>
* suc.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>
${sessionScope.msg }
${applicationScope.msg }
${requestScope.msg }
</body>
</html>
3、使用原生Servlet的API方式
* Struts2框架提供了一个类,ServletActionContext,该类中提供了一些静态的方法
* 具体的方法如下:
* getPageContext()
* getRequest()
* getResponse()
* getServletContext()
* Action类的代码:
/**
* 原生的API
* @author Administrator
*/
public class Demo1Action extends ActionSupport {
public String execute() throws Exception {
// 获取到request对象
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("msg", "小明");
request.getSession().setAttribute("msg", "小凤");
ServletActionContext.getServletContext().setAttribute("msg", "小小");
return SUCCESS;
}
}