关于一个简单struts的应用,新人求指教!

tikyo772 2010-04-06 11:35:38
是一个关于struts流程的简易程序
一个登录页面,收集登录信息到loginActionForm 由loginAction处理(单纯的equals) 成功到 login_success.jsp页面,失败到login_error.jsp页面

1 环境配置搭建的应该没问题,我用源代码导入测试过了
2 本菜鸟写的真的和源代码几乎一模一样啊,个人觉得取值,数据流向应该不存在问题吧,请高手看看
3 login.jsp 页面的form里 属性不用写 name吗? 如果写是用于什么的?
4 jsp页面上的contentType="text/html 属性有个取代的 import"util"什么的,是什么意思?
5 问题大概就在action的逻辑判断那一句了 :
if(username.equals("111")&&password.equals("111")) 用这样的会报很多的错
HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.



if("admin".equals(username) && "admin".equals(password)) 改用源代码的判断,不会出错,但是一直都是转向失败页面

用单纯的3>1等判断完全没问题,所以问题是页面取值,还是equals方法呢? 求高手指教!



PS :不知道排版好不好,这么多东西麻烦各位了,新人在家实在没办法,积分也不多,请各位包含





login.jsp 页面

<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<form action="login.do" method="post">

用户:<input type="text" name="username"><br>

密码:<input type="password" name="password"><br>
<input type="submit" value="登录" >
</form>
</body>
</html>


loginActionForm.java

package com.javass.struts;

import org.apache.struts.action.ActionForm;

public class loginActionForm extends ActionForm {
private String username;
private 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;
}

}



loginAction.java


package com.javass.struts;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class loginAction extends Action {

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

loginActionForm loginform=new loginActionForm();
String username=loginform.getUsername();
String password=loginform.getPassword();
if(username.equals("111")&&password.equals("111")){
return mapping.findForward("success");
}else{
return mapping.findForward("error");
}

}

}


struts-config.xml


<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">


<struts-config>
<form-beans>
<form-bean name="loginForm" type="com.javass.struts.loginActionForm"></form-bean>
</form-beans>
<action-mappings>
<action path="/login"
type="com.javass.struts.loginAction"
name="loginForm"
scope="request"
>
<forward name="success" path="/login_success.jsp"></forward>
<forward name="error" path="/login_error.jsp"></forward>
</action>
</action-mappings>


</struts-config>

...全文
73 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tikyo772 2010-04-08
  • 打赏
  • 举报
回复
非常感谢大家 !
iso_wangjian 2010-04-06
  • 打赏
  • 举报
回复
@Override
这个重写也要去掉。。
iso_wangjian 2010-04-06
  • 打赏
  • 举报
回复
看了下代码,问题很大
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

loginActionForm loginform=new loginActionForm();不能new,这样的话就是空对想了,你下面又用get取值并且赋值给username,这里就已经是空指针异常了,改成loginActionForm loginform=(loginActionForm) form 就没有问题了。
String username=loginform.getUsername();
String password=loginform.getPassword();
if(username.equals("111")&&password.equals("111")){
return mapping.findForward("success");
}else{
return mapping.findForward("error");
}

}

}
wangjiancy 2010-04-06
  • 打赏
  • 举报
回复
用户:<input type="text" name="username"><br>
改为:<html:text property="username">
估计是值没取到,好久没做struts1的项目了,有点忘了,另外,
你可以在if(username.equals("111")&&password.equals("111")){行打个断点,
看看username和password的值是什么,
要是不会打断点,就System。out。println(username + “---”password);
你这样看看吧。
xiongyuanming 2010-04-06
  • 打赏
  • 举报
回复
loginActionForm loginform=new loginActionForm();
这个不是这样的
改成这样的
loginActionForm loginform=(loginActionForm) form;
YOYOOOP 2010-04-06
  • 打赏
  • 举报
回复
关于"admin".equals(username)与username.equals("admin")
前者是比较正规、正确的写法。而后且往往在某些情况下会报错:
比如:username == null的时候。这个时候就会报空指针异常.


至于跳转至失败页面,肯定是判断没能通过。
估:你先将我上面所说的改正过来。
然后再debug一下。
在判断跳转前加上:
System.out.println("username is:"+username + ";Password is:" + password);
看看打出来的信息,再和你的判断一比较 就知道此次跳转是否正确了!

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧