综合案例
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>学生管理系统首页</title> </head> <body> <%-- 获取会话域中的数据 如果获取到了则显示添加和查看功能的超链接 如果没获取到则显示登录功能的超链接 --%> <% Object username = session.getAttribute("username"); if(username == null) { %> <a href="/stu/login.jsp">请登录</a> <%} else {%> <a href="/stu/addStudent.jsp">添加学生</a> <a href="/stu/listStudentServlet">查看学生</a> <%}%> </body> </html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>学生登录</title> </head> <body> <form action="/stu/loginStudentServlet" method="get" autocomplete="off"> 姓名:<input type="text" name="username"> <br> 密码:<input type="password" name="password"> <br> <button type="submit">登录</button> </form> </body> </html>
package com.itheima.servlet; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /* 学生登录 */ @WebServlet("/loginStudentServlet") public class LoginStudentServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1.获取用户名和密码 String username = req.getParameter("username"); String password = req.getParameter("password"); //2.判断用户名 if(username == null || "".equals(username)) { //2.1用户名为空 重定向到登录页面 resp.sendRedirect("/stu/login.jsp"); return; } //2.2用户名不为空 将用户名存入会话域中 req.getSession().setAttribute("username",username); //3.重定向到首页index.jsp resp.sendRedirect("/stu/index.jsp"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req,resp); } }
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>添加学生</title> </head> <body> <form action="/stu/addStudentServlet" method="get" autocomplete="off"> 学生姓名:<input type="text" name="username"> <br> 学生年龄:<input type="number" name="age"> <br> 学生成绩:<input type="number" name="score"> <br> <button type="submit">保存</button> </form> </body> </html>
package com.itheima.servlet; import com.itheima.bean.Student; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; /* 实现添加功能 */ @WebServlet("/addStudentServlet") public class AddStudentServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1.获取表单中的数据 String username = req.getParameter("username"); String age = req.getParameter("age"); String score = req.getParameter("score"); //2.创建学生对象并赋值 Student stu = new Student(); stu.setUsername(username); stu.setAge(Integer.parseInt(age)); stu.setScore(Integer.parseInt(score)); //3.将学生对象的数据保存到d:\\stu.txt文件中 BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\stu.txt",true)); bw.write(stu.getUsername() + "," + stu.getAge() + "," + stu.getScore()); bw.newLine(); bw.close(); //4.通过定时刷新功能响应给浏览器 resp.setContentType("text/html;charset=UTF-8"); resp.getWriter().write("添加成功。2秒后自动跳转到首页..."); resp.setHeader("Refresh","2;URL=/stu/index.jsp"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req,resp); } }
1、将集合添加到会话域中
2、重定向到 listStudent.jsp 页面上
package com.itheima.servlet; import com.itheima.bean.Student; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; /* 实现查看功能 */ @WebServlet("/listStudentServlet") public class ListStudentServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1.创建字符输入流对象,关联读取的文件 BufferedReader br = new BufferedReader(new FileReader("d:\\stu.txt")); //2.创建集合对象,用于保存Student对象 ArrayList<Student> list = new ArrayList<>(); //3.循环读取文件中的数据,将数据封装到Student对象中。再把多个学生对象添加到集合中 String line; while((line = br.readLine()) != null) { //张三,23,95 Student stu = new Student(); String[] arr = line.split(","); stu.setUsername(arr[0]); stu.setAge(Integer.parseInt(arr[1])); stu.setScore(Integer.parseInt(arr[2])); list.add(stu); } //4.将集合对象存入会话域中 req.getSession().setAttribute("students",list); //5.重定向到学生列表页面 resp.sendRedirect("/stu/listStudent.jsp"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req,resp); } }
<%@ page import="com.itheima.bean.Student" %> <%@ page import="java.util.ArrayList" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>查看学生</title> </head> <body> <table width="600px" border="1px"> <tr> <th>学生姓名</th> <th>学生年龄</th> <th>学生成绩</th> </tr> <% ArrayList<Student> students = (ArrayList<Student>) session.getAttribute("students"); for(Student stu : students) { %> <tr align="center"> <td><%=stu.getUsername()%></td> <td><%=stu.getAge()%></td> <td><%=stu.getScore()%></td> </tr> <%}%> </table> </body> </html>