这学期开始学习了J2EE的课程,由于是上课跟着老师一同学习,遇到目前这个问题不是很能解决,希望能有高手能解决,谢谢。并且我再把要求说一下:通过注册页将注册的用户名和信息存放至一个文本文件中,我的本地是d:\\user.txt。登陆的时候可以通过读取文本文件内存放的用户名和密码,相当于一个小型数据库吧,这是通过java的类实现注册与读取的的。而我目前所遇到的问题就是输入存放在文本文件内的任何用户名和密码都读取不了,都显示报错,需要注册和返回,所以我就纳闷了。而我接下来贴出代码,希望各路高手解决。
实现登陆的java类,login.login
package login;
import java.io.*;
public class login {
String name;
String password;
boolean flag;public boolean isFlag() {
return flag;
}public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void readNameAndPassword() throws FileNotFoundException,IOException{
String nameandpassword,nap;
nap=name+":"+password; /*此处的name和password来自客户端*/FileReader fr=new FileReader("d:\\user.txt");
BufferedReader br=new BufferedReader(fr);
nameandpassword=br.readLine();
while(nameandpassword != null){ 
if(nameandpassword.equals(nap))
{flag=true;
break;}

nameandpassword=br.readLine();
    
}
/*int index;
index=nameandpassword.indexOf(":");
name=nameandpassword.substring(0, index); //从0开始到index结束
password=nameandpassword.substring(index+1); ////从index开始到最后结束*/
fr.close();
br.close();
}
}实现注册的java类,register.java
package register;
import java.io.*;
//import java.io.FileWriter;
//import java.io.IOException;
public class register {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}public void writeFile() throws IOException {
FileWriter fw;
fw=new FileWriter("d:\\user.txt",true);
fw.write(name+":"+password+"\r\n");
fw.close();
}
} //"\r\n"还有动态的登陆和注册JSP页面
先是rlogin.jsp
<body>
<% String yhm=request.getParameter("yonghu");
String mm=request.getParameter("mima");
%>
<jsp:useBean id="aa" scope="page" class="login.login"></jsp:useBean><%
aa.readNameAndPassword();/*先读取写入的方法*/
aa.setName(yhm);
aa.setPassword(mm);%><%if(aa.isFlag())
{out.print("可登录");
session.setAttribute("Welcome", "Welcome");} 
else out.print("请先<a href='../client/register.html'>注册</a>或重新<a href='../index.html'>登录</a>");%>
<a href="../index.html">返回</a></body>最后是rregister.jsp
<body>
<% 
request.setCharacterEncoding("utf-8");
String yhm=request.getParameter("user");
String mm=request.getParameter("passw");
out.print(yhm+":"+mm);
%>
<jsp:useBean id="aa" scope="page" class="register.register"></jsp:useBean>
<%
aa.setName(yhm);
aa.setPassword(mm);
aa.writeFile();
%>
</body>
我可以确认的是表单中的名字和动态页面上是一样的,以上代码可能有点多,感谢各路高手能够帮忙啦,谢谢!另附下载地址:http://pan.baidu.com/s/1GG7Lh

解决方案 »

  1.   

    其实设计2个地方。第一个你值传到后台没。第2个你的txt 文件读取到了没。 调试看看。
      

  2.   

    楼主有几个页面?分别是什么?
    然后把你报的错贴出来看下
    最后问下,没学过Servlet吗
      

  3.   

    页面有主页,3个子页,一个注册页面,一个登录动态页rlogin.jsp,一个注册动态页rregister.jsp。还有两个类login和register。
    程序调试的时候没出错,就是功能没实现,因为我之前在注册页面的时候已经将用户名和密码成功注册到指定的文件里了,用这个已经注册好的用户名和密码就是不能登录上去。
    Servlet没学过
      

  4.   

    代码是没有问题的,不过逻辑有点小问题:从readNameAndPassword方法里的nap = name + ":" + password; /* 此处的name和password来自客户端 */看的出来你知道要从客户端传这2个参数过来,但客户端里,你是先调用readNameAndPassword方法,然后才set这2个参数:<%
    aa.readNameAndPassword();/*先读取写入的方法*/
    aa.setName(yhm);
    aa.setPassword(mm);
    %>这就导致在执行readNameAndPassword方法的时候,这2个参数总是为null。
      

  5.   

    你这种实现,去了解一下java.util.Properties这个类吧,用这种格式比你用txt要好。读取不到内容就只能自己debug了