struts2 ACTION中第一次取SESSION的值为空 第二次就可以正常的取值
如题,困扰我好久了。url为http://localhost:8080/xxxx_struts2/userlogin?username=hello&isAdmin=fal...
如题,困扰我好久了。url为
http://localhost:8080/xxxx_struts2/userlogin?username=hello&isAdmin=false&pnumber=1
这个url请求的时候,第一次不能执行方法,第二次才能执行,我觉得很奇怪。不知道怎么回事。求大神指教!
package com.beans.action;
import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport implements SessionAware{
/** *
*/
private static final long serialVersionUID = 1L;
private Map<String, Object> session;
private String username="Guest";//显示用户名
private String isAdmin="flase";//判断是否为管理员。将影响左侧菜单的读取
private String pnumber="";//判断当前的计划编号
public void setSession(Map<String, Object> session) {
this.session=session;
}
public String getPnumber() {
System.out.println(pnumber);
return pnumber;
}
public void setPnumber(String pnumber) {
System.out.println(pnumber);
this.pnumber = pnumber;
}
public String login(){
session.put("username", username);
session.put("isAdmin", isAdmin);
session.put("pnumber", pnumber);
System.out.println("sesdsion中的isadmin"+session.get("isAdmin"));
if(session.get("username")!=null&&session.get("isAdmin")!=null&&session.get("pnumber")!=null)
return SUCCESS;
return "loginfalse";
}
public String getUsername() {
System.out.println("username get method!");
return username;
}
public String getIsAdmin() {
return isAdmin;
}
public void setUsername(String username) {
System.out.println("username set method!");
this.username = username;
}
public void setIsAdmin(String isAdmin) {
this.isAdmin = isAdmin;
}
public String logout(){
session.remove("username");
session.remove("isAdmin");
session.remove("pnumber");
System.out.println("退出登录!!!!!!!!!!!");
return "logout";
}
}
struts的配置
<action name="user*" class="com.beans.action.UserAction" method="{1}">
<result>/index.jsp</result>
<result>/loginsuccess.html</result>
<result name="logout">/logout.html</result>
<interceptor-ref name="logindeflut"/>
<interceptor-ref name="defaultStack"/>
</action>
第一次执行的时候方法里面的输出语句都没起作用,但是却给我返回了一个正确的页面,实在费解,要再次刷新请求的时候才能成功。 展开
http://localhost:8080/xxxx_struts2/userlogin?username=hello&isAdmin=false&pnumber=1
这个url请求的时候,第一次不能执行方法,第二次才能执行,我觉得很奇怪。不知道怎么回事。求大神指教!
package com.beans.action;
import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport implements SessionAware{
/** *
*/
private static final long serialVersionUID = 1L;
private Map<String, Object> session;
private String username="Guest";//显示用户名
private String isAdmin="flase";//判断是否为管理员。将影响左侧菜单的读取
private String pnumber="";//判断当前的计划编号
public void setSession(Map<String, Object> session) {
this.session=session;
}
public String getPnumber() {
System.out.println(pnumber);
return pnumber;
}
public void setPnumber(String pnumber) {
System.out.println(pnumber);
this.pnumber = pnumber;
}
public String login(){
session.put("username", username);
session.put("isAdmin", isAdmin);
session.put("pnumber", pnumber);
System.out.println("sesdsion中的isadmin"+session.get("isAdmin"));
if(session.get("username")!=null&&session.get("isAdmin")!=null&&session.get("pnumber")!=null)
return SUCCESS;
return "loginfalse";
}
public String getUsername() {
System.out.println("username get method!");
return username;
}
public String getIsAdmin() {
return isAdmin;
}
public void setUsername(String username) {
System.out.println("username set method!");
this.username = username;
}
public void setIsAdmin(String isAdmin) {
this.isAdmin = isAdmin;
}
public String logout(){
session.remove("username");
session.remove("isAdmin");
session.remove("pnumber");
System.out.println("退出登录!!!!!!!!!!!");
return "logout";
}
}
struts的配置
<action name="user*" class="com.beans.action.UserAction" method="{1}">
<result>/index.jsp</result>
<result>/loginsuccess.html</result>
<result name="logout">/logout.html</result>
<interceptor-ref name="logindeflut"/>
<interceptor-ref name="defaultStack"/>
</action>
第一次执行的时候方法里面的输出语句都没起作用,但是却给我返回了一个正确的页面,实在费解,要再次刷新请求的时候才能成功。 展开
展开全部
session如果你没存东西在里面,会一直是空的,你第一次进去肯定是空的,但是你在第一次进去的时候存了东西,所以第二次进去才能看到从session中取出的值,如果是request的话,第一次就会取到值
更多追问追答
追问
我发现浏览器在第一次访问的时候可以访问,之后再用这个地址就不行了,必须刷新一次才行,这是什么道理?
追答
这个虽然是地址,但是实际上是给后台传递参数的 参数一样的话 应该是被浏览器认为重复提交了,话说学习Struts不是像这样学的 你得先学学jsp/servlet呀
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<result>/index.jsp</result>
<result>/loginsuccess.html</result>
配置这儿怎么配置两个没有名称的返回指向?
或许你应该改一个为<result name="loginfalse">/index.jsp</result>
更多追问追答
追问
loginfalse 这个写在全局配置里面了
追答
那你干掉一个试试
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询