struts聊天室问题,急等
时间:2008-07-24 05:26:28
来源:论坛整理 作者: 编辑:chinaitzhe
网友回复:此回复为自动发出,仅用于显示而已,并无任何其他非凡作用
楼主【xiaobudong2458】截止到2008-07-22 17:36:10的历史汇总数据(不包括此帖):
发帖的总数量:47 发帖的总分数:690 每贴平均分数:14
回帖的总数量:18 得分贴总数量:1 回帖的得分率:5%
结贴的总数量:43 结贴的总分数:630
无满足结贴数:8 无满足结贴分:150
未结的帖子数:4 未结的总分数:60
结贴的百分比:91.49 % 结分的百分比:91.30 %
无满足结贴率:18.60 % 无满足结分率:23.81 %
值得尊敬网友回复:以下附上源码:
登录页面 index.jsp
....
<form action="login.do" method="post">
用户名:
<input type="text" name="username">
<br>
<br>
密 码:
<input type="password" name="userpass">
<br>
<br>
<button type="submit" name="" value="登录">
登录
</button>
</form>
...
登录 Action LoginAction.java
...
public class LoginAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
String username = loginForm.getUsername();
String userpass = loginForm.getUserpass();
String sql = "select * from talking where username = '" username "' and userpass = '" userpass "';";
ArrayList list = UserDao.queryUser(sql);
if(list.isEmpty()){
return mapping.findForward("logfail");
}
HttpSession session = request.getSession();
session.setAttribute("username", username);
Vector v = (Vector)session.getServletContext().getAttribute("usernames");
if(v == null){
v = new Vector();
}
v.add(username);
session.getServletContext().setAttribute("usernames", v);
return mapping.findForward("logseccess");
}
}
登录成功后进入聊天室页面
...
<frameset rows="70%,30%" >
<frameset cols="70%,30%" >
<frame src="Chats.jsp" name="chats">
<frame src="ShowUsers.jsp" name="showUsers">
</frameset>
<frame src="talk.jsp" name="talk">
</frameset>
...
显示用户 Action ShowUsersAction.java
...
public class ShowUsersAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
ShowUsersForm showUsersForm = (ShowUsersForm) form;// TODO Auto-generated method stub
HttpSession session = request.getSession();
ServletContext context = session.getServletContext();
Vector v = (Vector)context.getAttribute("usernames");
request.setAttribute("vector", v);
return mapping.findForward("showusers");
}
}
显示用户页面 ShowUsers.jsp
...
<logic:iterate id="user" name="vector" >
<bean:write name="user" property="username" /> <br>
</logic:iterate>
...
(相关页面及代码已全部列出)
各位帮忙看看问题出在哪里,登录成功后在 ShowUsers.jsp 页面里出错 错误码 500 can't find bean vector in any scope
网友回复:Vector 类型的数据不可以直接输出吧?
网友回复:我输出的并不是 Vector 类型数据呀,是 TalkingUser 类型的(我的一个 bean)
网友回复:Vector对象里的元素要不能通过要害字取出,只能通过get(int index)方法取
楼主可以先把vector类型转换成arraylist类型,然后可以取
网友回复:Arraylist list = v.toArray() ;
request.setAttribute("list", list);
jsp中: <logic:iterate id="list" name="list" >
<bean:write name="list" property="username" /> <br>
</logic:iterate>
网友回复:对不起,上一个回复有错
v.toArray() ;返回一个数组,可以把数组加到Arraylist里,然后输出到jsp
网友回复:按楼上说的我改了一下,
ShowUsersAction.java 里面添加如下代码:
...
int i = 0;
ArrayList list = new ArrayList();
while(!v.isEmpty()){
list.add(v.get(i));
i ;
}
request.setAttribute("list", list);
ShowUsers.jsp 里面改成以下代码:
<logic:iterate id="user" name="list" >
<bean:write name="user" property="username" /> <br>
</logic:iterate>
页面错误如下:
HTTP Status 500
org.apache.jasper.JasperException: An exception occurred processing JSP page /ShowUsers.jsp at line 22
19: <center>
20: 用户列表:
21: <br>
22: <logic:iterate id="user" name="list" >
23: <bean:write name="user" property="username" /> <br>
24: </logic:iterate>
25: </center>
javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find bean list in any scope
我感觉是 ShowUsersAction.java 根本就没有工作啊....???
网友回复:自己调试下
网友回复:等了好久了,怎么没人能够帮哈忙啊, 自己顶下....
网友回复:第一.按6楼的更改用ArrayList应该可行
此标签 <logic:iterate id="user" name="list" > 就指名type
如: <logic:iterate id="user" name="list" type="User类的全限定名(即包名加类名)">
第二.检查struts-config.xml文件中Action是否配置正确,在你的ShowUsersAction 类中测试是否工作
网友回复:显示用户页面 ShowUsers.jsp
...
<logic:iterate id="user" name="vector" >
<bean:write name="user" property="username" /> <br>
</logic:iterate>
错误:首先 <logic:iterate id="user" name="vector" > 在之前Action动作中没有设置vector在任何的范围内
其次根据你Action里对数据的处理来看,你的Vector集合放的是String并不包含username属性
<bean:write name="user" property="username" />这句也会报错
网友回复:对不起,没注重
显示用户 Action ShowUsersAction.java
...
public class ShowUsersAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
ShowUsersForm showUsersForm = (ShowUsersForm) form;// TODO Auto-generated method stub
HttpSession session = request.getSession();
ServletContext context = session.getServletContext();
Vector v = (Vector)context.getAttribute("usernames");
request.setAttribute("vector", v);
return mapping.findForward("showusers");
}
这句看到,不好意思
网友回复:检查你的Struts-config.xml文件的配置看是否ShowUsersAction跳转到ShowUsers.jsp 是否为上下文跳转
因为你这里request.setAttribute("vector", v); 是放到request里所以跳转必须为上下文关系跳转,jsp页面才可以获取对象
其次这句还是会报错
<bean:write name="user" property="username" />这句也会报错
网友回复:该回复于2008-07-23 13:57:11被版主删除
网友回复:结帖, 散分, 尽管没等到答案...
关键字:struts,聊天室,问题,
下一篇:下面没有链接了











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面