Java Web实现信息管理

Java Web实现信息管理

前言:
大二上学期刚学完Oracle,老师就要求用Java语言操作Oracle,当时真的是懵了。回顾自己前两年的生活,大一上学期学习C语言,下学期学习Java,当时教课老师是学硬件的。课上讲一些理论性的问题,剩余时间让我们比这课本敲代码,感觉自己学的Java太片面了,而且那个时候也没有感到Java很重要,直到现在真的后悔之前没有好好学习Java…现在想想,所谓的连接Oracle和MySQL区别也不是很大,JDBC连接数据库的步骤都是固定的,SQL语句也差不多,之间的区别就在,数据库所属的公司不同,驱动jar包不同,具体的驱动类不同,或许,想到更细致一点,数据库的用户名和密码不同。现在,JSP,servlet,三层架构,MVC框架,前端技术( HTML CSS JS …)涉及的知识范围越广,理解起来其实也更加的容易。


Oracle数据库:

  • 驱动jar包(从官网进行下载):ojdbc-x.jar
  • 具体驱动类:oracle.jdbc.OracleDriver

MySQL数据库

  • 驱动jar包:mysql-connection-java-x.jar
  • 具体驱动类:com.mysql.jdbc.Driver

下面是具体的项目管理:
主页面:显示全部学生信息index.jsp

查询操作:
在这里插入图片描述

更新修改操作:
在这里插入图片描述
增加操作:
在这里插入图片描述

点击删除(超链接)后,数据库中对应的数据成功删除(这里不再展示)

实现代码:

StudentDao.java

package org.student.dao;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import org.student.entity.Student;/*** @author 11441*数据访问层:原子性,具体的 增删改查*/
public class StudentDao {private final String URL = "jdbc:mysql://localhost:3306/test1";private final String USERNAME = "root";private final String PASSWOED = "root";//判断学生存在public boolean isExist(int sno) {return queryStudentBySno(sno)==null ? false : true;}//增加public boolean addStudent(Student student) {//封装到数据类Connection connection = null;PreparedStatement pstmt = null;try {Class.forName("com.mysql.jdbc.Driver");connection = DriverManager.getConnection(URL, USERNAME, PASSWOED);String sql = "insert into student values (?,?,?,?)";pstmt = connection.prepareStatement(sql);pstmt.setInt(1, student.getSno());pstmt.setString(2, student.getSname());pstmt.setInt(3, student.getSage());pstmt.setString(4, student.getSaddress());int count = pstmt.executeUpdate();if(count > 0) {return true;}else {return false;}} catch (ClassNotFoundException e) {e.printStackTrace();return false;} catch (SQLException e) {e.printStackTrace();return false;} catch (Exception e) {e.printStackTrace();return false;} finally {try {if(pstmt != null) pstmt.close();if(connection != null) connection.close();} catch (SQLException e) {e.printStackTrace();}}}//根据学号修改学生:根据sno找到要修改的人public boolean updateStudentBySno(int sno,Student student) {Connection connection = null;PreparedStatement pstmt = null;try {Class.forName("com.mysql.jdbc.Driver");connection = DriverManager.getConnection(URL, USERNAME, PASSWOED);String sql = "update student set sname = ?,sage=?,saddress=? where sno=?";pstmt = connection.prepareStatement(sql);pstmt.setString(1, student.getSname());pstmt.setInt(2, student.getSage());pstmt.setString(3, student.getSaddress());pstmt.setInt(4, sno);int count = pstmt.executeUpdate();if(count > 0) {return true;}else {return false;}} catch (ClassNotFoundException e) {e.printStackTrace();return false;} catch (SQLException e) {e.printStackTrace();return false;} catch (Exception e) {e.printStackTrace();return false;} finally {try {if(pstmt != null) pstmt.close();if(connection != null) connection.close();} catch (SQLException e) {e.printStackTrace();}}}//根据学号删除学生public boolean deleteStudentBySno(int sno) {//封装到数据类Connection connection = null;PreparedStatement pstmt = null;try {Class.forName("com.mysql.jdbc.Driver");connection = DriverManager.getConnection(URL, USERNAME, PASSWOED);String sql = "delete from student where sno = ?";pstmt = connection.prepareStatement(sql);pstmt.setInt(1, sno);int count = pstmt.executeUpdate();if(count > 0) {return true;}else {return false;}} catch (ClassNotFoundException e) {e.printStackTrace();return false;} catch (SQLException e) {e.printStackTrace();return false;} catch (Exception e) {e.printStackTrace();return false;} finally {try {if(pstmt != null) pstmt.close();if(connection != null) connection.close();} catch (SQLException e) {e.printStackTrace();}}}//根据学号查询学生信息public Student queryStudentBySno(int sno) {Student student = null;Connection connection = null;PreparedStatement pstmt = null;ResultSet rs = null;try {Class.forName("com.mysql.jdbc.Driver");connection = DriverManager.getConnection(URL, USERNAME, PASSWOED);String sql = "select * from student where sno = ?";pstmt = connection.prepareStatement(sql);pstmt.setInt(1, sno);rs = pstmt.executeQuery();if(rs.next()) {int no = rs.getInt("sno");String name = rs.getString("sname");int age = rs.getInt("sage");String address = rs.getString("saddress");student = new Student(no,name,age,address);}return student;} catch (ClassNotFoundException e) {e.printStackTrace();return null;} catch (SQLException e) {e.printStackTrace();return null;} catch (Exception e) {e.printStackTrace();return null;} finally {try {if(rs != null) rs.close();if(pstmt != null) pstmt.close();if(connection != null) connection.close();} catch (SQLException e) {e.printStackTrace();}}}//查询全部学生(很多学生)public List<Student> queryAllStudent() {List<Student> students = new ArrayList<>();Student student = null;Connection connection = null;PreparedStatement pstmt = null;ResultSet rs = null;try {Class.forName("com.mysql.jdbc.Driver");connection = DriverManager.getConnection(URL, USERNAME, PASSWOED);String sql = "select * from student";pstmt = connection.prepareStatement(sql);rs = pstmt.executeQuery();while(rs.next()) {int no = rs.getInt("sno");String name = rs.getString("sname");int age = rs.getInt("sage");String address = rs.getString("saddress");student = new Student(no,name,age,address);students.add(student);}return students;} catch (ClassNotFoundException e) {e.printStackTrace();return null;} catch (SQLException e) {e.printStackTrace();return null;} catch (Exception e) {e.printStackTrace();return null;} finally {try {if(rs != null) rs.close();if(pstmt != null) pstmt.close();if(connection != null) connection.close();} catch (SQLException e) {e.printStackTrace();}}}
}

Student.java

package org.student.entity;/*** @author 11441*student实体类*/
public class Student {private int sno;private String sname;private int sage;private String saddress;public Student(String sname, int sage, String saddress) {this.sname = sname;this.sage = sage;this.saddress = saddress;}public Student(int sno, String sname, int sage, String saddress) {this.sno = sno;this.sname = sname;this.sage = sage;this.saddress = saddress;}public Student() {}public Student(int sno, String sname, int sage) {this.sno = sno;this.sname = sname;this.sage = sage;}public Student(int sage, String saddress) {this.sage = sage;this.saddress = saddress;}public int getSno() {return sno;}public void setSno(int sno) {this.sno = sno;}public String getSname() {return sname;}public void setSname(String sname) {this.sname = sname;}public int getSage() {return sage;}public void setSage(int sage) {this.sage = sage;}public String getSaddress() {return saddress;}public void setSaddress(String saddress) {this.saddress = saddress;}@Overridepublic String toString() {return this.getSno()+"-"+this.getSname()+"-"+this.getSage()+"-"+this.getSaddress();}
}

StudentService.java

package org.student.service;import java.util.List;import org.student.dao.StudentDao;
import org.student.entity.Student;/*** @author 11441*业务逻辑层,逻辑性的增删改查,(增:查+增)到Dao层进行的组装*/
public class StudentService {StudentDao studentDao = new StudentDao();public boolean addStudent(Student student) {if(!studentDao.isExist(student.getSno())) {//学生不存在,增加该学生studentDao.addStudent(student);return true;}else {System.out.println("该学生已存在");return false;}}public boolean deleteStudentBySno(int sno) {if(studentDao.isExist(sno)) {return studentDao.deleteStudentBySno(sno);}else {return false;}}public boolean updateStudentBySno(int sno,Student student) {if(studentDao.isExist(sno)) {return studentDao.updateStudentBySno(sno,student);}else {return false;}}//根据学号查询学生public Student queryStudentBySno(int sno) {return studentDao.queryStudentBySno(sno);}//查询所有学生public List<Student> queryAllStudents() {return studentDao.queryAllStudent();}
}

QueryAllStudentdServlet.java
(关于Servlet还有AddStudentServlet,DeleteStudentServlet,QueryStudentBySnoServlet,UpdateStudentServlet,这里就不再展示)

package org.student.servlet;import java.io.IOException;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.student.entity.Student;
import org.student.service.StudentService;public class QueryAllStudentdServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");StudentService service = new StudentService();List<Student> students = service.queryAllStudents();System.out.println(students);request.setAttribute("students", students);//因为request域中有数据,因此需要通过请求转发的方式跳转(重定向会丢失request域)request.getRequestDispatcher("index.jsp").forward(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}

WebContent中的jsp文件:

index.jsp

<%@page import="org.student.service.StudentService"%>
<%@page import="org.student.dao.StudentDao"%>
<%@page import="java.util.List"%>
<%@page import="org.student.entity.Student"%>
<%@page import="org.student.servlet.QueryAllStudentdServlet"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生信息列表</title>
<style type="text/css">
#formstyle
{margin:100px 500px;
}
table{width: 80%;height: 100%;
}
</style>
</head>
<body background="photo/海浪.jpg">
<div id="formstyle"><table border="#008C8C 3px solid"><caption>学生信息管理系统</caption><tr align="left" ><th>学号</th><th>姓名</th><th>年龄</th><th>操作</th></tr><!-- 学生信息有几行,要通过循环 --><%/* 获取request域中的数据 */List<Student> students = (List<Student>)request.getAttribute("students");for(Student student : students){%><tr><td><a href="QueryStudentBySnoServlet?sno=<%=student.getSno() %>"><%=student.getSno()%></a></td><td><%=student.getSname()%></td><td><%=student.getSage()%></td><td><a href="DeleteStudentServlet?sno=<%=student.getSno()%>">删除</a></td>			</tr><%}%></table><a href="add.jsp">新增</a>
</div>
</body>
</html>

add.jsp

<%@page import="org.student.entity.Student"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><%Student student = (Student)request.getAttribute("student");%>	<!--通过表单展示学生 --><form action="UpdateStudentServlet">学号:<input type="text" name="sno" value="<%=student.getSno() %>" readonly="readonly" /><br/>姓名:<input type="text" name="sname" value="<%=student.getSname() %>"/><br/>年龄:<input type="text" name="sage" value="<%=student.getSage() %>"/><br/>地址:<input type="text" name="saddress" value="<%=student.getSaddress() %>"/><br/><input type="submit" value=" 修改" /><br/><a href="QueryAllStudentdServlet">返回</a></form>
</body>
</html>

studentInfo.jsp

<%@page import="org.student.entity.Student"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><%Student student = (Student)request.getAttribute("student");%>	<!--通过表单展示学生 --><form action="UpdateStudentServlet">学号:<input type="text" name="sno" value="<%=student.getSno() %>" readonly="readonly" /><br/>姓名:<input type="text" name="sname" value="<%=student.getSname() %>"/><br/>年龄:<input type="text" name="sage" value="<%=student.getSage() %>"/><br/>地址:<input type="text" name="saddress" value="<%=student.getSaddress() %>"/><br/><input type="submit" value=" 修改" /><br/><a href="QueryAllStudentdServlet">返回</a></form>
</body>
</html>

总结
web项目中信息在各个层次之间的传递的过程,跳转页面重定向和请求转发的区别,在JSP中怎样获取参数,调用方法等各种细节,需要不断的练习

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

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

相关文章

计算机科学界至今未解决的四大难题

作者&#xff1a;Shalitha Suranga译者&#xff1a;弯月 责编&#xff1a;张文出品&#xff1a;CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;在现实生活中&#xff0c;很多难题的解决方案都用到了计算机科学的基础理论。例如&#xff0c; Git 分布式版本控制系统建立…

按字编址与按字节编址

按字编址与按字节编址 要清楚按字编址和按字节编址的区别&#xff0c;先要知道 比特(bit)&#xff0c;字节(byte)&#xff0c;字(word) 之间的关系。 在计算机系统中&#xff0c;总线以固定大小的一块数据进行传输&#xff0c;这一块的数据也称为字(word)&#xff0c;如今的计…

2021年AI关键趋势,AI芯片初创公司可能发生并购

来源&#xff1a;雷锋网作者&#xff1a;包永刚编译&#xff1a;雷锋网人工智能&#xff08;AI&#xff09;和机器学习仍然是技术决策者、行业人士和投资者关注的重点。标普全球市场财智&#xff08;S&P Intelligence&#xff09;2020 7月发布的调查显示&#xff0c;有58%的…

CPU组成结构

CPU组成结构 CPU总体构图 CPU中央处理器&#xff08;Central Processing Unit&#xff09; CPU的结构框图&#xff1a;CPU内部由ALU&#xff08;算术逻辑单元&#xff09;、CU&#xff08;控制器&#xff09;、寄存器&#xff08;PC、IR、PSW、DR、通用寄存器等&#xff09;、…

每一个科学家的内心都住着一位哲学家(节选)

来源&#xff1a;腾讯大学&#xff08;ID: tencent_university)作者&#xff1a;张首晟&#xff08;斯坦福大学&#xff09;不少科学家的哲学造诣都很高。在哲学中&#xff0c;有着正负对立的世界观&#xff1a;有阴必有阳、有正必有负、有天使就会有魔鬼。这种哲学观念是如何在…

总结下载Spring Framework的jar包

总结下载Spring Framework的jar包 下载官网&#xff1a;Spring官网

ros2中gazebo安装的注意事项

Install From source&#xff08;推荐安装Fortress版本&#xff0c;好像很方便&#xff09; ROS Be sure youve installed ROS Humble (at least ROS-Base). More ROS dependencies will be installed below. Gazebo Install either Edifice, Fortress, or Garden.(没有har…

谷歌对2021年的六个预测:数据和云技术的革命即将到来

来源&#xff1a;AI前线作者&#xff1a;Debanjan Saha译者&#xff1a;平川策划&#xff1a;钰莹预测是充满挑战的&#xff0c;因为具体的预测取决于特定的时间框。但从云应用方面表现出的趋势来说&#xff0c;我们 2020 年看到的一些事情可能预示着 2021 年可能出现的变化。经…

Vue笔记:webpack项目vue启动流程

VUE启动流程 1. package.json 在执行npm run dev的时候&#xff0c;会在当前目录中寻找 package.json 文件, 有点类似 Maven 的 pom.xml 文件&#xff0c;包含项目的名称版本、项目依赖等相关信息。 { # 版本信息"name": "kitty-ui","version":…

哈工大等实现人工肌肉重大突破登上 Science!多国科学家联合实现全新驱动机理...

来源&#xff1a;雷锋网2021 年&#xff0c;机器人已经「成精」了&#xff0c;公然吵架、组团热舞再也不是人类专属。然鹅在很多人心里&#xff0c;机器人还是僵硬、机械甚至冰冷的。即便如此&#xff0c;技术日新月异&#xff0c;柔性机器人快速发展&#xff0c;我们对机器人的…

WOJ 18 动态无向图

一开始我是不会写的&#xff0c;后来点开了题解&#xff1a; 无话可说……那就写吧……然而第一发跑成暴力分&#xff0c;后来加了一个优化&#xff1a;就是在询问里面提到过的边都不用再加了。 然后……然后就过了呀…… 其实还有面向数据的编程的骚操作……既然卡过了那也没什…

AI如何帮助我们理解意识——麻省理工最新大脑研究

来源&#xff1a;ScienceAI编辑&#xff1a;文龙麻省理工学院和麻省总医院的一组研究人员最近发表了一项将社会意识与单个神经元活动联系起来的研究。据悉&#xff0c;这是首次在单神经元级别下找到「心智理论」的证据。测量大量的神经元是神经学的基础。即使是普通的核磁共振成…

计算机操作系统——处理机调度算法

计算机操作系统——处理机调度算法 一、处理机调度的层次和调度算法的目标 1.处理及调度的层次 高级调度&#xff1a;&#xff08;周期较长&#xff0c;大约几分钟一次&#xff09; 又称为长程调度或作业调度 调度对象&#xff1a;作业 功能&#xff1a;根据算法决定将外存中…

宇宙即计算~一种新科学:斯蒂芬·沃尔夫勒姆

编辑 &#xff1a;Gemini来源&#xff1a;人机与认知实验室斯蒂芬沃尔夫勒姆这个名字&#xff0c;在中文世界里可能远谈不上家喻户晓&#xff1b;但他的英文名Stephen Wolfram恐怕反而却要熟悉得多。他是Mathematica软件的发明者和首席设计师&#xff0c;被广泛地认为是当今科学…

maven安装与项目创建

maven安装与项目创建 Maven是一个软件项目管理和理解工具。基于项目对象模型的概念&#xff0c;Maven可以管理项目的根据一条中心信息构建、报告和记录。 文件 最新的文件可以在https://maven.apache.org/.找到 系统需求 JDK: 1.7或更高版本(这是为了执行Maven -它仍然允许…

windows 安装zip 压缩

* 到sourceforge上下载 zip-3.0-bin.zip https://sourceforge.net/projects/gnuwin32/files/zip/3.0/zip-3.0-bin.zip/download?use_mirrorjaist 或者http://pan.baidu.com 链接: https://pan.baidu.com/s/1HObxhQUdbsl8J-B-IeeRUg 密码: 9922 * 解压 * 把bin目录下面的exe文件…

应对全球粮食危机 AI、5G与机器视觉联手“养鱼”

来源&#xff1a;Forbes编译&#xff1a;科技行者时至今日&#xff0c;全球粮食挑战已经成为现实难题&#xff0c;环境危机的恶化又进一步加剧了这个挑战。而在这样一波重压之下&#xff0c;人工智能、机器视觉与5G网络等新兴技术能否指明新的解决方案?挪威鲑鱼养殖公司Cermaq…

cache命中率、平均访问时间、访问效率的计算公式

cache命中率、平均访问时间、访问效率的计算公式 cache命中率 平均访问时间 访问效率 使用cache可以提高计算机的性能&#xff0c;也提高了主存访问的效率

全息技术“量子飞跃”或彻底改变成像技术

作者&#xff1a;冯卫东 来源&#xff1a;科技日报科技日报北京2月9日电 &#xff08;记者冯卫东&#xff09;据最新一期《自然物理学》报道&#xff0c;英国格拉斯哥大学的物理学家首次找到使用量子纠缠光子来将信息编码为全息图的方法。这一突破了传统全息方法局限性的新型量…

定点数与浮点数的表示方法

计算机组成原理——定点数与浮点数 计算机中常用的数据表示格式有两种&#xff0c;一是定点格式&#xff0c;二是浮点格式。一般来说&#xff0c;定点格式容许的数值范围有限&#xff0c;要求的处理硬件比较简单。而浮点格式容许的数值范围很大&#xff0c;要求的处理硬件比较…