javaEE11(servlet课后习题1,3(将思路实现一下))

1. 在第5 章课后习题2 基础上,基于jsp+servlet+javabean 实现学生表的增删改查。

数据处理交给Servlet

java 复制代码
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 stub

        this.doPost(request, response);

    }



    /**

     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

     */

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // TODO Auto-generated method stub

        request.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 block

                e.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 block

                e.printStackTrace();

            } catch (Exception e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

        }

       

    }



}

jsp 只负责显示

java 复制代码
<%@ 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>
  1. 使用过滤器实现多角色登录检验
  1. 分别建立admin、teacher、student三个目录,里面放置各自主页面。
  2. 登录页面
java 复制代码
<%@ 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>
  1. 完成登录功能的servlet,登录成功在session中存入用户名和角色名。
java 复制代码
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/*,只有以对应角色成功登录的用户才能进入。

相关推荐
Coder码匠21 分钟前
Dockerfile 优化实践:从 400MB 到 80MB
java·spring boot
李慕婉学姐8 小时前
【开题答辩过程】以《基于JAVA的校园即时配送系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·开发语言·数据库
奋进的芋圆9 小时前
Java 延时任务实现方案详解(适用于 Spring Boot 3)
java·spring boot·redis·rabbitmq
sxlishaobin10 小时前
设计模式之桥接模式
java·设计模式·桥接模式
model200510 小时前
alibaba linux3 系统盘网站迁移数据盘
java·服务器·前端
荒诞硬汉10 小时前
JavaBean相关补充
java·开发语言
提笔忘字的帝国10 小时前
【教程】macOS 如何完全卸载 Java 开发环境
java·开发语言·macos
2501_9418824810 小时前
从灰度发布到流量切分的互联网工程语法控制与多语言实现实践思路随笔分享
java·开发语言
華勳全栈11 小时前
两天开发完成智能体平台
java·spring·go
alonewolf_9911 小时前
Spring MVC重点功能底层源码深度解析
java·spring·mvc