利用Spring框架在前端实现对数据库的增删改查

2023-11-16

在前端页面上显示购物数据库数据,并且可以这增、删、改、查

1.首先在WEB 配置文件

<!-- 配置DispatcherServlet -->
  <servlet>
  <servlet-name>springmvc</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:spring-mvc2.xml</param-value>
  </init-param>
  </servlet>
  <servlet-mapping>
  <servlet-name>springmvc</servlet-name>
  <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <!-- 利用过滤器,解决中文乱码问题-->
  <filter>
  <filter-name>encodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  
  <!-- 初始化编码指令 -->
  <init-param>
  <param-name>encoding</param-name>
  <param-value>UTF-8</param-value>
  </init-param>
  </filter>
  <!-- 过滤器的映射 -->
  <filter-mapping>
  <filter-name>encodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>

2、配置spring-mvc2.xml文件

<!--2. 开启注解扫描 -->
	<context:component-scan base-package="com.zhiyou100"/>

	<!-- 3.开启MVC注解扫描 -->
	<mvc:annotation-driven />

	<!--4. 定义视图解析器 -->
	<!-- 定义视图解析器ViewResovler -->
	<bean id="viewResovler"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/" />
		<property name="suffix" value=".jsp" />
	</bean>
	<!-- 数据源 -->
	<bean   id="ds"  class="org.apache.tomcat.dbcp.dbcp.BasicDataSource">
	<property name="url" 
		value="jdbc:mysql://localhost:3306/user?useUnicode=true&amp;characterEncoding=utf-8"/>
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="username" value="root"/>
    <property name="password" value="123456"/>
	</bean>
	<!-- session工厂 -->
	<bean   id="sqlSessionFactory"   
	class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource"  ref="ds"/>
	<property name="mapperLocations"
	 value="classpath:com/zhiyou100/mapper/*.xml"/>
	</bean>
	<!-- 扫描指定包下的接口,自动扫包,并产生实例   模糊扫描-->
	<bean  class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	<property name="basePackage" value="com.zhiyou100.Dao"/>
	</bean>

3.创建com.zhiyou100.entity.Shop

package com.zhiyou100.entity;

public class Shop {
 private Integer sid;
 private String sname;
 private Double price;
 private String dese;
public Integer getSid() {
	return sid;
}
public void setSid(Integer sid) {
	this.sid = sid;
}
public String getSname() {
	return sname;
}
public void setSname(String sname) {
	this.sname = sname;
}
public Double getPrice() {
	return price;
}
public void setPrice(Double price) {
	this.price = price;
}
public String getDese() {
	return dese;
}
public void setDese(String dese) {
	this.dese = dese;
}

 
}

4.创建com.zhiyou100.Dao.ShopMapper 接口,以实现对数据库进行增删改查、

package com.zhiyou100.Dao;
import java.util.List;
import com.zhiyou100.entity.Shop;
public interface ShopMapper {
List<Shop> findAll();
List<Shop> findById(int sid);
Shop find(int sid);
void save(Shop shop);
void update(Shop shop);
void delete(int sid);
}

5.利用Mapper实现接口的方法,创建com.zhiyou100.Mapper.ShopMapper

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"      
 "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper  namespace="com.zhiyou100.Dao.ShopMapper">
<select id="findAll"
         parameterType="com.zhiyou100.entity.Shop" 
         resultType="com.zhiyou100.entity.Shop">
         select *from shopping
</select>
<select id="findById" parameterType="integer"
        resultType="com.zhiyou100.entity.Shop">
        select *from shopping where sid=#{sid}
</select>
<select id="find" parameterType="integer"
        resultType="com.zhiyou100.entity.Shop">
        select *from shopping where sid=#{sid}
</select>
<insert id="save"  parameterType="com.zhiyou100.entity.Shop">
insert into shopping values(null,#{sname},#{dese},#{price})
</insert>
<update id="update"  parameterType="com.zhiyou100.entity.Shop" >
update shopping set sname=#{sname},dese=#{dese},price=#{price} where sid=#{sid}
</update>
<delete id="delete" parameterType="int">
        delete from shopping where sid=#{sid}
</delete>
</mapper>

6、创建com.zhiyou100.ShopService,用于前段进行增删改查

public interface ShopService {
    List<Shop> findAll();
   List<Shop> findById(int sid);
    void save(Shop shop);
    void update(Shop shop);
    void delete(int sid);
    
}

7、创建com.zhiyou100.ShopServiceImp,实现对前段增删改查

package com.zhiyou100.SericeImp;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;

import com.zhiyou100.Dao.ShopMapper;
import com.zhiyou100.entity.Shop;
import com.zhiyou100.serivce.ShopService;
@Controller
public class shopSerivceImp  implements ShopService{
@Resource
private ShopMapper shopMapper;
	public List<Shop> findAll() {
		
		return shopMapper.findAll();
	}

	public List<Shop> findById(int sid) {
		
		return  shopMapper.findById(sid);
	}

	public void save(Shop shop) {
		   shopMapper.save(shop);
		
	}

	public void update(Shop shop) {
		// TODO Auto-generated method stub
		shopMapper.update(shop);
	}

	public void delete(int sid) {
		// TODO Auto-generated method stub
		shopMapper.delete(sid);
	}

}

8.创建com.zhiyou100.ShopController,是对前端进行控制,实现页面的跳转


package com.zhiyou100.controller;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.zhiyou100.entity.Shop;
import com.zhiyou100.serivce.ShopService;
@Controller
@RequestMapping("/shop")
public class ShopController {
	@Resource
	private ShopService shopService;

	@RequestMapping("/findAll.do")
	public String findAll(Model model) {
		List<Shop> list = shopService.findAll();
		model.addAttribute("shops", list);
		return "shop/list";
	}
 
	@RequestMapping("/update.do")
	public String findById(Model model, int sid) {
		List<Shop> list = shopService.findById(sid);
		model.addAttribute("shop", list);
		return "shop/update";
	}

	@RequestMapping("/save.do")
	public String Save() {
		return "shop/save";
	}

	@RequestMapping("/commit.do")
	public String save(Shop shop) {
		shopService.save(shop);
		return "redirect:../shop/findAll.do";
	}

	@RequestMapping("/cot.do")
	public String update(Shop shop) {
		shopService.update(shop);
	
	return "redirect:../shop/findAll.do";
	}

	@RequestMapping("/delete.do")
	public String detele(int sid) {
		shopService.delete(sid);
		return "redirect:../shop/findAll.do";
	}
}

2、在WEB-INT下创建shop文件夹,是前端页面

2.1、 查看shop信息情况,list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>购物订单界面</title>
</head>
<body>
<div class="box">
	<h3>购物订单界面</h3>
	<table border="10" width=60%>
		<tr>
			<th>用户账号</th>
			<th>用户名</th>
			<th>备注</th>
			<th>商品价格</th>
			<th>操作</th>
		</tr>
		<c:forEach items="${shops}" var="s">
			<tr>
				<td>${s.sid }</td>
				<td>${s.sname }</td>
				<td>${s.dese}</td>
				<td>${s.price }</td>
				<td><a   href="save.do">     <input value="添加"></a>
					<a href="update.do?sid=${s.sid} "><input value="更改"></a> 
					<a href="delete.do?sid=${s.sid}"><input value="删除"></a>
					</td>
		</c:forEach>
	</table>
	</div>
</body>
</html>

2.2 、添加物品情况。save.jsp

<%@ 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>
<div class="box">
<h3>添加用户信息</h3>
	<form action="commit.do" method="post">
		<table>
			<tr>
				<td>
				<td>用户名</td>
				<td colspan="3" class="control"><input type="text" name="sname"
					placeholder="用户名"></td>
			</tr>
			<tr>
				<td>商品价格</td>
				<td colspan="3" class="control"><input type="text" name="price"
				placeholder="商品价格"	></td>
			</tr>
			<tr>
				<td>备注</td>
				<td colspan="3" class="control"><input type="text" name="dese"
					placeholder="备注"></td>
			</tr>
		</table>
		<div class="buttons">
			${fail}<br> 
			<input class="btn btn-primary va-bottom"
				type="submit" value="保存">
				&nbsp;&nbsp; 
				<a class="btn btn-default" href="javascript:history.go(-1)">返回</a>
		</div>
	</form>
	</div>
</body>
</html>

2.3、修改物品信息。update.jsp

 <%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
	  
	  <%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div class="box">
<h3>更改用户信息</h3>
	<form action="cot.do" method="post">
		<table  >
		    <c:forEach items="${shop}" var="s"> 
			<tr>
				<td>
				<td>用户名</td>
				<td colspan="3" class="control"><input type="text" name="sname"
					placeholder="用户名" value="${s.sname}"></td>
			</tr>
			<tr>
				<td>备注</td>
				<td colspan="3" class="control"><input type="text" name="dese"
					placeholder="备注"   value="${s.dese}"></td>
			</tr>
			<tr>
				<td>商品价格</td>
				<td colspan="3" class="control"><input type="text" name="price"
				placeholder="商品价格"	value="${s.price}"></td>
			</tr>
			</c:forEach>
		</table>
		<div class="buttons">
			${fail}<br> 
			<input class="btn btn-primary va-bottom"
				     type="submit" value="保存">
				&nbsp;&nbsp; 
				<a class="btn btn-default" href="javascript:history.go(-1)">返回</a>
		</div>
	</form>
	</div>
</body>
</html>

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用Spring框架在前端实现对数据库的增删改查 的相关文章

  • 数据库--商品 表的设计

    目录 商品分类表 商品品牌表 商品分类表 tb item cat 树状结构 CREATE TABLE tb item cat id bigint 20 NOT NULL AUTO INCREMENT COMMENT 类目ID parent
  • GBDT调库代码示例

    二 使用GBDT预测新能源汽车充电桩的故障检测问题 55分 请你用训练数据构建相应的模型 并将模型进行保存 import matplotlib pyplot as plt 正常显示中文及字符 plt rcParams font family
  • python中返回上一步操作_通过实例解析Python文件操作实现步骤

    当程序运行时 变量是保存数据的好方法 但变量 序列以及对象中存储的数据是暂时的 程序结束后就会丢失 如果希望程序结束后数据仍然保持 就需要将数据保存到文件中 Python 提供了内置的文件对象 以及对文件 目录进行操作的内置模块 通过这些技
  • Nginx启动只有master进程而没有worker进程

    大致按照下面文章的提示进行排查 https blog csdn net sinat 37729104 article details 102662475 https blog csdn net qt10086 article details
  • docker配置java环境和mysql数据库

    1 安装docker 1 安装命令 yum install docker 有提示直接y确认 2 设置开机自动启动 service docker start 3 查看版本 docker version 4 修改docker仓库地址 命令 vi
  • stm32定时器时钟源时钟选择,重点是外部时钟源1模式的理解

    stm32定时器时钟源时钟选择 stm32定时器时钟源时钟选择 有意义的参考 TI与ITRX的区别参考 https blog csdn net gtkknd article details 39292517 解析参考 https blog
  • Jenkins持续集成-实现自动向gitlab拉取代码并构建

    Jenkins服务操作 1 选择系统管理 gt 插件管理 gt 可选插件 gt 下载 gitlab 插件 2 选择新建任务 gt 构建 一个自由项目 2 填写相应的gitlab仓库地址和密钥信息 3 在 构建触发器 gt 选择 Buil w
  • [Java] 方法签名(method signature)

    方法头指定修饰符 例如static 返回值类型 方法名 和形式参数 方法头中定义的变量称为形参 形式参数 formal parameter 或 parameter 形参如同占位符 当方法被调用时 传递一个值给形参 此值称为实参 实际参数 a
  • python使用 pyinstaller -F -w file报PermissionError问题

    python使用 pyinstaller F w file报PermissionError问题 根据自己的情况 该报错重新安装pyinstaller 或者重启一下pycharm可以解决一次该问题 但是如果第二次打包就会报该问题 但是 经过验
  • 排序算法——比较类排序算法讲解以及c++实现

    首先我先抛一个老哥的博客 我是看着他的博客来学习理解 地址 https www cnblogs com onepixel p 7674659 html 首先说一下排序算法分为2类 一类是比较类排序算法 另一类是非比较类排序 这里主要讲常用的
  • 如何用数字化系统延长用户运营周期?如何建立数字化用户体系?

    如果说运营是进行用户引流 留存及转化的各个细分环节搭建 精细化运营便是针对各个细分环节 结合用户画像 人群定位 场景拆解及数据分析等细节 对用户展开有针对性的运营策略 要知道 运营需要以用户为中心 没有用户也就意味着没有收益 想要以用户为中
  • Java数字字符串的判断与转换

    文章目录 引言 一 判断字符串是否为数字 1 1 第三方包StringUtils isNumeric 1 2 Java自带方法Character isDigit 1 3 正则表达式 二 将字符串转化为数字 2 1 整数 2 2 小数 参考
  • PostgreSQL基础+部署

    什么是postgreSQL PostgreSQL是一个功能强大的开源对象关系型数据库系统 他使用和扩展了SQL语言 并结合了许多安全存储和扩展最复杂数据工作负载的功能 PostgreSQL的起源可以追溯到1986年 作为加州大学伯克利分校P
  • Gin 框架学习

    Gin 框架
  • python 异步共享变量问题记录

    draw boxes multiprocessing Manager list item name image name replace jpg logging info Working on format item name pool m
  • 计组——搞懂主存储器芯片之地址线数据线及片选线和读写控制线

    一块存储芯片完整的构造图如下 内部进行了封装 存储矩阵是由一个一个的存储元构成 译码驱动电路分为译码器和驱动器 译码器会输出某一条线路的高电平信号 驱动器是为了保证译码器输出的高电平稳定可靠的 可以理解为将电信号放大的部件 读写电路是连通存
  • 【DL with Pytorch】第 3 章 :使用 DNN 的分类问题

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • Python:使用os模块执行cmd命令

    大家好 我是wangzirui32 今天我们来学习如何让Python执行cmd命令 很简单 输入代码 from os import system 在system里放入需要执行的命令即可 这里我写的是ipconfig命令 ok system
  • NSI50150ADT4G TO-252 ON安森美 150-350mA 50V 4.2W LED驱动器 工业级规格认证

    NSI50150ADT4G TO 252 ON安森美 150 350mA 50V 4 2W LED驱动器 工业级规格认证 是一款可调恒流调节器 CCR 是一种简单的 高性能低成本产品 适用于为 LED 中的调节电流提供成本高效的方案 C该

随机推荐

  • XGBoost实战1:boston房价预测

    boston房价数据集包括506个样本 每个样本包括13个特征变量和该地区的平均房价 房价显然和多个特征变量相关 对于XGBoost模型 我们分别用两种方式来创建 本章学习以下内容 1 XGBoost两种方式建模以及所需参数 2 gridS
  • 使用mysql_upgrade升级mysql5.1至5.6的数据库升级实施方案

    本方案是因为在工作中遇到的一个mysql主从功能配置的问题所引起的 有一个处在从位置上的mysql是5 1版本的 从5 1到5 6的mysql各种系统管理功能 像系统表表结构 日志文件格式等等均不一致 这时直接以5 1版本去作为一个5 6版
  • 信安软考 第十二章 网络安全审计技术

    一 网络安全审计概述 网络安全审计是指对网络信息系统的安全相关活动信息进行获取 记录 存储 分析和利用的工作 网络安全审计的作用在于建立 事后 安全保障措施 保存网络安全事件及行为信息 为网络安全事件分析提供线索及证据 以便发现潜在的网络安
  • rocketMq启动broker报错找不到或无法加载主类 Files\Java\jdk1.8.0_171\lib\dt.jar;C:\Program]

    假如弹出提示框提示 错误 找不到或无法加载主类 xxxxxx 1 打开runbroker cmd 将 CLASSPATH 加上英文双引号 切勿别加中文双引号 2 打开runserver cmd 同理 将 CLASSPATH 加上英文双引号
  • hexo+GitHub Pages一键搭建部署博客

    文章目录 前言 博客相关配置 matery主题相关配置 1 什么是 Hexo 2 准备工作 3 生成博客 4 更换主题 5 部署到github pages 总结 前言 现在技术更新迭代是非常的快 尤其是web方面 所以当前搭建一个博客差不多
  • Ubuntu16.04安装ROS Kinetic详细步骤

    文章目录 ROS安装 配置Ubuntu软件仓库 设置sources list 设置密钥 更新Debian软件包索引 安装ROS 初始化 rosdep 环境配置 构建工厂依赖 测试安装 开发环境 ROS安装 ROS Kinetic只支持Wil
  • CompletableFuture使用(二)

    CompletableFuture创建异步任务后 get 方法是阻塞到Future完成后返回结果 对于构建异步系统 需要将回调附加到CompletableFuture上 当Future完成时自动调用 就可以使用thenApply thenA
  • 【直播+福利】生产压测环境,如何做好安全保障?

    互联网 数字经济的不断发展使得系统架构不断演变 实现了从 单线程 到 多线程 多组件 再到 分布式 微服务 的一个跨越 分布式系统的复杂程度是公认的 牵一发而动全身 想要保障系统的稳定可用是所有企业的共有难题 生产全链路压测应运而生 可实际
  • Ansible-角色部署LAMP

    配置主机 root ansible cd etc ansible root ansible ansible ls ansible cfg hosts roles root ansible ansible vim hosts dev node
  • [图文]Openfiler应用篇(四) FTP和Quota

    本篇我们讨论openfiler FTP和Quota 磁盘配额 的应用 openfiler FTP和Quota功能必须在开启帐户功能的条件下才能使用 一 FTP应用 1 开启FTP 点击主菜单Services 在Manage Services
  • git的使用和规划

    1 拉取项目 在拉取项目的时候使用git rebase 这样分支管理更加清晰 2 提交项目 commit的时候不要把不希望别人看到的改到都commit上 commit的时候 要检查修改的文件代码书写是否正确 下图中打钩文件为想要提交的文件
  • SQL中EXISTS理解使用

    SQL中EXISTS的理解使用 关联子查询 EXISTS理解使用 关联子查询 在讲述EXISTS用法之前 先讲述一下关联子查询 关联子查询 是指在内查询中需要借助于外查询 而外查询离不开内查询的执行 举个栗子 在Oracle中自带的EMP表
  • Objective-C块block介绍

    块的定义 返回值类型 形参类型 形参1 形参类型 形参2 块执行体 以上是一个块的写法 1 返回值类型可以省略 形参也可以参略 但是形参的括号不能参略 NSLog 123 通常我们需要反复调用块 因为块相当于一个匿名的函数 我们调用它时可以
  • 在VMware中设置ubuntu与Windows共享文件夹

    本机系统 win7 使用vmware安装的unbutu 之前在win7上下载了一些文档和软件 想在虚拟机中使用 结果发现读取不了这些文件 头疼了一下午 从网上搜索了很多资源 发现没有一个完整的文章可以一次搞定 头疼 这里就总结一下我的方法
  • I2C与SPI通信总线协议

    仅以寄存器地址为8Bit的器件为例 例如MPU6500 LSM6DS3 I2C通信协议 I2C 的要点是了解I2C通信帧的组成部分 START起始位 STOP停止位 ACK NACK信号 从机器件地址 从机寄存器地址 I2C读的时序比较繁琐
  • K8S访问控制------认证(authentication )、授权(authorization )体系

    一 账号分类 在K8S体系中有两种账号类型 User accounts 用户账号 即针对human user的 Service accounts 服务账号 即针对pod的 这两种账号都可以访问 API server 都需要经历认证 授权 准
  • Linux根目录爆满,解决(/dev/mapper/rhel-root 98%问题)

    1 首先确定是否是磁盘空间不足 输入命令 df h 查看磁盘信息 发现已经使用率达到96 所有需要删除大文件数据 2 其次查找大文件 du h max depth 1 命令代表寻找当前目录 哪个文件夹占用空间最大 进入根目录 root vl
  • 六级英语词汇

    genuine d enju n fake If this offer is genuine I will gladly accept it 如果这份帮助是真诚的 我将愉快地接受它 一 单词关 whereas we r z conj 然而
  • [YOLO专题-17]:YOLO V5 - 如何把YOLO训练数据集批量转换成带矩形框的图片

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122344955 目录 前言 第1章
  • 利用Spring框架在前端实现对数据库的增删改查

    在前端页面上显示购物数据库数据 并且可以这增 删 改 查 1 首先在WEB 配置文件