首页 > 其他分享 >web实验3

web实验3

时间:2023-06-11 09:57:37浏览次数:36  
标签:web 数据库 request stmt 实验 jsp id con

实验项目名称实验  Web数据库程序设计

 

一、实验目的

通过使用JSP技术设计一个简单的数据库管理系统,了解展示页面和编辑页面的区别,掌握Web服务器与MySQL数据库的连接和数据库操作的方法,掌握使用Java语言编写JSP文件的方法。

二、实验内容和基本要求

从以下列举的四个数据库中,任选其一,或者自行定义其他数据库,每个数据库中包含一张表,数据库名、表名、列名、列数据类型自行定义(提示:主键可以设为自增列):

1) 学生数据库:存储的信息包括学生学号、姓名、性别、生日等。

2) 商品数据库:存储的信息包括商品ID、商品名称、商品数量、生产厂家等。

3) 客户数据库:存储的信息包括客户ID、客户姓名、客户地址、手机号码等。

4) 车辆数据库:存储的信息包括汽车ID、品牌、颜色、车主姓名等。

开发一个数据库管理系统需要完成对以上数据库表中的记录的基本的查看、增加、修改和删除功能,参考系统文件关系如图1所示:

 

图1 系统文件关系图

 

各个文件功能如下:

1) index.jsp:显示数据库表中的所有记录,每条记录均拥有两个超链接,分别指向edit.jsp和del.jsp,这两个文件分别完成该条记录的编辑和删除功能。此外,该页面还需包含一个超链接指向add.jsp,完成新增一条记录的功能;

2) add.jsp:提供新增一条记录的页面,包含一个表单,若干输入框,该表单提交给addsave.jsp;

3) addsave.jsp:从add.jsp接收用户输入的数据,将数据插入数据库表中,并提示用户成功或者失败,提供一个超链接转向index.jsp;

4) edit.jsp:提供修改某一条记录的页面,包含一个表单,若干输入框,输入框初始值为该条记录原有数据,用户修改后,提交给editsave.jsp;

5) editsave.jsp:从edit.jsp接收用户输入的数据,修改数据库表中的对应记录,并提示用户成功或者失败,提供一个超链接转向index.jsp;

6) del.jsp:完成删除某一条记录的功能,并提示用户成功或者失败,提供一个超链接转向index.jsp;

7) error.jsp:作为其他所有页面的错误处理页面,该页面显示异常信息。

完成基本功能后,可以从以下方面对系统进行改进:

1) 对于客户端增加和修改信息页面,使用JavaScript、Jquery、Vue等技术进行必要的数据的非空验证;

2) 自行添加一些CSS,使得页面和字体更加美观。

完成后,请将各个文件程序源代码和浏览器截图写入实验报告。

三、实验步骤

1) 打开MySQL,新建一个数据库。

2) 新建一个数据库表。

3) 在表中增加若干记录,作为初始数据。

4) 打开Eclipse软件,新建一个名为Lab03的Web项目,并设置其部署程序为Tomcat。

5) 在Lab03中添加文件,编写代码。

6)Style.css

@charset "utf-8";
body{
   background-image: url("stdu.png");
   background-size: cover;
   text-align: center;
}
table {
   width: 400px;
   border: 1px solid #696969;
   border-collapse: collapse;
   margin:0 auto;
}

th {
   border: 1px solid #696969;
   
}
td {
   text-align: center;
   border: 1px solid ;
   height: 50px;
   opacity:0.8;
   background-color: #fff;
}
input {
   font-size: 20px;
}
a {
   color: #11F7F7;
   text-decoration: none;
   font-size: 18px;
}

a:hover {
   color: #F79011;
   text-decoration: underline;
   font-size: 18px;
}

7)Index.jsp

<%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%>
<%@ page errorPage="error.jsp"%>
<html>
<head>
 <title>学生信息管理系统</title>
 <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<h1 style="width: 100%; font-family: 微软雅黑; color:#fff;">学生信息管理系统</h1>
<a href="add.jsp">添加学生信息</a>
<br />
<br />
<table style="width: 50%;">
 <tr>
   <th>学号</th>
   <th>姓名</th>
   <th>性别</th>
   <th>生日</th>
   <th>管理</th>
 </tr>
 <%
   try {
     Class.forName("com.mysql.jdbc.Driver");
     Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8", "root", "123456");
     //使用Statement对象
     Statement stmt = con.createStatement();
     ResultSet rs = stmt.executeQuery("select * from student");
     while (rs.next()) {
       int id = rs.getInt(1);
       out.println("<tr><td>" + rs.getString(1) +"</td><td>" + rs.getString(2) + "</td><td>" + rs.getString(3) + "</td><td>"
               + rs.getString(4) + "</td><td>"+ rs.getString(5) +"</td><td><a href='edit.jsp?id=" + id
               + "'>修改</a> <a href='del.jsp?id=" + id + "'>删除</a></td></tr>");
     }
     rs.close();
     stmt.close();
     con.close();
   } catch (Exception e) {
     out.println("Exception:" + e.getMessage());
   }
 %>

</table>
<br />
<hr />
<div style="text-align: center; width: 100%; font-size: 12px; color: #333;">
 ©版权所有:石家庄铁道大学信息科学与技术学院  <a href="Lab03.png" target="_blank">网站地图</a>
</div>
</body>
</html>

8)Add.jsp

<%@ page contentType="text/html; charset=utf-8" import="java.sql.*" errorPage="error.jsp"%>
<html>
<head>
 <title>添加学生信息</title>
 <link rel="stylesheet" type="text/css" href="css/style.css">
 <script type="text/javascript">
   function check() {
     var id = document.getElementById("id");
     var name = document.getElementById("name");
     var sex = document.getElementById("sex");
     var birthday= document.getElementById("birthday");
     
     //非空
     if(id.value == '') {
       alert('学号为空');
       name.focus();
       return false;
     }
     if(name.value == '') {
       alert('姓名为空');
       teacher.focus();
       return false;
     }
     if(sex.value == '') {
       alert('性别为空');
       classroom.focus();
       return false;
     }
     if(birthday.value == '') {
       alert('生日为空');
       classroom.focus();
       return false;
     }
   }
 </script type="text/javascript">
</head>
<body>
<%
 Object message = request.getAttribute("message");
 if(message!=null && !"".equals(message)){

%>
<script type="text/javascript">
 alert("<%=request.getAttribute("message")%>");
</script>
<%} %>
<form action="addsave.jsp" method="post" onsubmit="return check()">
 <h2>添加学生信息</h2>
 <table style="width: 50%">
   <tr>
     <th width="30%">学号</th>
     <td width="70%"><input name="id" type="text"></td>
   </tr>
   <tr>
     <th>姓名</th>
     <td><input name="name" type="text"></td>
   </tr>
   <tr>
     <th>性别</th>
     <td><input name="sex" type="text"></td>
   </tr>
   <tr>
     <th>生日</th>
     <td><input name="birthday" type="text"></td>
   </tr>
   <tr>
     <td colspan="2"><input type="submit" name="submit" value="添加"> <input type="reset" value="重置"></td>
   </tr>
 </table>
</form>

</body>
</html>

9)Addsave.jsp

<%@ page contentType="text/html; charset=utf-8" import="java.sql.*" errorPage="error.jsp"%>
<html>
<head>
 <title>添加学生信息</title>
 <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<%
 request.setCharacterEncoding("utf-8");
 String id = request.getParameter("id");
 String name = request.getParameter("name");
 String sex = request.getParameter("sex");
 String birthday = request.getParameter("birthday");
 Class.forName("com.mysql.jdbc.Driver");
 Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8", "root", "123456");
 PreparedStatement stmt = con.prepareStatement("insert into student(id,name,sex,birthday) values(?, ?,?,?)");
 stmt.setString(1, id);
 stmt.setString(2, name);
 stmt.setString(3, sex);
 stmt.setString(4, birthday);
 int i = stmt.executeUpdate();


 if (i == 1) {
   out.println("<h2>添加成功!</h2><br/>");
   out.println("<a href='index.jsp'>返回首页</a>");
 } else {
   out.println("<h2>添加失败!</h2><br/>");
   out.println("<a href='add.jsp'>重新添加</a>");
 }
 stmt.close();
 con.close();

%>
</body>
</html>

10)Del.jsp

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" pageEncoding="utf-8"%>
<html>
<head>
 <title>删除学生信息</title>
 <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<%
 request.setCharacterEncoding("utf-8");
 Class.forName("com.mysql.jdbc.Driver");
 Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8", "root", "123456");
 Statement stmt=con.createStatement();
 String id=request.getParameter("id");
 int i=stmt.executeUpdate("delete from student where id="+id);
 if(i==1)
 {
   out.println("<h2>删除成功!</h2><br/>");
 }
 else
 {
   out.println("<h2>删除失败!</h2><br/>");
 }
 out.println("<a href='index.jsp'>返回首页</a>");
 stmt.close();
 con.close();

%>
</body>
</html>

11)Edit.jsp

<%@ page import="java.sql.*" pageEncoding="utf-8" errorPage="error.jsp"%>
<html>
<head>
   <title>修改学生信息</title>
   <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<%
   request.setCharacterEncoding("utf-8");
   String id = request.getParameter("id");
   Class.forName("com.mysql.jdbc.Driver");

   Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8", "root", "123546");

   PreparedStatement stmt = con.prepareStatement("select * from student where id=?");
   stmt.setString(1, id);
   ResultSet rs = stmt.executeQuery();

   rs.next();
%>
<form action="editsave.jsp" method="post">
   <h2>修改学生信息</h2>
   <table style="width:50%">
       <tr>
           <th width="30%">学号:</th>
           <td width="70%"><input name="id" type="text"
                                  value="<%=rs.getString(1)%>"></td>
       </tr>
       <tr>
           <th>姓名:</th>
           <td><input name="name" type="text"
                      value="<%=rs.getString(2)%>"></td>
       </tr>
       <tr>
           <th>性别:</th>
           <td><input name="sex" type="text"
                      value="<%=rs.getString(3)%>"></td>
       </tr>
       <tr>
           <th>生日:</th>
           <td><input name="birthday" type="text"
                      value="<%=rs.getString(4)%>"></td>
       </tr>
       <tr>
           <td colspan="2"><input type="hidden" name="id" value="<%=id%>">
               <input type="submit" value="修改"> <input type="reset"
                                                         value="重置"></td>
       </tr>
   </table>
</form>
<%
   rs.close();
   stmt.close();
   con.close();
%>
</body>
</html>

12)Editsave.jsp

<%@ page import="java.sql.*" pageEncoding="utf-8" errorPage="error.jsp"%>
<html>
<head>
   <title>修改完成</title>
   <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<%
   request.setCharacterEncoding("utf-8");
   String id = request.getParameter("id");
   String name = request.getParameter("name");
   String sex = request.getParameter("sex");
   String birthday = request.getParameter("birthday");
  
   Class.forName("com.mysql.jdbc.Driver");
   Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8", "root", "123456");
   Statement stmt = con.createStatement();
   String sql = "update info set id='"+id+"',name='" + name  + "',sex='" + sex+ "',birthday='" + birthday+ "'
           + "'where id=" + id;
   int i = stmt.executeUpdate(sql);
   if (i == 1) {
       out.println("<h2 >修改成功!</h2><br/>");
       out.println("<a href='index.jsp'>返回首页</a>");
   } else {
       out.println("<h2>修改失败!</h2><br/>");
       out.println("<a href='edit.jsp?id='" + id + ">重新添加</a>");
   }
   stmt.close();
   con.close();
%>
</body>
</html>

13)Error.jsp

<%@ page language="java" isErrorPage="true" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
   <title>error page</title>
</head>
<body>
错误信息为:<br/>
<%=exception.getMessage()%><br>
<%=exception.toString()%>
</body>
</html>

14)程序截图

Index.jsp

Add.jsp

Addsave.jsp

Edit.jsp

Editsave.jsp

Del.jsp

……

四、心得体会

通过本次实验,我认为以下几点是非常重要的:

1.熟悉数据库语言:如SQL等,了解查询、插入、更新、删除等基本操作,以及数据库的设计原则和规范。

2.掌握前端开发技术:如HTML、CSS、JavaScript等,能够使用这些技术来设计并实现用户界面。

3.了解后端开发技术:如PHP、Python、Java等,能够使用这些技术来处理用户请求,并与数据库进行交互。

4.熟悉Web开发框架:如Django、Flask等,这些框架可以帮助开发者更快速地搭建Web应用程序。

5.注重数据安全:在设计和实现Web应用程序时,需要考虑数据的安全性,包括数据的加密、防止SQL注入攻击等。

总的来说,Web数据库程序设计实验需要开发者具备全面的Web开发技术和数据库知识,同时需要注重数据的安全性,这样才能设计出高质量、安全可靠的Web应用程序。

标签:web,数据库,request,stmt,实验,jsp,id,con
From: https://www.cnblogs.com/zyzyzrp/p/17472529.html

相关文章

  • web实验4
    实验项目名称:实验四  Web综合应用程序设计 一、实验目的通过使用JavaMVC模式设计简单的数据库管理系统,巩固使用JDBC技术访问数据库的方法,学习使用Java语言对服务器端进行编程,深入理解MVC网站设计模式的基本概念和框架结构。二、实验内容和基本要求从以下列举的四个数据库......
  • 实验7
    task4:代码:#include<stdio.h>#include<stdlib.h>intmain(){FILE*fp;inti=0;charch;fp=fopen("data4.txt","r");if(fp==NULL){printf("failtoopenfile\n");return1;......
  • JavaScript学习笔记:Web安全模型
    为了保证安全,浏览器中的JavaScript不能读写设备中的文件,也不能访问任意的服务器。同源策略同源策略指的是脚本只能访问与包含它的文档同源资源。源是指文档URL中的协议、主机与端口部分,完全相同则是同源,任意一项不同都不是同源。脚本文件的URL与同源策略毫不相干,同源策略至于......
  • 实验7
     实验4#include<stdlib.h>#include<stdio.h>intmain(){ FILE*fp; charch; intcount=0; fp=fopen("data4.text","r"); if(fp==NULL) { printf("无法打开文件"); return0; } while((ch=fgetc(fp))!=EOF) {......
  • 202306-人民当家作组 实验七 综合软件项目案例
    项目内容课程班级博客链接2020级卓越工程师班这个作业要求链接实验七综合软件项目案例团队名称人民当家作组团队的课程学习目标(1)练习用例图、类图、顺序图、状态图等UML建模技术在软件开发过程中的用途;(2)掌握软件项目的数据库逻辑结构设计方法;(3)掌握软件项目......
  • 202307-什么是快乐星球组 实验七:综合软件项目案例
    项目内容课程班级博客链接2020级计算机科学与技术本次作业要求链接实验七:综合软件项目案例团队名称什么是快乐星球组团队成员分工描述张倩:任务三、任务四、任务六贾小萌:任务二、任务六、撰写博客葛薇:任务一、任务五、任务七、任务八团队的课程学习目标......
  • 实验七
    任务一#include<stdio.h>#defineN7#defineM80typedefstruct{charname[M];//书名charauthor[M];//作者}BOOK;intmain(){BOOKx[N]={{"《雕塑家》","斯科特·麦克劳德"},{"《灯塔》","克里斯多夫·夏布特&qu......
  • 实验7 文件应用编程
    task1#include<stdio.h>#defineN7#defineM80typedefstruct{charname[M];//书名charauthor[M];//作者}BOOK;intmain(){BOOKx[N]={{"《雕塑家》","斯科特·麦克劳德"},{"《灯塔》","克里斯多夫·夏布特&......
  • 202303-天天向上队 实验七 综合软件项目案例
    项目内容课程班级博客链接2023年春软件工程这个作业要求链接实验七综合软件项目案例团队名称天天向上队团队的课程学习目标(1)练习用例图、类图、顺序图、状态图等UML建模技术在软件开发过程中的用途。(2)掌握软件项目的数据库逻辑结构设计方法。(3)掌握软件项目......
  • hello-world7843 实验七 综合软件项目案例
    项目内容课程班级博客链接2023年春软件工程(2020级计算机科学与技术)这个作业要求链接实验七综合软件项目案例团队名称hello-world7843团队成员分工描述王*润:项目部署,绘制类图,设计开发满足用户实际需求的功能。王*:绘制顺序图以及E-R图,总结类图与源代......