下面是一个struts2的action,目的是得到输入的username值,然后做相应的判断,但总是得到username为null,从而总是转向“login”视图,我错在哪里?
package login;
import com.opensymphony.xwork2.ActionContext;public class getBooksAction{
public String[] books;
public String[] getBooks() {
return books;
}
public void setBooks(String[] books) {
this.books = books;
}
public String execute()throws Exception{
String username = (String)ActionContext.getContext().getSession().get("username");
System.out.println("username="+username);
if(username!=null && username.equals("scott")){
BookService bs = new BookService();
setBooks(bs.getLeeBooks());
return "success";
}
else return "login";
}}下面是struts.xml的配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
<package name="books" extends="struts-default">
<action name="getBook" class="login.getBooksAction">
<result name="login">/login.jsp</result>
<result name="success">/books/showbooks.jsp</result>
</action>
</package></struts>
package login;
import com.opensymphony.xwork2.ActionContext;public class getBooksAction{
public String[] books;
public String[] getBooks() {
return books;
}
public void setBooks(String[] books) {
this.books = books;
}
public String execute()throws Exception{
String username = (String)ActionContext.getContext().getSession().get("username");
System.out.println("username="+username);
if(username!=null && username.equals("scott")){
BookService bs = new BookService();
setBooks(bs.getLeeBooks());
return "success";
}
else return "login";
}}下面是struts.xml的配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
<package name="books" extends="struts-default">
<action name="getBook" class="login.getBooksAction">
<result name="login">/login.jsp</result>
<result name="success">/books/showbooks.jsp</result>
</action>
</package></struts>
解决方案 »
- 怎么让jsp中默认的值不显示
- Could not retrieve connection info from pool
- dwr自动生成的js是怎么回事?
- 在jsp中怎么调用客户端的exe文件
- 如果附件以blob的形式存在数据库中/怎么实现下载功能阿?
- 关于RequestDispatcher的使用
- 怎样用jsp和oracle建立连接
- 初学者问题:类型转换问题???
- JSP中的URL编码函数和URL解码函数是什么?
- ?请问为什么在websphere3.5中创建应用服务器时要指定虚拟主机?应用服务器与指定虚拟主机的关系??
- 关联关系映射,如此简化方法是否可行
- 大家看看我的这个HQL,为什么有时候快,有时候特别慢呢
你这样得到的话,必须在页面上把username 放到Context里面去
你又没有在页面说是放那里去。
和楼上说的。action定义username。get set方法,
username from session,你session里是否有username??
package login;
import com.opensymphony.xwork2.ActionContext;
public class LoginAction {
public String username;
public String password;
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username=username;
}
public String getPassword(){
return password;
}
public void setPassword(String password){
this.password=password;
}
public String execute() throws Exception{
if(getUsername().equals("scott") && getPassword().equals("tiger"))
{ ActionContext.getContext().getSession().put("user",getUsername()); return "success"; }
else
{ return "error"; }
}
}
this.request = arg1;
}
public String execute()throws Exception{ String userName = request.getParameter("userName");}
}
ActionContext.getContext().getSession().put("user",getUsername());//这是你存在session里的值
String username = (String)ActionContext.getContext().getSession().get("username");//这是你取的时候
LZ你存在session里的标识和取的时候用的不一样啊。
存的时候用的是user,取的时候用的是username,那能取到才怪。
String username = (String)ActionContext.getContext().getSession().get("username");
改成
String username = (String)ActionContext.getContext().getSession().get("user");//
其次,struts2获取表单参数的方法:在action中定义和页面input属性同名的变量,为其添加getXX setXX方法,该变量在action中直接用;
你不许管那么多 你只要告诉我 到你的execute 方法里 username里是不是空的 是那就应该是login. 你直接调用.action进来 你传参数了吗?