目录
注册页面判断
昨天的注册页面后端 已经写好了框架 今天补充两个判断转到成功或者失败页面
判断表单为空
//验证为空
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();
}
}