1.在第5章课后习题2基础上,基于jsp+servlet+javabean实现学生表的增删改查。
数据处理交给Servlet
package servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.List;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 dao.StudentDao;import entity.Student;/*** Servlet implementation class StudentServlet*/@WebServlet("/studentServlet")public class StudentServlet extends HttpServlet {private static final long serialVersionUID = 1L;StudentDao studentDao=new StudentDao();/*** @see HttpServlet#HttpServlet()*/public StudentServlet() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubthis.doPost(request, response);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubrequest.setCharacterEncoding("UTF-8");String op=request.getParameter("op");if("add".equals(op)) {Student student=new Student(request.getParameter("sno"),request.getParameter("sname"),request.getParameter("sex"));try{studentDao.add(student);List<Student> studentList = studentDao.query();//request.setAttribute("studentList",studentList);//request.getRequestDispatcher("query.jsp").forward(request,response);response.sendRedirect("/web1/studentServlet?op=query");}catch(Exception e){response.setContentType("text/html;charset=UTF-8");PrintWriter out=response.getWriter();out.print("<script>alert('学号不唯一')</script>");}}else if("update".equals(op)) {Student student=new Student();student.setId(Integer.parseInt(request.getParameter("id")));student.setSno(request.getParameter("sno"));student.setSname(request.getParameter("sname"));student.setSex(request.getParameter("sex"));try{studentDao.update(student);List<Student> studentList = studentDao.query();request.setAttribute("studentList",studentList);request.getRequestDispatcher("query.jsp").forward(request,response);}catch(Exception e){response.setContentType("text/html;charset=UTF-8");PrintWriter out=response.getWriter();out.print("<script>alert('更新失败,学号不唯一')</script>");}}else if("query".equals(op)) {List<Student> studentList;try {studentList = studentDao.query();request.setAttribute("studentList",studentList);request.getRequestDispatcher("/query.jsp").forward(request,response);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}else if("delete".equals(op)) {try {studentDao.delete(Integer.parseInt(request.getParameter("id")));List<Student> studentList = studentDao.query();request.setAttribute("studentList",studentList);request.getRequestDispatcher("query.jsp").forward(request,response);} catch (NumberFormatException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
jsp只负责显示
<%@ page pageEncoding="UTF-8" import="java.util.*,entity.*,dao.*"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><html><head><style>body{text-align:center;}th,td{border:2px solid gray;text-align:center;padding:3px 10px;}table{border-collapse:collapse;margin:10px auto;}#form1{padding:20px;display:none;position:fixed;top:50%;left:50%;width:300px;height:200px;z-index:1000;margin-left:-200px;margin-top:-200px;background: #88f;}</style></head><body><h3><a href="javascript:add()">添加记录</a></h3><h2>学生信息</h2><table><tr><th>学号</th><th>姓名</th><th>性别</th><th>修改</th><th>删除</th></tr><c:forEach items="${studentList}" var="student" varStatus="st"><tr><td>${student.sno}</td><td>${student.sname}</td><td>${student.sex}</td><td><a href="javascript:update(${student.id},'${student.sno}','${student.sname}','${student.sex}')">修改</a></td><td><a href="${pageContext.request.contextPath}/studentServlet?op=delete&id=${student.id}" onclick="return confirm('确实要删除吗?')">删除</a></td> </tr></c:forEach></table><form method="post" id="form1" action="${pageContext.request.contextPath}/studentServlet">学号<input type="text" name="sno" id="sno"/><br><br>姓名<input type="text" name="sname" id="sname"/><br><br>性别<input type="radio" name="sex" value="男" checked/>男<input type="radio" name="sex" value="女" />女<br><br><input type="hidden" name="op" value="" id="op"/><input type="hidden" name="id" id="id"/><input type="submit" value="" id="bt"/><input type="reset" value="重置"/><input type="button" value="关闭" onclick="document.getElementById('form1').style.display='none';"/></form><br><script>function add(){document.getElementById("bt").value="添加";document.getElementById("op").value="add";document.getElementById("form1").style.display="block";//document.getElementById('form1').action='query.jsp';}function update(id,sno,sname,sex){document.getElementById("bt").value="修改";document.getElementById("op").value="update";document.getElementById("id").value=id;document.getElementById("sno").value=sno;document.getElementById("sname").value=sname;var sexs=document.getElementsByName("sex");if(sex=='男'){sexs[0].checked=true;sexs[1].checked=false;}else{sexs[0].checked=false;sexs[1].checked=true;}document.getElementById("form1").style.display="block";//document.getElementById('form1').action='query.jsp';}</script></body></html>
- 使用过滤器实现多角色登录检验
- 分别建立admin、teacher、student三个目录,里面放置各自主页面。
- 登录页面
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><form>userid<input type="text"/>userpwd<input type="text"/>admin<input type="radio" name="role" value="admin">teacher<input type="radio" name="role" value="teacher">student<input type="radio" name="role" value="student"><input type="submit" value="login"/></form><%String role=request.getParameter("role");if(role!=null){session.setAttribute("role",role);response.sendRedirect("/zdw/"+role+"/index.jsp");}%></body></html>
- 完成登录功能的servlet,登录成功在session中存入用户名和角色名。
package servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class servletdenglu extends HttpServlet{public servletdenglu(){super();}protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{}protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{doGet(request, response);request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");HttpSession session=request.getSession();String shenfen=request.getParameter("role");String username=request.getParameter("userid");if(shenfen.equals("admin")&&username!=null) {session.setAttribute("Name",username);response.sendRedirect("/zdw/"+shenfen+"/index.jsp");}else if(shenfen.equals("teacher")&&username!=null){session.setAttribute("Name",username);response.sendRedirect("/zdw/"+shenfen+"/index.jsp");}else if(shenfen.equals("student")&&username!=null) {session.setAttribute("Name",username);response.sendRedirect("/zdw/"+shenfen+"/index.jsp");}}}
(4)建立三个过滤器,分别拦截admin/*,teacher/*,student/*,只有以对应角色成功登录的用户才能进入。