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

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>

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/539874.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

操作系统(多线程)

1.概述 每个线程是CPU使用的一个基本单元&#xff0c;包括线程ID、程序计数器、寄存器组和堆栈。 传统单线程&#xff1a; 多线程进程&#xff1a; 2.动机 在某些情况下&#xff0c;单个应用程序可能需要执行多个类似的任务。例如&#xff0c;一个Web服务器接受有关网页、图像…

网络安全,硬防迪云

要减少被攻击的频率&#xff0c;游戏开发者可以采取以下措施&#xff1a; 1. 强化安全措施&#xff1a;确保游戏服务器和用户数据的安全性&#xff0c;加密网络传输&#xff0c;防止黑客攻击和数据泄露。 2. 更新和修复漏洞&#xff1a;定期检查游戏代码和服务器&#xff0c;…

《ElementPlus 与 ElementUI 差异集合》el-input 和 el-button 属性 size 有变化

差异 ** element-ui el-input、el-input-number 和 el-button 中&#xff0c;属性size 值是 medium / small / minielement-plus el-input、el-input-number 和 el-button 中&#xff0c;属性size 值是 large / default /small 如果你是自动升级&#xff0c;Vue3 系统会有如…

Redis的内存淘汰策略是怎么样的?

淘汰策略 Redis 的内存淘汰策略用于在内存满了之后&#xff0c;决定哪些 key 要被删除。Redis 支持多种内存淘汰策略&#xff0c;可以通过面置文件中的 maxmemory-policy 参数来指定。 以下是 Redis 支持的内存淘汰策略 noeviction:不会淘汰任何键值对&#xff0c;而是直接返…

全新升级SQLCoder-7B-2:领先的自然语言至SQL转换模型,性能显著提升

前言 随着数据科学和机器学习技术的不断进步&#xff0c;自然语言处理&#xff08;NLP&#xff09;已成为连接人类语言和计算机编程之间的重要桥梁。在这个交汇点上&#xff0c;SQLCoder-7B-2模型的最新升级引领了一场革命&#xff0c;特别是在自然语言至SQL生成方面&#xff…

Java代码基础算法练习---2024.3.14

其实这就是从我学校的资源&#xff0c;都比较基础的算法题&#xff0c;先尽量每天都做1-2题&#xff0c;练手感。毕竟离我真正去尝试入职好的公司&#xff08;我指的就是中大厂&#xff0c;但是任重道远啊&#xff09;&#xff0c;仍有一定的时间&#xff0c;至少要等我升本之后…

unity3d Animal Controller的Animal组件中Speeds,States和modes基础部分理解

Speeds 速度集是修改你可以做的原始动画,增加或减少运动,旋转,或动画速度。它们与 州 所以,当动物在运动状态下,在飞行或游泳时,你可以有不同的速度 如果你的性格动画是 (已到位), 你一定要调整速度 位置 和 旋转 每一种的价值观 速度装置 …否则,它们不会移动或旋转。 每个速…

Day42-企业级网络存储NFS01

Day42-企业级网络存储NFS01 1. 什么是NFS&#xff1f;2. 为什么要用网络共享存储&#xff1f;3. 共享存储的种类4. NFS工作原理5. 环境准备6. NFS软件列表7. 安装8. 配置nfs9. 项目实践作业&#xff1a;10. ()权限 对应参数11. 在生产中配置NFS的重要技巧&#xff1a;12. 项目实…

windows 11访问Debian10上的共享目录

步骤 要在Windows 11上访问Debian 10.0.0的共享目录&#xff0c;可以通过以下步骤来实现&#xff1a; 1. 设置Samba服务&#xff1a;在Debian系统上&#xff0c;需要安装并配置Samba服务&#xff0c;以便能够实现文件夹共享。Samba是一个允许Linux/Unix服务器与Windows操作系…

供电系统分类详解

一、供电系统分类 电力供电系统一般有5种供电模式&#xff0c;常用的有&#xff1a;IT系统&#xff0c;TT系统&#xff0c;TN系统&#xff0c;其中TN系统又可以分为TN-C&#xff0c;TN-S&#xff0c;TN-C-S。 1、TN-C系统&#xff08;三相四线制&#xff09; 优点: 该系统中…

python 调用redis创建查询key

部署redis apiVersion: apps/v1 # 描述api版本&#xff0c;默认都用这个 kind: Deployment # 资源类型&#xff0c;可以配置为pod&#xff0c;deployment&#xff0c;service&#xff0c;statefulset等等 metadata: # deployment相关的元数据&#xff0c;用于描述deployment的…

软考高级:政府信息化与电子政务(G2G 、G2E、G2B、B2G、G2C、C2C)概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…