位置: IT常识 - 正文

JavaWeb 简单的图书管理系统(jsp+servlet)(javaweb界面设计)

编辑:rootadmin
JavaWeb 简单的图书管理系统(jsp+servlet) 关于与需要的文件下载

推荐整理分享JavaWeb 简单的图书管理系统(jsp+servlet)(javaweb界面设计),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javaweb设计,javaweb界面设计,怎样在javaweb里面放图片,java web界面怎么做,java web界面怎么做,javaweb怎么做,java web界面怎么做,java web界面怎么做,内容如对您有帮助,希望把文章链接给更多的朋友!

字体颜色分类:

黑色 表示正文

蓝色 表示一个超链接,点击可以跳转页面

橙色 表示一级标题或项目的包名

绿色 表示子级内容中含有代码或解释的标题

紫色 表示一个代码块的标题

红色 表示()外的文件是()内文件的子类,实现类或依赖

浅灰 表示解释或其类型

高亮显示 表示重点或者需要注意未被解决的Bug

纯小白,有什么做得不好的地方请各位大佬指正,谢谢!

项目/数据库/Jar文件下载

Java-Project文件夹中存放项目,需要的同学可以下载看一下,也欢迎进行修改!

Java-Jar文件夹中存放.java或其他类型需要引入的外部文件

Java-数据库 文件夹中存放建库建表的sql文件

jar文件里面有不需要的可以不下载 本文档只用到了mysql connector

sqlserver与oracle数据库请下载sqljdbc4/ojdbc14并修改数据库连接语句

(连接类:src - Jdbc - Tool - BookManageOper 修改时仅需修改常量值)

一.所有页面与项目介绍

首页面

添加页面

包含四个主要模块:查询 - 增加 - 删除 - 分页

可以通过当前项目对Jsp+Servlet的基础进行检验

注意!我没有对页面进行任何的美化

所有代码只是为了做出来作业而写的

如果想要美化可以自己修改Script下的内容

二.所用软件与文件软件

Idea

SQLyog(mysql) 可使用其他数据库代替

JAR文件

mySql-Connector-java

注意!jar文件需要在File-Project Structure-Artifacts中引入到WEB-INF/lib中

三.数据库的建立

在进行代码的编写之前,我们首先把数据库与表建立好

我的数据库仅适用于MySql,其他数据库请自行建库建表!

项目/数据库/Jar文件下载中 Java - 数据库 - BookManage.sql 进入SQLyog执行即可

Book表(table)

id

int

主键 自增

编号

name

varchar(50)

非空

书名

author

JavaWeb 简单的图书管理系统(jsp+servlet)(javaweb界面设计)

varchar(50)

非空

作者名

time

date

非空

购入时间

type

int

非空 外键(type-id)

类型

Book表.png

Type表(table)

id

int

主键 自增

编号

name

varchar(50)

非空

类型名

Type表.png

四.导入Jar文件

在idea2018中 导入jar文件 其他版本或软件请自行寻找教程

菜单栏-File-Project Structure中选择Modules

选择Dependencies

在Dependencies-Scope旁边选择绿色的加号中选择jars or .....

选择需要加入的Jar文件并点击Apply 退出当前弹框

再次进入 菜单栏-File-Project Structure 但是选择Artifacts

在Artifacts中选择Output Layout

在右方Available Elements选择需要加入的jar

选择后在下方点击Fix 并选择Add 'xx.jar' to Artifacts 或者 Add All...

五.代码编写src - Jdbc(1)src-jdbc包含的文件与其详解

src - Jdbc包含Dao(数据访问接口) , Impl(Dao实现类) , Entity(实体类) , Tool(工具类)

Dao(数据访问接口):包含BookDao与TypeDao 主要用来进行方法的定义

Impl(Dao实现类):包含BookDaoImpl与TypeDaoImpl,他们都继承自Dao中的接口,主要进行抽象方法的具体实现

Entity(实体类):包含Book与Type,也就是数据库中的表,其中的字段就是数据库的字段

Tool(工具类):包含BookManageOper与Page,用于数据库的连接开启与关闭和分页的操作

(2)src - jdbc - Tool(2.1)src - jdbc - Tool - BookManageOper[数据库连接][工具类]

首先就是进行数据库的连接 需要用到Jar文件连接数据库

代码的解释已经在注释里了,如果有什么问题欢迎提出!谢谢!

package Jdbc.Tool;import java.io.Console;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;public class BookManageOper {//创建数据与数据库的连接的字符常量 修改数据库仅需修改url中的bookmanage即可    //connector8.x中已经进行修改classname与url,详细请前往其他教程寻找private static final String classname="com.mysql.jdbc.Driver";    //mysql5.x不需要?后面的内容 但我是8.x并且用的时connector5 所以需要加?后的内容private static final String url="jdbc:mysql://localhost:3306/bookmanage?useUnicode=true&characterEncoding=utf8";private static final String user="root";private static final String pwd="123456";    //创建与数据库的连接 返回Connection连接对象public static Connection create(){        //首先创建一个Connection对象 并赋值为nullConnection connection=null;try{            //为Connection对象赋值(获取连接)Class.forName(classname);connection=DriverManager.getConnection(url,user,pwd);}catch (Exception ex){            //当发生错误时在控制台(Console)中输出错误信息            //并显示Tool - BookManageOper - create() Errorex.printStackTrace();System.out.println("Tool - BookManageOper - create() Error");}        //返回connection对象return connection;}    //通过三个对象关闭数据库的连接public static void close(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet){try{            //如果不为空则进行关闭 为空则跳过if(connection!=null){connection.close();}else if(preparedStatement!=null){preparedStatement.close();}else if(resultSet!=null){resultSet.close();}}catch (Exception ex){ex.printStackTrace();System.out.println("Tool - BookManageOper - close(C,P,R) Error");}}}(2.2)src - jdbc - Tool - Page[翻页][工具类]package Jdbc.Tool;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;public class Page {    //当前页数 默认为1private int thisPage=1;    //总页数private int sumPage;    //每页显示行数{固定为5 修改的时候修改5为x即可}private int showPage=5;    //所有记录数 可以使用这个来进行代替sumpage? 【未实现】private int sumRecord;       //单例模式private Page(){}private static Page page=null;public static Page getPage(){if(page==null)page=new Page();return page;}//私有的字段 用于数据库连接与操作private Connection connection=null;private PreparedStatement preparedStatement=null;private ResultSet resultSet=null;//在这里我没有给sumRecord创建get/set方法 因为没有外部类使用到他//如果有使用的需求可以加上 没有需求可以把sumRecord直接删除 在下方sum定义局部变量public int getThisPage() {return thisPage;}       //当设置当前页数时,进行判断public void setThisPage(int thisPage) {        //如果大于0且小于等于总页数,正常运行if(thisPage>0&&thisPage<=sumPage){this.thisPage=thisPage;}        //如果当前页数大于总页数,那么跳转到最后一页(设置为总页数)        else if(thisPage>sumPage){this.thisPage=getSumPage();}        //如果都不满足(小于0) 那么设为默认值1        else{this.thisPage=1;}}public int getSumPage() {return sumPage;}       //当设置总页数时,进行判断public void setSumPage(int sumPage) {        //当总页数大于0时 进行赋值 否则将sumPage设为1(可以不设else 那么出现<0时SumPage不变)        if(sumPage>0){            this.sumPage = sumPage;    //当总页数设置完之后,需要将当前页数设为当前页数            //因为当删除数据之后 4页变成了3页 那么当前页数不能继续为4 而是为最大页数3    this.setThisPage(this.getThisPage());        }else{            this.sumPage = 1;        }}public int getShowPage() {return showPage;}public void setShowPage(int showPage) {        //这里可以不进行判断,因为没在外面设置ShowPage        //但是有些页面需要进行每页显示的修改 如论坛        //需要进行每页显示的修改时需要进行判断if(showPage>=1&&showPage<=99){this.showPage = showPage;}}//获取总记录数 初始化或每次添加、删除结束后执行public void loadSumRecord(){System.out.println("Tool - Page - getSumPage()");try{            //创建Connection连接connection=BookManageOper.create();            //查询Book表的所有记录String sql="select count(1) from book";preparedStatement=connection.prepareStatement(sql);resultSet=preparedStatement.executeQuery();            //因为是返回count(1)[只返回一个数据] 所以使用ifif(resultSet.next()){sumRecord=resultSet.getInt(1);                //三目运算符 if?true:false 当总记录除总页数余0时 返回结果,不为0返回结果+1this.setSumPage(sumRecord%showPage==0?sumRecord/showPage:sumRecord/showPage+1);}}catch (Exception ex){ex.printStackTrace();}finally {BookManageOper.close(connection,preparedStatement,resultSet);}}}(3)src - jdbc - Entity

Entity进行表与其中字段的定义,这就没必要解释了

(3.1)src - jdbc - Entity - Book[图书][实体类]package Jdbc.Entity;public class Book {//图书 mysql - BookManage . Book    //图书编号private int id;    //图书名private String name;    //作者名private String author;    //购入时间private String time;    //图书类型 - Type类 包含id(类型编号)与name(类型名)private Type type;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public String getTime() {return time;}public void setTime(String time) {this.time = time;}public Type getType() {return type;}public void setType(Type type) {this.type = type;}}(3.2)src - jdbc - Entity - Type[类型][实体类]package Jdbc.Entity;public class Type {//图书类型 mysql - BookManage . Type    //图书类型编号private int id;    //图书类型名private String name;    //无参构造方法public Type(){}    //有参构造方法 方便赋值 不用再进行type.setId()...public Type(int id, String name) {this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}(4)src - jdbc - Dao

Dao中包含了方法的定义,需要什么方法就写什么方法

接口中的方法默认使用abstract修饰,不可以有方法体

但可以使用default把abstract覆盖掉

(4.1)src - jdbc - Dao - BookDao[图书][Dao接口]package Jdbc.Dao;import Jdbc.Entity.Book;import java.util.List;public interface BookDao {//获取所有书籍数据 Book - index.jsp/selectServlet -List<Book> getAllBook();//增加一条数据 Book - insert.jsp/insertServlet -boolean insertBook(String name,String author,String time,int type);//删除一条数据 Book - index.jsp/deleteServlet -boolean deleteBook(int id);}(4.2)src - jdbc - Dao - TypeDao[类型][Dao接口]package Jdbc.Dao;import Jdbc.Entity.Type;import java.util.List;public interface TypeDao {//获取所有类型信息 Type - insert.jsp/Servlet -List<Type> getAllType();}(5)src - jdbc - Impl

Impl通过implements Dao 来实现Dao中的抽象方法

impl一般来说都是默认类 不会是接口或抽象类 因为没有意义

(5.1)src - jdbc - Impl - BookDaoImpl(BookDao)[图书][Dao接口实现类]package Jdbc.Impl;import Jdbc.Dao.BookDao;import Jdbc.Entity.Book;import Jdbc.Entity.Type;import Jdbc.Tool.BookManageOper;import Jdbc.Tool.Page;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;public class BookDaoImpl implements BookDao {    //连接数据库与处理sqlConnection connection=null;PreparedStatement preparedStatement=null;ResultSet resultSet=null;@Overridepublic List<Book> getAllBook() {//获取所有书籍数据//当获取书籍时 首先重新加载一下记录Page page=Page.getPage();page.loadSumRecord();        //先创建一个List 之后直接Return ListList<Book> bookList=new ArrayList<>() ;try{connection=BookManageOper.create();            //查询图书表中的x-x行数据 并查询它对应的类型名String sql="select b.*,t.* from book b,type t where b.type=t.id limit ?,?";preparedStatement=connection.prepareStatement(sql);            // row * ( page - 1 ) 5 * (2-1) = 5 不在前五行int Limit1=page.getShowPage()*(page.getThisPage()-1);preparedStatement.setInt(1, Limit1);preparedStatement.setInt(2, page.getShowPage());resultSet=preparedStatement.executeQuery();            //返回不确定行或多行的查询sql语句 使用whilewhile (resultSet.next()){                 //创建一个book对象 并将数据库中的值赋给这个对象Book book=new Book();book.setId(resultSet.getInt("b.id"));book.setName(resultSet.getString("b.name"));book.setAuthor(resultSet.getString("b.author"));book.setTime(resultSet.getString("b.time"));book.setType(new Type(resultSet.getInt("t.id"),resultSet.getString("t.name")));                 //将当前对象加入到list中bookList.add(book);}System.out.println("Impl - BookDaoImpl - getAllBook() ReturnListCount : "+bookList.size());}catch (Exception ex){ex.printStackTrace();System.out.println("Impl - BookDaoImpl - getAllBook() Error");}finally {BookManageOper.close(connection,preparedStatement,resultSet);}return bookList;}@Overridepublic boolean insertBook(String name,String author,String time,int type) {//添加一条数据boolean Return=false;try{connection=BookManageOper.create();            //增加一条数据 因为id为自增 所以会自动赋值String sql="insert into book(name,author,time,type) values (?,?,?,?)";preparedStatement=connection.prepareStatement(sql);preparedStatement.setString(1,name);preparedStatement.setString(2,author);preparedStatement.setString(3,time);preparedStatement.setInt(4,type);            //执行返回影响行数的sql使用Updateint ReturnInt=preparedStatement.executeUpdate();            //返回行数大于0则成功if(ReturnInt>0)Return=true;System.out.println("Impl - BookDaoImpl - insertBook(s,s,s,i) Return : "+Return);}catch (Exception ex){ex.printStackTrace();System.out.println("Impl - BookDaoImpl - insertBook(s,s,s,i)");}finally {BookManageOper.close(connection,preparedStatement,resultSet);}return Return;}@Overridepublic boolean deleteBook(int id) {//删除一条数据boolean Return=false;try{connection=BookManageOper.create();            //根据id删除一条数据 因为id是唯一的String sql="delete from book where id=?";preparedStatement=connection.prepareStatement(sql);preparedStatement.setInt(1,id);int ReturnInt=preparedStatement.executeUpdate();if(ReturnInt>0)Return=true;System.out.println("Impl - BookDaoImpl - insertBook(s,s,s,i) Return : "+Return);}catch (Exception ex){ex.printStackTrace();System.out.println("Impl - BookDaoImpl - deleteBook(s) Error");}finally {BookManageOper.close(connection,preparedStatement,resultSet);}return Return;}}(5.2)src - jdbc - Impl - TypeDaoImpl(TypeDao)[类型][Dao接口实现类]package Jdbc.Impl;import Jdbc.Dao.TypeDao;import Jdbc.Entity.Type;import Jdbc.Tool.BookManageOper;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;public class TypeDaoImpl implements TypeDao {Connection connection=null;PreparedStatement preparedStatement=null;ResultSet resultSet=null;@Overridepublic List<Type> getAllType() {//获取所有的图书类型List<Type> typeList = new ArrayList<>();try{connection=BookManageOper.create();String sql="select * from type";preparedStatement=connection.prepareStatement(sql);resultSet=preparedStatement.executeQuery();while (resultSet.next()){Type type=new Type();type.setId(resultSet.getInt("id"));type.setName(resultSet.getString("name"));typeList.add(type);}System.out.println("Impl - TypeDaoImpl - getAllType() - ReturnListCount : "+typeList.size());}catch (Exception ex){ex.printStackTrace();System.out.println("Impl - TypeDaoImpl - getAllType() Error");}finally {BookManageOper.close(connection,preparedStatement,resultSet);}System.out.println("Impl - TypeDaoImpl - getAllType() 完成");System.out.println();return typeList;}}web && src - Servlet(1)web - web_inf(1.1)web - web_inf - web.xml[Web配置文件]

web.xml是web程序的配置文件,它很重要!!!没有配置web.xml的话会报大错

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!--启动时的欢迎页面 修改只需要修改welcome-file--><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!--Servlet的映射 Servlet如果不进行映射则不会被外部所访问--><servlet><servlet-name>SelectServlet</servlet-name><servlet-class>Servlet.SelectServlet</servlet-class></servlet><servlet-mapping><servlet-name>SelectServlet</servlet-name><url-pattern>/SelectServlet</url-pattern></servlet-mapping><servlet><servlet-name>InsertServlet</servlet-name><servlet-class>Servlet.InsertServlet</servlet-class></servlet><servlet-mapping><servlet-name>InsertServlet</servlet-name><url-pattern>/InsertServlet</url-pattern></servlet-mapping><servlet><servlet-name>deleteServlet</servlet-name><servlet-class>Servlet.deleteServlet</servlet-class></servlet><servlet-mapping><servlet-name>deleteServlet</servlet-name><url-pattern>/deleteServlet</url-pattern></servlet-mapping><servlet><servlet-name>PageServlet</servlet-name><servlet-class>Servlet.PageServlet</servlet-class></servlet><servlet-mapping><servlet-name>PageServlet</servlet-name><url-pattern>/PageServlet</url-pattern></servlet-mapping></web-app>(2)web - *.jsp 与其相对应的Servlet(2.1)web - index页面(2.1.1)web - index.jsp[首页][Jsp页面]<%@ page import="java.util.List" %><%@ page import="Jdbc.Entity.Book" %><%@ page import="Jdbc.Tool.Page" %><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%@ page contentType="text/html;charset=UTF-8" language="java" %><%--Created by IntelliJ IDEA.User: 30974Date: 2023/1/9Time: 20:33To change this template use File | Settings | File Templates.--%><link rel="shortcut icon" href="#"><html><head><title>个人图书管理</title><%--<meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"/>--%><%--<link rel="stylesheet" type="text/css" href="css/bootstrap.css"/>--%></head><body><%Page page1=Page.getPage();List<Book> bookList=(List<Book>) session.getAttribute("bookList");if(bookList==null){request.getRequestDispatcher("SelectServlet").forward(request,response);}//else如果删掉 session一直有值 就不会再次进入获取bookList 会造成页面数据不刷新else{session.setAttribute("bookList",null);}%><h1>图书信息</h1><table border="1"><tr><td>图书名称</td><td>图书作者</td><td>购买时间</td><td>图书分类</td><td>操作</td></tr><%for (Book b : bookList) {out.print("<tr id=trid"+b.getId()+">" +"<td>"+b.getName()+"</td>" +"<td>"+b.getAuthor()+"</td>" +"<td>"+b.getTime()+"</td>" +"<td>"+b.getType().getName()+"</td>" +"<td><span class=delete bookid="+b.getId()+">删除</span></td>" +"</tr>");}%></table><p><%--设置toPageType 使pageServlet能够识别进行哪种操作--%><a href="PageServlet?toPageType=First">首页</a><a href="PageServlet?toPageType=Prev">上一页</a><span><%=page1.getThisPage()%>/<%=page1.getSumPage()%></span><a href="PageServlet?toPageType=Next">下一页</a><a href="PageServlet?toPageType=Last">尾页</a></p><a href="Insert.jsp">新增图书信息</a><script src="JS/jquery-1.12.4.js"></script><script src="JS/bootstrap.js"></script><script>$(function(){setOddBack()})function setOddBack(){$("tr:odd").css("background","gray");$("tr:even").css("background","none");}$(".delete").click(function () {var bookid=$(this).attr("bookid");//confirm 根据点击的按钮返回true falsevar deleteIs=confirm("确定要删除编号"+bookid+"的书籍吗?");//如果点击确定 那么进入deleteServletif(deleteIs==true){location.href="deleteServlet?bookid="+bookid;}})<%//删除操作进行后根据return值进行弹框String delIs=request.getParameter("delIs");if (delIs!=null){if(delIs.equals("delTrue")){%>alert("删除成功");<%}else{%>alert("删除失败");<%}}%></script></body></html>(2.1.2)web - SelectServlet (index.jsp)[查询][Servlet]package Servlet;import Jdbc.Dao.BookDao;import Jdbc.Impl.BookDaoImpl;import Jdbc.Entity.Book;import javafx.application.Application;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 javax.servlet.http.HttpSession;import java.io.IOException;import java.util.List;@WebServlet(name = "SelectServlet")public class SelectServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//当前doPost()暂无作用System.out.println();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//当前doGet()用于页面中Session - bookList的初始化//创建Jdbc - Impl - BookDaoImpl实例BookDao bookDao=new BookDaoImpl();//获取book中所有数据List<Book> bookList=bookDao.getAllBook();//将book表中的数据存入Session - bookList中HttpSession session=request.getSession();session.setAttribute("bookList",bookList);//跳转到jsp页面request.getRequestDispatcher("index.jsp").forward(request,response);System.out.println();}}(2.1.3)web - deleteServlet(index.jsp)[删除][Servlet]package Servlet;import Jdbc.Dao.BookDao;import Jdbc.Impl.BookDaoImpl;import Jdbc.Tool.Page;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 java.io.IOException;import java.io.PrintWriter;@WebServlet(name = "deleteServlet")public class deleteServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String idString=request.getParameter("bookid");int id=Integer.parseInt(idString);BookDao bookDao=new BookDaoImpl();        //根据id删除一条数据 返回true成功/false失败boolean ReturnIs=bookDao.deleteBook(id);        //如果成功将index.jsp中的delIs设为delTrue 否则设为delFalseif(ReturnIs==true){request.getRequestDispatcher("index.jsp?delIs=delTrue").forward(request,response);}else{request.getRequestDispatcher("index.jsp?delIs=delFalse").forward(request,response);}}}(2.1.4)web - PageServlet(index.jsp)[分页][Servlet]package Servlet;import Jdbc.Tool.Page;import com.mysql.cj.Session;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 javax.servlet.http.HttpSession;import java.io.IOException;@WebServlet(name = "PageServlet")public class PageServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String toPageType=request.getParameter("toPageType");Page page=Page.getPage();        //switch判断是什么操作 执行对应的代码switch (toPageType){case "First":page.setThisPage(1);break;case "Prev":page.setThisPage(page.getThisPage()-1);break;case "Next":page.setThisPage(page.getThisPage()+1);break;case "Last":page.setThisPage(page.getSumPage());break;}HttpSession session=request.getSession();session.setAttribute("bookList",null);//这里不能使用转发 使用转发会出现thisPage多次++的问题response.sendRedirect("index.jsp");}}(2.1)web - insert页面(2.2)web - insert.jsp[添加][Jsp页面]<%@ page import="java.util.List" %><%@ page import="Jdbc.Entity.Type" %><%@ page import="java.util.ArrayList" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ page import="com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer" %><%@ page import="java.util.Date" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ page import="java.text.SimpleDateFormat" %><%--Created by IntelliJ IDEA.User: 30974Date: 2023/1/10Time: 11:30To change this template use File | Settings | File Templates.--%><html><head><title>添加图书</title></head><body><%if(session.getAttribute("typeList")==null) {request.getRequestDispatcher("InsertServlet").forward(request, response);}    //获取一个本日时间,年-月-日 格式SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");String thisDay=simpleDateFormat.format(new Date());request.setAttribute("thisDay",thisDay);%><form method="post" action="InsertServlet"><p>图书名称<input type="text" name="insertName" required></p><p>图书作者<input type="text" name="insertAuthor" required></p><p>            //购入时间默认为本日 并且最大为本日购入时间<input type="date" name="insertTime" value="${thisDay}" max="${thisDay}" min="2000-01-01" required></p><p>图书类别<select name="insertType" required><c:forEach items="${sessionScope.typeList}" var="t" varStatus="status"><option value="${t.getId()}">${t.getName()}</option></c:forEach></select></p><p><input type="submit" id="insertSub" value="增加图书"></p></form><script src="JS/jquery-1.12.4.js"></script><script>function goIndex() {location.href="index.jsp"}<%String insIs=request.getParameter("insIs");if (insIs!=null){if(insIs.equals("insTrue")){%>var conIs=confirm("添加成功(确定继续添加,取消返回首页)");if(conIs==false){goIndex();}else{;}<%}else{%>alert("添加失败");<%}}%></script></body></html>(2.2.1)web - InsertServlet(Insert.jsp)[添加][Servlet]package Servlet;import Jdbc.Dao.BookDao;import Jdbc.Dao.TypeDao;import Jdbc.Entity.Type;import Jdbc.Impl.BookDaoImpl;import Jdbc.Impl.TypeDaoImpl;import com.mysql.cj.Session;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 javax.servlet.http.HttpSession;import java.io.IOException;import java.util.List;@WebServlet(name = "InsertServlet")public class InsertServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//当前doPost()方法用于向BookManage - Book表中添加一条数据//设置获取的字符编码格式为utf-8request.setCharacterEncoding("utf-8");//获取所有需要添加的字段String name=request.getParameter("insertName");String author=request.getParameter("insertAuthor");String time=request.getParameter("insertTime");String typeString=request.getParameter("insertType");int type=Integer.parseInt(typeString);//创建Jdbc - Impl - BookDaoImpl实例BookDao bookDao=new BookDaoImpl();//进行添加 并返回是否添加成功(t/f)boolean insertIs=bookDao.insertBook(name,author,time,type);//跳转到jsp页面if(insertIs==true){request.getRequestDispatcher("Insert.jsp?insIs=insTrue").forward(request,response);}else{request.getRequestDispatcher("Insert.jsp?insIs=insFalse").forward(request,response);}System.out.println();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//当前doGet()用于页面中Session - typeList的初始化//创建Jdbc - Impl - TypeDaoImpl实例TypeDao typeDao=new TypeDaoImpl();//获取Type表中的所有数据List<Type> typeList=typeDao.getAllType();//将Type表中的数据添加到Session - typeList中,以便jsp页面进行使用HttpSession session=request.getSession();if(typeList!=null)session.setAttribute("typeList",typeList);//跳转到jsp页面request.getRequestDispatcher("Insert.jsp").forward(request,response);System.out.println();}}六.结尾

图书管理系统还是能够做为检测自己JavaWeb基础语法与逻辑的一个项目

第一次写文章 逻辑有点乱 不过总算也是写完了

有什么更好的想法欢迎大佬们指正留言!

本文链接地址:https://www.jiuchutong.com/zhishi/299435.html 转载请保留说明!

上一篇:this.$router.push点了后hash地址改变了,页面却不跳转

下一篇:【微信小程序】一文解忧,事件绑定(微信小程序游戏手游排行榜)

  • 教你怎样给你的微博营销化化妆?(如何给一个)

    教你怎样给你的微博营销化化妆?(如何给一个)

  • 三星galaxy camera(三星galaxy camera)(三星GALAXY Note8)

    三星galaxy camera(三星galaxy camera)(三星GALAXY Note8)

  • realmegt大师探索版是lpddr5吗

    realmegt大师探索版是lpddr5吗

  • 企业微信怎么群发消息(企业微信怎么群发小程序)

    企业微信怎么群发消息(企业微信怎么群发小程序)

  • 快对作业怎么拍照搜题(快对作业怎么拍答案)

    快对作业怎么拍照搜题(快对作业怎么拍答案)

  • 华为荣耀10手机音量小怎么办(华为荣耀10手机壳)

    华为荣耀10手机音量小怎么办(华为荣耀10手机壳)

  • 苹果x怎么添加门禁卡(苹果x怎么添加钥匙)

    苹果x怎么添加门禁卡(苹果x怎么添加钥匙)

  • qq扩列匹配不了(为啥qq扩列匹配不到人)

    qq扩列匹配不了(为啥qq扩列匹配不到人)

  • 苹果发表情短信要钱吗(苹果手机发表情短信)

    苹果发表情短信要钱吗(苹果手机发表情短信)

  • 拼多多突然不能用花呗(拼多多突然不能退货包运费)

    拼多多突然不能用花呗(拼多多突然不能退货包运费)

  • poe摄像头可以12v供电吗(poe摄像头可以单独供电吗)

    poe摄像头可以12v供电吗(poe摄像头可以单独供电吗)

  • 苹果6sp突然没声音了怎么回事(苹果6sp突然没声音了)

    苹果6sp突然没声音了怎么回事(苹果6sp突然没声音了)

  • 钉钉呼叫受限什么意思(钉钉呼叫时对方呼叫受限)

    钉钉呼叫受限什么意思(钉钉呼叫时对方呼叫受限)

  • 快捷指令里没有NFC(快捷指令里没有考勤打卡)

    快捷指令里没有NFC(快捷指令里没有考勤打卡)

  • 微信语音无应答是关机了吗(微信语音无应答对方能看到吗)

    微信语音无应答是关机了吗(微信语音无应答对方能看到吗)

  • 电脑长时间开机的危害(电脑长时间开机后自动关机)

    电脑长时间开机的危害(电脑长时间开机后自动关机)

  • 华为智慧视觉什么东西(华为智慧视觉点了没反应)

    华为智慧视觉什么东西(华为智慧视觉点了没反应)

  • 天猫发错货赔偿规则(天猫发错货赔偿多少)

    天猫发错货赔偿规则(天猫发错货赔偿多少)

  • 一个手机号能申请几个快手(一个手机号能申请几个支付宝账号)

    一个手机号能申请几个快手(一个手机号能申请几个支付宝账号)

  • iphone怎么设置手机铃声(iphone怎么设置手势功能)

    iphone怎么设置手机铃声(iphone怎么设置手势功能)

  • iphone5已停用怎么解锁(iphone5已停用怎么解锁教程)

    iphone5已停用怎么解锁(iphone5已停用怎么解锁教程)

  • vue如何让照片全显示(vue如何调整图片顺序)

    vue如何让照片全显示(vue如何调整图片顺序)

  • 一加7T Pro怎么关闭振动(一加7pro如何关闭volte)

    一加7T Pro怎么关闭振动(一加7pro如何关闭volte)

  • 小米6x信号不好怎么办(小米6x信号不好时响玲怎么关闭)

    小米6x信号不好怎么办(小米6x信号不好时响玲怎么关闭)

  • iphone7电池容量(iphone7电池容量78%)

    iphone7电池容量(iphone7电池容量78%)

  • 淘宝pc端是什么意思(淘宝pc版是什么)

    淘宝pc端是什么意思(淘宝pc版是什么)

  • 快手绑定的手机号不用了怎么办(快手绑定的手机号不能用了登不上去怎么办)

    快手绑定的手机号不用了怎么办(快手绑定的手机号不能用了登不上去怎么办)

  • phpcms根目录在哪(php网站根目录)

    phpcms根目录在哪(php网站根目录)

  • 公司替员工承担个税怎么入账
  • 装修收入应如何确定
  • 代缴税费
  • 房地产企业递延所得税资产计算方法
  • 计提城市维护建设费和教育费附加的会计分录
  • 劳务派遣人员保险由谁缴纳
  • 民营医院的财务管理制度
  • 购买电商平台
  • 小规模纳税人普票收入会计分录
  • 无偿划拨资产的入账价值
  • 法人把自己的车租给公司交什么税
  • 医院员工工资表模板
  • 注销了出口退税怎么办
  • 如何确定核定征收的应税所得率
  • 公司采购报销没发票
  • 企业弥补亏损的三个途径
  • 复式记账法哪本书提到过?
  • 税控机减免税额怎么算
  • 普票丢失用第一联的复印件入账可以么
  • 房租收入应该计入什么
  • 董事费监事费高管薪酬标准
  • 税务局如何检查上传的发票
  • 一卡通充值计入什么费
  • 应付职工薪酬所得税汇算清缴
  • 企业公司报税流程
  • 大巴车票抵扣税率
  • 公司充加油卡发票税额为0 怎么入账
  • 技术转让减免所得额
  • 地价计入房产
  • 管理会计完全成本法和变动成本法例题
  • 发出的货物可以要求退回吗
  • 系统更新没有推送
  • 房地产行业需要做环评吗
  • 保护电脑安全的主要方式
  • win10开机启动文件路径
  • 企业亏损可以不缴纳公积金吗
  • 安装监控违法吗
  • 母子公司吸收合并优劣势
  • 员工罚款算收入吗
  • 关闭windows安全中心拦截
  • 无线路由器如何桥接wifi信号
  • 小规模纳税人多久缴纳一次增值税
  • php缓存数据到内存
  • 出差补贴如何入账报销
  • php图像
  • Android ImageView使用详解(系列教程三)
  • 什么是半监督算法
  • java是什么意思
  • 工会经费的使用范围有哪些
  • 企业研发支出的最佳占比
  • python {:s}
  • 新会计准则里的机械作业是什么
  • 欠款收不回来了会计分录
  • 银行贷款是应付账款吗
  • 购销合同印花税计税依据
  • 报废产品账务的处理方法
  • 贸易公司如何结转销售成本
  • 商场联营扣点的合作方式
  • 房租收入怎么确认收入
  • 购入固定资产预计净残值
  • 开具其他发票收入填报异常
  • 无形资产入股交税吗
  • 高速etc发票如何打印
  • 建账基本要求
  • 销售费用明细科目里有什么
  • 准确配置
  • centos访问网页命令
  • ubuntu怎么root权限
  • pycharm下载安装
  • iframe内容自适应缩放
  • jquery jsonview
  • js定义json对象
  • javascript+css3 实现动态按钮菜单特效
  • Forward Render VS Deferred Rendering
  • jquery教程
  • 如何使用jquery
  • 沉浸式模式
  • 个体工商户年报补报流程
  • 公允价值变动损益属于什么科目
  • 电子税务局怎么添加开票员
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设