Struts2--访问web元素
2016-02-20 09:47
351 查看
后台action不能通过request等获取前台数据,如果有人登陆了,会往session设定值,怎么实现呢?
action如何往session里设定值?
所以action访问request,session,application等web元素的方法?
总结:
1.jsp调用action
2.action里用map的IoC方法给session赋值
publicclassLoginAction2extendsActionSupportimplementsRequestAware,SessionAware,ApplicationAware
session.put("s1","name");
3.在jsp显示里用<s:propertyvalue="#request.变量名"/>调用变量
也可以通过<s:propertyvalue="#parameters.name"/>
只介绍一种最常用的:
1.jsp页面显示:4个按钮分别提交同一个form的方法:
<formname="f"action=""method="post">
用户名:<inputtype="text"name="name"/>
密码:<inputtype="text"name="password"/>
<br/>
<inputtype="button"value="submit1"onclick="javascript:document.f.action='login/login1';document.f.submit();"/>
<inputtype="button"value="submit2"onclick="javascript:document.f.action='login/login2';document.f.submit();"/>
<inputtype="button"value="submit3"onclick="javascript:document.f.action='login/login3';document.f.submit();"/>
<inputtype="button"value="submit4"onclick="javascript:document.f.action='login/login4';document.f.submit();"/>
</form>
2.struts.xml配置:
<packagename="login"extends="struts-default"namespace="/login">
<actionname="login*"class="com.bjsxt.struts2.user.action.LoginAction{1}">
<result>/user_login_success.jsp</result>
</action>
</package>
3.action的4种处理方法:
loginAction1.java:取得Map类型的方法
packagecom.bjsxt.struts2.user.action;
importjava.util.Map;
importcom.opensymphony.xwork2.ActionContext;
importcom.opensymphony.xwork2.ActionSupport;
publicclassLoginAction1extendsActionSupport{
privateMaprequest;
privateMapsession;
privateMapapplication;
publicLoginAction1(){
request=(Map)ActionContext.getContext().get("request");
session=ActionContext.getContext().getSession();
application=ActionContext.getContext().getApplication();
}
publicStringexecute(){
request.put("r1","r1");
session.put("s1","s1");
application.put("a1","a1");
returnSUCCESS;
}
}
loginAction2.java:取得Map类型的IoC方法:最常用
packagecom.bjsxt.struts2.user.action;
importjava.util.Map;
importorg.apache.struts2.interceptor.ApplicationAware;
importorg.apache.struts2.interceptor.RequestAware;
importorg.apache.struts2.interceptor.SessionAware;
importcom.opensymphony.xwork2.ActionContext;
importcom.opensymphony.xwork2.ActionSupport;
publicclassLoginAction2extendsActionSupportimplementsRequestAware,SessionAware,ApplicationAware{
privateMap<String,Object>request;
privateMap<String,Object>session;
privateMap<String,Object>application;
//DIdependencyinjection
//IoCinverseofcontrol
publicStringexecute(){
request.put("r1","r1");
session.put("s1","s1");
application.put("a1","a1");
returnSUCCESS;
}
@Override
publicvoidsetRequest(Map<String,Object>request){
this.request=request;
}
@Override
publicvoidsetSession(Map<String,Object>session){
this.session=session;
}
@Override
publicvoidsetApplication(Map<String,Object>application){
this.application=application;
}
}
loginAction3.java:取得真实类型的方法:
packagecom.bjsxt.struts2.user.action;
importjavax.servlet.ServletContext;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpSession;
importorg.apache.struts2.ServletActionContext;
importcom.opensymphony.xwork2.ActionSupport;
publicclassLoginAction3extendsActionSupport{
privateHttpServletRequestrequest;
privateHttpSessionsession;
privateServletContextapplication;
publicLoginAction3(){
request=ServletActionContext.getRequest();
session=request.getSession();
application=session.getServletContext();
}
publicStringexecute(){
request.setAttribute("r1","r1");
session.setAttribute("s1","s1");
application.setAttribute("a1","a1");
returnSUCCESS;
}
}
loginAction4.java:取得真实类型的IoC方法:
packagecom.bjsxt.struts2.user.action;
importjavax.servlet.ServletContext;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpSession;
importorg.apache.struts2.interceptor.ServletRequestAware;
importcom.opensymphony.xwork2.ActionSupport;
publicclassLoginAction4extendsActionSupportimplementsServletRequestAware{
privateHttpServletRequestrequest;
privateHttpSessionsession;
privateServletContextapplication;
publicStringexecute(){
request.setAttribute("r1","r1");
session.setAttribute("s1","s1");
application.setAttribute("a1","a1");
returnSUCCESS;
}
@Override
publicvoidsetServletRequest(HttpServletRequestrequest){
this.request=request;
this.session=request.getSession();
this.application=session.getServletContext();
}
}
最后如何在jsp中拿到request等值:<s:propertyvalue="#request.变量名"/>
#代表提取的不是valuestack里的内容,而是context里的值
<body>
UserLoginSuccess!
<br/>
<s:propertyvalue="#request.r1"/>|<%=request.getAttribute("r1")%><br/>
<s:propertyvalue="#session.s1"/>|<%=session.getAttribute("s1")%><br/>
<s:propertyvalue="#application.a1"/>|<%=application.getAttribute("a1")%><br/>
<s:propertyvalue="#parameters.name"/><br/>
<s:propertyvalue="#parameters.password"/><br/>
<s:propertyvalue="#attr.a1"/><br/>
<s:propertyvalue="#attr.s1"/><br/>
<s:propertyvalue="#attr.r1"/><br/>
<s:debug></s:debug>
<br/>
</body>
action如何往session里设定值?
所以action访问request,session,application等web元素的方法?
总结:
1.jsp调用action
2.action里用map的IoC方法给session赋值
publicclassLoginAction2extendsActionSupportimplementsRequestAware,SessionAware,ApplicationAware
session.put("s1","name");
3.在jsp显示里用<s:propertyvalue="#request.变量名"/>调用变量
也可以通过<s:propertyvalue="#parameters.name"/>
只介绍一种最常用的:
1.jsp页面显示:4个按钮分别提交同一个form的方法:
用户名:<inputtype="text"name="name"/>
密码:<inputtype="text"name="password"/>
<br/>
<inputtype="button"value="submit1"onclick="javascript:document.f.action='login/login1';document.f.submit();"/>
<inputtype="button"value="submit2"onclick="javascript:document.f.action='login/login2';document.f.submit();"/>
<inputtype="button"value="submit3"onclick="javascript:document.f.action='login/login3';document.f.submit();"/>
<inputtype="button"value="submit4"onclick="javascript:document.f.action='login/login4';document.f.submit();"/>
</form>
2.struts.xml配置:
<actionname="login*"class="com.bjsxt.struts2.user.action.LoginAction{1}">
<result>/user_login_success.jsp</result>
</action>
</package>
3.action的4种处理方法:
loginAction1.java:取得Map类型的方法
importjava.util.Map;
importcom.opensymphony.xwork2.ActionContext;
importcom.opensymphony.xwork2.ActionSupport;
publicclassLoginAction1extendsActionSupport{
privateMaprequest;
privateMapsession;
privateMapapplication;
publicLoginAction1(){
request=(Map)ActionContext.getContext().get("request");
session=ActionContext.getContext().getSession();
application=ActionContext.getContext().getApplication();
}
publicStringexecute(){
request.put("r1","r1");
session.put("s1","s1");
application.put("a1","a1");
returnSUCCESS;
}
}
loginAction2.java:取得Map类型的IoC方法:最常用
importjava.util.Map;
importorg.apache.struts2.interceptor.ApplicationAware;
importorg.apache.struts2.interceptor.RequestAware;
importorg.apache.struts2.interceptor.SessionAware;
importcom.opensymphony.xwork2.ActionContext;
importcom.opensymphony.xwork2.ActionSupport;
publicclassLoginAction2extendsActionSupportimplementsRequestAware,SessionAware,ApplicationAware{
privateMap<String,Object>request;
privateMap<String,Object>session;
privateMap<String,Object>application;
//DIdependencyinjection
//IoCinverseofcontrol
publicStringexecute(){
request.put("r1","r1");
session.put("s1","s1");
application.put("a1","a1");
returnSUCCESS;
}
@Override
publicvoidsetRequest(Map<String,Object>request){
this.request=request;
}
@Override
publicvoidsetSession(Map<String,Object>session){
this.session=session;
}
@Override
publicvoidsetApplication(Map<String,Object>application){
this.application=application;
}
}
loginAction3.java:取得真实类型的方法:
importjavax.servlet.ServletContext;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpSession;
importorg.apache.struts2.ServletActionContext;
importcom.opensymphony.xwork2.ActionSupport;
publicclassLoginAction3extendsActionSupport{
privateHttpServletRequestrequest;
privateHttpSessionsession;
privateServletContextapplication;
publicLoginAction3(){
request=ServletActionContext.getRequest();
session=request.getSession();
application=session.getServletContext();
}
publicStringexecute(){
request.setAttribute("r1","r1");
session.setAttribute("s1","s1");
application.setAttribute("a1","a1");
returnSUCCESS;
}
}
loginAction4.java:取得真实类型的IoC方法:
importjavax.servlet.ServletContext;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpSession;
importorg.apache.struts2.interceptor.ServletRequestAware;
importcom.opensymphony.xwork2.ActionSupport;
publicclassLoginAction4extendsActionSupportimplementsServletRequestAware{
privateHttpServletRequestrequest;
privateHttpSessionsession;
privateServletContextapplication;
publicStringexecute(){
request.setAttribute("r1","r1");
session.setAttribute("s1","s1");
application.setAttribute("a1","a1");
returnSUCCESS;
}
@Override
publicvoidsetServletRequest(HttpServletRequestrequest){
this.request=request;
this.session=request.getSession();
this.application=session.getServletContext();
}
}
最后如何在jsp中拿到request等值:<s:propertyvalue="#request.变量名"/>
#代表提取的不是valuestack里的内容,而是context里的值
UserLoginSuccess!
<br/>
<s:propertyvalue="#request.r1"/>|<%=request.getAttribute("r1")%><br/>
<s:propertyvalue="#session.s1"/>|<%=session.getAttribute("s1")%><br/>
<s:propertyvalue="#application.a1"/>|<%=application.getAttribute("a1")%><br/>
<s:propertyvalue="#parameters.name"/><br/>
<s:propertyvalue="#parameters.password"/><br/>
<s:propertyvalue="#attr.a1"/><br/>
<s:propertyvalue="#attr.s1"/><br/>
<s:propertyvalue="#attr.r1"/><br/>
<s:debug></s:debug>
<br/>
</body>
相关文章推荐
- java基础总结(三)
- Struts2--简单的数据校验
- Java多线程与线程安全
- Java 入门 之 聊天室项目思路 服务器端
- ssm Springmvc+spring+hibernate
- JAVA多线程-对象及变量的并发访问(一)synchronized详解
- Elasticsearch 2.2.0 JAVA开发篇:搜索操作
- Struts2--中文问题
- Java IO 装饰者模式
- Struts2--ModelDriven接收参数
- Struts2--DomainModel接收参数---使用广泛!!!
- javaji基础x2
- Struts2--Action属性接收参数
- JAVA的包装类
- MAC 下写 Java I/O 流
- Spring ioc架构
- 深入浅出Java回调机制 / 回掉函数 / 深入浅出理解 Java回调机制(异步) GOOD
- javascrpt构建实用的类工厂
- 分组校验和的java实现
- mysql-connector-java-5.0.3-bin.jar中的Preparedstatement居然没有isClosed()方法