Servlet的API的访问:(三种方式)----也就是获取参数的三种方式.
1 .完全解耦合的方式:(ActionContext)
ActionContext的方法:
* Map<String,Object> getParameters(); ---接收参数.
* put(String key,Object value); ---向request域中存数据.
* Map<String,Object> getSession(); ---获得session的Map.
* Map<String,Object> getApplication(); ---获得application的Map.
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
// 1.接收表单的数据:
ActionContext actionContext = ActionContext.getContext();
Map<String,Object> map = actionContext.getParameters();
String[] names = (String[]) map.get(
"name"
);
System.out.println(names[
0
]);
String[] sexs = (String[]) map.get(
"sex"
);
System.out.println(sexs[
0
]);
// 2.向域中存数据:
// 2.1向request域中存值:
actionContext.put(
"reqName"
,
"美美"
);
// 2.2向session域中存值:
actionContext.getSession().put(
"sessName"
,
"标哥"
);
// 2.3向application域中存值:
actionContext.getApplication().put(
"appName"
,
"大标哥"
);
|
2 .使用接口注入的方式:
实现接口的方式:
* ServletRequestAware:
* ServletContextAware:
* ServletResponseAware:
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public
class
RequestAction2
extends
ActionSupport
implements
ServletRequestAware,ServletContextAware{
private
HttpServletRequest request;
private
ServletContext context;
@Override
public
String execute()
throws
Exception {
// 接收参数:
String name = request.getParameter(
"name"
);
String sex = request.getParameter(
"sex"
);
System.out.println(name);
System.out.println(sex);
// 向域中保存数据:
request.setAttribute(
"reqName"
,
"凤姐"
);
request.getSession().setAttribute(
"sessName"
,
"杜宏"
);
context.setAttribute(
"appName"
,
"芙蓉"
);
return
SUCCESS;
}
@Override
public
void
setServletRequest(HttpServletRequest request) {
this
.request = request;
}
@Override
public
void
setServletContext(ServletContext context) {
this
.context = context;
}
}
|
3 .使用类中静态方法的方式:(耦合)
ServletActionContext:
* getRequest();
* getServletContext();
* getResponse();
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
@Override
public
String execute()
throws
Exception {
// 接收参数:
HttpServletRequest req = ServletActionContext.getRequest();
String name = req.getParameter(
"name"
);
String sex = req.getParameter(
"sex"
);
System.out.println(name);
System.out.println(sex);
// 向域中保存数据:
req.setAttribute(
"reqName"
,
"天一"
);
req.getSession().setAttribute(
"sessName"
,
"冠希"
);
ServletActionContext.getServletContext().setAttribute(
"appName"
,
"冰冰"
);
return
super
.execute();
}
|
4 .比较三种方式:
最好:第一种完全解耦合方式.
最熟练:第三种方式.