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 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只负责显示

<%@ 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/*,只有以对应角色成功登录的用户才能进入。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode707:设计链表

题目描述 实现 MyLinkedList 类&#xff1a; MyLinkedList() 初始化 MyLinkedList 对象。 int get(int index) 获取链表中下标为 index 的节点的值。如果下标无效&#xff0c;则返回 -1 。 void addAtHead(int val) 将一个值为 val 的节点插入到链表中第一个元素之前。在插入完…

Word中解决插入脚注导致的分页位置错误问题

先放一个截图&#xff1a; 上面的截图中&#xff0c;样式为标题3的段落“四、固执的念头”前插入了连续型分节符&#xff0c;并且该分节符的样式为正文&#xff0c;前后的正文段落中有脚注&#xff0c;结果在分页时&#xff0c;标题3段落“四、固执的念头”后的正文段落自动进入…

HTML 语义化:构建优质网页的关键

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

卷积神经网络CNN(一篇文章 理解)

目录 一、引言 二、CNN算法概述 1 卷积层 2 池化层 3 全连接层 三、CNN算法原理 1 前向传播 2 反向传播 四、CNN算法应用 1 图像分类 2 目标检测 3 人脸识别 六、CNN的优缺点 优点&#xff1a; 1 特征提取能力强 2 平移不变性 3 参数共享 4 层次化表示 缺点…

问题解决:NPM 安装 TypeScript出现“sill IdealTree buildDeps”

一、原因&#xff1a; 使用了其他镜像&#xff08;例如我使用了淘宝镜像 npm config set registry https://registry.npm.taobao.org/ &#xff09; 二、解决方法&#xff1a; 1.切换为原镜像 npm config set registry https://registry.npmjs.org 安装typescript npm i …

ListBox显示图片的一些问题

相关&#xff1a;http://t.csdnimg.cn/xTnu8 显示图片的方案就是&#xff1a;自定义一个Photo类&#xff0c;里面有属性Source&#xff1b;View再绑定ViewModel中的Photo集合&#xff0c;再到View中给ListView设置数据模板 关键点&#xff1a;这样做很容易忘记写数据模板 数据…

案例分析篇07:数据库设计相关28个考点(23~28)(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12601310.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

AWS Database Migration Service 助力数据库搬迁

在业务出海的过程中&#xff0c;少不了的就是云迁移&#xff0c;但在云迁移的过程中其中最重要的一环就是数据库。通常迁移的成功就取决于数据&#xff0c;如果应用成功搬迁&#xff0c;数据库没过来也是无用功。因此如何快速、安全的进行数据库搬迁也成为一大难题。九河云公司…

【触想智能】工业触摸显示器在户外使用需要注意哪些问题?

工业显示器是智能制造领域应用比较广泛的电子产品&#xff0c;它广泛应用于工厂产线以及各种配套设备&#xff0c;在很大程度上提升了工厂的生产效率。 工业显示器按触摸方式分&#xff0c;可以分为工业触摸显示器和非触摸工业显示器两种;按使用环境分&#xff0c;又可以分为室…

单片机心率脉搏

摘 要 在我们现在的日常生活中脉搏心率测量仪器的使用已经越来越广泛了。为了使脉搏心率测量仪在简便性和精度方面有所提高&#xff0c;本课题的目的是设计一种基于52单片机的脉搏心率测量仪。系统以STC89C52单片机中央处理单元&#xff0c;以红外反射式传感器ST188为检测原件…

paddle的版面分析的环境搭建及使用

一、什么是版面分析 版面分析技术&#xff0c;主要是对图片形式的文档进行版面分析&#xff0c;将文档划分为文字、标题、表格、图片以及列表5类区域&#xff0c;如下图所示&#xff1a; 二、应用场景 2.1 合同比对 2.2 文本类型划分 2.3 通用文档的还原 版面分析技术可将以…

System是什么?为什么不能直接输出null?

在看学习下面的知识前&#xff0c;得先对java核心类库有个大致的了解&#xff0c;详情可参考链接 java基本概念-扩展点-CSDN博客 1、System 1.1 System是什么&#xff1f; System是一个类&#xff0c;它包含了一些有用的属性和方法。 1.2 System实现的功能 &#xff08;1&…

微服务技术栈之rabbitMQ基础入门(一)

准备工作&#xff1a; 1&#xff0c;创建空的工程&#xff1a; 首先我们先创建一个空的工程&#xff0c;并且命名为 mq-java 2&#xff0c;创建一个生产者springboot工程&#xff08;plblisher&#xff09;&#xff1a; 设置项目的基本信息&#xff1a; 勾选版本和依赖&…

6N137SDM光电耦合器中文资料规格书PDF数据手册引脚图图片价格参数芯片概述

产品概述&#xff1a; 6N137M、HCPL2601M、HCPL2611M 单沟道和 HCPL2630M、HCPL2631M 双沟道包含一个 850 nm AlGaAS LED&#xff0c;与带有可调谐输出的极高速集成式光电探测器逻辑门级进行光耦合。此输出具有一个开路集电极&#xff0c;允许有线 OR 输出。耦合参数在 -40C 至…

电脑切屏卡顿,尤其是打游戏时切屏卡顿问题解决方法

博主在打游戏时喜欢切后台但是最近发现切屏尤其慢&#xff0c;异常卡顿&#xff0c;但是是新换的电脑&#xff0c;所以苦恼了半天&#xff0c;上网搜也没有结果&#xff0c;说的都是些配置低&#xff0c;系统文件损坏等问题&#xff0c;所以再检查分辨率时发现问题所在 屏幕分辨…

Python绘图-14绘制3D图(上)

14.1绘制3D散点图 14.1.1图像呈现 14.1.2绘图代码 import numpy as np # 导入numpy库&#xff0c;numpy是Python的一个强大的数值计算扩展程序库&#xff0c;支持大量的维度数组与矩阵运算&#xff0c;此外也针对数组运算提供大量的数学函数库。 import matplotlib.pyplot a…

Axure 单键快捷键 加快绘图速度 提高工作效率

画图类 R&#xff1a;绘制矩形 先点击空白页面&#xff0c;输入R即可绘制 L&#xff1a;绘制直线 先点击空白页面&#xff0c;输入L即可绘制&#xff0c;绘制的时候按住shift直线 O&#xff1a;绘制圆 先点击空白页面&#xff0c;输入O即可绘制&#xff0c;绘制的时候按…

目标检测数据集:手机顶盖焊缺陷检测数据集

✨✨✨✨✨✨目标检测数据集✨✨✨✨✨✨ 本专栏提供各种场景的数据集,主要聚焦:工业缺陷检测数据集、小目标数据集、遥感数据集、红外小目标数据集,该专栏的数据集会在多个专栏进行验证,在多个数据集进行验证mAP涨点明显,尤其是小目标、遮挡物精度提升明显的数据集会在该…

云服务器租用4核16G配置价格表,阿里云和腾讯云费用价格对比

4核16G服务器租用优惠价格26元1个月&#xff0c;腾讯云轻量4核16G12M服务器32元1个月、96元3个月、156元6个月、312元一年&#xff0c;阿腾云atengyun.com分享4核16服务器租用费用价格表&#xff0c;阿里云和腾讯云详细配置报价和性能参数表&#xff1a; 腾讯云4核16G服务器价…

Elastic Stack--08--SpringData框架

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 SpringData[官网&#xff1a; https://spring.io/projects/spring-data](https://spring.io/projects/spring-data) Spring Data Elasticsearch 介绍 1.SpringData-…