初冀 2023-04-21 00:00 采纳率: 61%
浏览 26
已结题

jsp写用户注册界面为什么不能跳到错误界面


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="javax.servlet.*" %>
<html>
<head>
    <title>用户注册数据保存页面</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
                String name = request.getParameter("id");//获取用户名
                String password = request.getParameter("password");//获取密码
                String sex = request.getParameter("sex");//获取性别

%>
<% try {
    File f1 = new File("D:\\java实验报告\\实验4\\user.txt");
    BufferedReader b2=new BufferedReader(new FileReader(f1));
    String s=b2.readLine();
    int tag=0;
    while(s!=null){//检查user.txt有没有重名用户
        String []a=s.split(",");
        if(name.equals(a[0]))
            tag=1;//有重名用户
        s=b2.readLine();
    }
    b2.close();
    if(tag==1){
%>
        <jsp:forward page="registerFailure.jsp"></jsp:forward>
<%} else {
        BufferedWriter b1 = new BufferedWriter(new FileWriter(f1));
        b1.write(name + "," + password + "," + sex + "\n");
        b1.flush();
    b1.close();
%>
<jsp:forward page="success.jsp"></jsp:forward>
<% }
}catch(IOException e){}

%>
</body>
</html>



上面是注册界面,下面是注册检测界面, 为什么输入有重名的信息,没有跳转到错误页面,而是显示注册成功,比如user.txt文本里有:随随,1234,女
我输入:随随,12,男
显示注册成功,而且user.txt里信息被更新为只有随随,12,男,之前的都没有了
而且每次写入信息,之前的信息就没了,只有新信息
想知道为什么不会转到错误界面,以及怎么才能不清除之前信息,写到原来信息后面

  • 写回答

2条回答 默认 最新

  • 关注

    img


    你 可能读取的文件是乱码,读文件换成这个,

    
    InputStreamReader isr = new InputStreamReader(new FileInputStream(f1), "UTF-8");
        BufferedReader b2=new BufferedReader(isr);
    
    

    还有写文件

    
    FileOutputStream writerStream = new FileOutputStream(f1, true);
        BufferedWriter b1 = new BufferedWriter(new OutputStreamWriter(writerStream, "UTF-8"));
        b1.append(name + "," + password + "," + sex + "\n");
    

    完整代码如下

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ page import="java.io.*" %>
    <%@ page import="java.sql.*" %>
    <%@ page import="java.util.*" %>
    <%@ page import="javax.servlet.*" %>
    <html>
    <head>
        <title>用户注册数据保存页面</title>
    </head>
    <body>
    <%
        request.setCharacterEncoding("UTF-8");
        String name = request.getParameter("id");//获取用户名
        String password = request.getParameter("password");//获取密码
        String sex = request.getParameter("sex");//获取性别
    
    %>
    <% try {
        File f1 = new File("D:\\user.txt");
        InputStreamReader isr = new InputStreamReader(new FileInputStream(f1), "UTF-8");
        BufferedReader b2=new BufferedReader(isr);
        String s=b2.readLine();
        int tag=0;
        while(s!=null){//检查user.txt有没有重名用户
            String []a=s.split(",");
            if(name.equals(a[0]))
                tag=1;//有重名用户
            s=b2.readLine();
        }
        b2.close();
        if(tag==1){
    %>
    <jsp:forward page="registerFailure.jsp"></jsp:forward>
    <%} else {
        FileOutputStream writerStream = new FileOutputStream(f1, true);
        BufferedWriter b1 = new BufferedWriter(new OutputStreamWriter(writerStream, "UTF-8"));
        b1.append(name + "," + password + "," + sex + "\n");
        b1.flush();
        b1.close();
    %>
    <jsp:forward page="success.jsp"></jsp:forward>
    <% }
    }catch(IOException e){}
    
    %>
    </body>
    </html>
    
    
    

    img


    望采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月29日
  • 已采纳回答 4月21日
  • 创建了问题 4月21日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改