IO第九天 登录发表文章 动态列表

目录

注册页面判断

服务器处理请求完整过程

实现登录页面 反序列化

实现文章发表页面

动态页面


注册页面判断

昨天的注册页面后端 已经写好了框架 今天补充两个判断转到成功或者失败页面

判断表单为空

 //验证为空
        if(username==null||username.isEmpty()||password==null||password.isEmpty()
                ||nickname==null||nickname.isEmpty()||ageStr==null||ageStr.isEmpty()||!ageStr.matches("[0-9]+")){

            try {
                response.sendRedirect("reg_info.error");
                return;//方法体里面结束方法
            } catch (IOException e) {
                e.printStackTrace();
            }

        }

判断重复用户

 //检查是否为重复用户
        if(file.exists()){//若改文件存在说明已经是注册过的用户了
            try {
                response.sendRedirect("/have_user.html");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

服务器处理请求完整过程

http协议中服务器不能主动给浏览器发消息

实现登录页面 反序列化

package com.tedu.springboot2209.controller;

import com.tedu.springboot2209.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;

//登录页面
/**
 * 我们定义的用于处理某个请求的类(某个Controller类)都需要在类上添加注解@Controller
 * 这样SpringMVC框架才能识别这个类
 */
@Controller
public class UserControllerLogin {
    //用来表示保存所有用户信息的目录:users
    private static File userDir;

    static {
        userDir = new File("./users");
        if(!userDir.exists()){
            userDir.mkdirs();
        }
    }
    @RequestMapping("/loginUser")
    public void login(HttpServletRequest request,HttpServletResponse response){
        System.out.println("开始处理登录!");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println(username+","+password);
        if(username==null||username.isEmpty()||password==null||password.isEmpty()){
            try {
                response.sendRedirect("/login_info_error.html");
            } catch (IOException e) {
                e.printStackTrace();
            }
            return;
        }



        //根据登录用户的用户名去users目录下提取该obj文件读取曾经的注册信息
        File file = new File(userDir,username+".obj");
        if(file.exists()){//如果该文件存在,说明此次登录的用户是一个注册用户
            //反序列化文件中曾经该用户的注册信息
            try (
                    FileInputStream fis = new FileInputStream(file);
                    ObjectInputStream ois = new ObjectInputStream(fis);
            ){
                User user = (User)ois.readObject();
                //用注册时用户的密码和本次登录用户输入的密码比对
                if(user.getPassword().equals(password)){//一致则登录成功
                    //登录成功
                    response.sendRedirect("/login_success.html");
                    return;
                }
            } catch (IOException | ClassNotFoundException e) {
                e.printStackTrace();
            }
        }

        //登录失败
        try {
            response.sendRedirect("/login_fail.html");
        } catch (IOException e) {
            e.printStackTrace();
        }


    }

    }
}

 出现页面404

  • 可能性1粘贴的页面需要rebuild 判断在target里面有没有

  •  可能性2 链接页面名字写错了

 

实现文章发表页面

package com.tedu.springboot2209.controller;

import com.tedu.springboot2209.entity.Article;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

@Controller
public class ArticleController {
    //用来表示保存所有文章信息的目录:articles
    private static File articleDir;

    static {
        articleDir = new File("./articles");
        if(!articleDir.exists()){
            articleDir.mkdirs();
        }
    }
    @RequestMapping("/writeArticle")
    public void writeArticle(HttpServletRequest request, HttpServletResponse response){
        System.out.println("开始处理发表文章");
        String title = request.getParameter("title");
        String author = request.getParameter("author");
        String content = request.getParameter("content");
        System.out.println(title+","+author+","+content);
        if(title==null||title.isEmpty()||author==null||author.isEmpty()||
           content==null||content.isEmpty()){
            try {
                response.sendRedirect("/article_fail.html");
                return;
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        File file = new File(articleDir,title+".obj");
        Article article = new Article(title,author,content);

        try (
                FileOutputStream fos = new FileOutputStream(file);
                ObjectOutputStream oos = new ObjectOutputStream(fos);
        ){
            oos.writeObject(article);
            response.sendRedirect("/article_success.html");
        } catch (IOException e) {
            e.printStackTrace();
        }


    }
}

动态页面


@Controller
public class UserController {
    //用来表示保存所有用户信息的目录:users
    private static File userDir;

    static {
        userDir = new File("./users");
        if(!userDir.exists()){
           userDir.mkdirs();
        }
    }

    @RequestMapping("/userList.html")
    public void userList(HttpServletRequest request,HttpServletResponse response){
        System.out.println("开始处理动态页面");
        /*
            1:将users目录中的所有obj文件获取到
            2:将这些文件逐一反序列化这样会得到一组User对象
            3:拼接一个HTML页面内容,并将这组用户信息拼接到表格里
            4:发送
         */
        //1 labuda
        File[] subs = userDir.listFiles(f->f.getName().endsWith(".obj"));
        //2
        List<User> userList = new ArrayList<>();
        for(File sub : subs){
            try (
                    FileInputStream fis = new FileInputStream(sub);
                    ObjectInputStream ois = new ObjectInputStream(fis);
            ){
               User user = (User)ois.readObject();
               userList.add(user);
            } catch (IOException | ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
        //3
        try {
            response.setContentType("text/html;charset=utf-8");
            PrintWriter pw = response.getWriter();
            pw.println("<!DOCTYPE html>");
            pw.println("<html lang=\"en\">");
            pw.println("<head>");
            pw.println("<meta charset=\"UTF-8\">");
            pw.println("<title>用户列表</title>");
            pw.println("</head>");
            pw.println("<body>");
            pw.println("<center>");
            pw.println("<h1>用户列表</h1>");
            pw.println("<table border=\"1\">");
            pw.println("<tr>");
            pw.println("<td>用户名</td>");
            pw.println("<td>密码</td>");
            pw.println("<td>昵称</td>");
            pw.println("<td>年龄</td>");
            pw.println("</tr>");

            for(User user : userList) {
                pw.println("<tr>");
                pw.println("<td>" + user.getUsername() + "</td>");
                pw.println("<td>" + user.getPassword() + "</td>");
                pw.println("<td>" + user.getNickname() + "</td>");
                pw.println("<td>" + user.getAge() + "</td>");
                pw.println("</tr>");
            }

            pw.println("</table>");
            pw.println("</center>");
            pw.println("</body>");
            pw.println("</html>");

        } catch (IOException e) {
            e.printStackTrace();
        }


    }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值