开发者学堂课程【Java Web开发系列课程 - Struts2框架入门:Servlet API 二】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/537/detail/7304
Servlet API 二
内容简介
一、 struts2获取 servletAPI 方式
二、 解耦
三、 通过 ActionContext 直接获取 HttpServletRequset
四、 耦合
五、 获取 HttpServletRequset 对象
一、 struts2获取 servletAPI 方式
struts2有2种方式去获取 servletAPI;
一种解耦,一种耦合;解耦使得使用 struts2来进行测试的时候不需要启动服务器。
在一定程度上提高开发效率的。
Action--->service--->dao
二、解耦
使用解耦的方式来获取 servlet api;通过 ActionContext 对象获取。
Action
C
ontext.get
C
on
text().getSession().put(“user”,n
a
me);
package cn.sxt.action
import com.opensymphony.work2.ActionContext;
pubilc class LoginAction {
private String name
;
private String pwd;
(该绿色部分可以省略)
//
处理方法
public
S
tring
execute(){
S
ystem
.out.println(name+”---“+pwd);
if(“siggy”.equals(name)&&”1111”.equals(pwd))}
//获取 session
ActionContext.getContext().getSession().put(“user”,name);
//获取 request
---HttpServeletRequest
对象的 attributes
M
aprequest=
(M
ap)
ActionContext.getContext().get(“request”
)
;
/
/
获取 application
Map
application=ActionContext.getContext().getApplication();
//获取 parameters
M
ap
parameters=
A
ction
C
ontext.
getC
ontext().
get
parameters
/
/
相当于 request。
G
etparameter(“name”);
S
ystem.out.println(“name====”+(
(
String
【】parameters
.get(“name”)
)
)
【0】
;
return “success”;
}
else{
return”login”;
}
}
P
ublic
S
tring
logout(){
ActionContext.
getSession().remove(“user”);
S
ystem.out.println(“
退出“)(该绿色区域可以省略)
三、通过 ActionContext 直接获取 HttpServletRequset
//处理方法
P
ublic
S
tring
execute(){
System
.out.println(name+”---“pwd);
if(“siggy”.equals(name)&&”1111”.equals(pwd)){
HttpServletRequest
request=(HttpServletRequest)
ActionContext . getContext (). get ( StrutsStatics . HTTP _ REQUEST );
request.getSession (). setAttribute ("user", name );
System.out.println(“name
==
=="+request.getParameter (" name"));
return “ success ";
}else{
return " login ";
}
}
四、耦合
通过耦合的方式获取 HttpServletRequset,实现 ServletRequestAware 接口
Publicclass LoginAction2 implements ServletReguestAwaref
{
private String name ;
private String pwd ;
HttpServletReguest request ;
//
处理方法
public String execute ()
{
System.out. println ( name +"---"+ pwd );
if ("si
ggy
”
.
equals (name)&&"1111”.equals ( pwd ))
{
request.getSession().setAttribute (" user", name );
System.out.println
(“
name
==
=="+request. getParameter (" name "))
;
return " success ";
}else
{
return "login
“;
}
}
public void setServletRequest ( HttpServletRequest request )
{
this.request = request;
}
public String logout ()
{
ActionContext.getContext ()
.
getSession (). remove (" user"); System.out.println (“退出”);
return “ success ";
}
public String getName () {
return name ;
}
public void setName (String name){
this.name = name;
}
public String getPwd (){
return pwd;
}
pub
l
ic void setPwd ( String pwd)
{
this
.
pWd=pwd ;
}
}
五、通过获取 ServletActionContext
获取 HttpServletRequset 对象
public String execute (
){
System.out . println ( name +”---”'+ pwd );
if ( si
ggy
”
.
equals ( name )&&"1111”. equals ( pwd )){
HttpServletRequest request =
ServletActionContext . getRequest();
request . getSession () setAttribute (" user ", name ); System.out .println ("name ===="+ request.getParameter(" name"
)
;
return"success";
}else{
return " login ";
}
}
建议大家用第一种和第四种