SSM架构(二)

接上一篇博客

SSM框架(一)-CSDN博客

2.4 Spring

2.4.1 Service设计

EmployeeService接口代码:

    List<Emp> search(Emp condition);Emp searchById(Integer id);boolean add(Emp emp);boolean update(Emp emp);boolean delete(Integer id);

EmployeeServiceImpl实现类代码:  

@Service
public class EmpServiceImpl implements EmpService {@AutowiredEmpDao empDao;@Overridepublic List<Emp> search(Emp condition) {List<Emp> list = empDao.search(condition);return list;}@Overridepublic Emp searchById(Integer id) {Emp emp = empDao.searchById(id);return emp;}@Overridepublic boolean add(Emp emp) {int rs = empDao.add(emp);return rs > 0;}@Overridepublic boolean update(Emp emp) {int rs = empDao.update(emp);return rs > 0;}@Overridepublic boolean delete(Integer id) {int rs = empDao.delete(id);return rs > 0;}
}
DepartmentService 接口代码:
    public List<Dep> search();public Dep searchById(Integer id);public boolean add(Dep dep);public boolean update(Dep dep);public boolean delete(Integer id);
DepartmentServiceImpl 实现类代码:
@Service
public class DepServiceImpl implements DepService {@AutowiredDepDao depDao;@AutowiredEmpDao empDao;@Overridepublic List<Dep> search() {List<Dep> list = depDao.search();return list;}@Overridepublic Dep searchById(Integer id) {Dep dep = depDao.searchById(id);return dep;}@Overridepublic boolean add(Dep dep) {int rs = depDao.add(dep);return rs > 0;}@Overridepublic boolean update(Dep dep) {int rs = depDao.update(dep);return rs > 0;}@Overridepublic boolean delete(Integer id) {int rs = depDao.delete(id);rs = empDao.updateByDep(id);return rs > 0;}
}

 2.5 Spring MVC

Spring MVCDispatcherServlet的使用与配置,基于注解映射机制。

2.5.1 Controller设计

EmployeeController实现代码:

@Controller
@RequestMapping("emp")
public class EmpController {@AutowiredEmpService empService;@AutowiredDepService depService;@RequestMapping("search")public ModelAndView search(Emp condition) {ModelAndView mv = new ModelAndView("emp/show");List<Emp> list = empService.search(condition);List<Dep> depList=depService.search();mv.addObject("list", list);mv.addObject("depList",depList);mv.addObject("c", condition);return mv;}@RequestMapping("showAdd")public ModelAndView showAdd() {ModelAndView mv = new ModelAndView("emp/add");List<Dep> depList = depService.search();mv.addObject("depList", depList);return mv;}@RequestMapping("add")public String add(Emp emp) {boolean flag = empService.add(emp);return "redirect:search";}@RequestMapping("showUpdate")public ModelAndView showUpdate(Integer id) {Emp emp = empService.searchById(id);List<Dep> depList = depService.search();ModelAndView mv = new ModelAndView("emp/update");mv.addObject("emp", emp);mv.addObject("depList", depList);return mv;}@RequestMapping(value="update")public String update(Emp emp) {boolean flag = empService.update(emp);return "redirect:search";}@RequestMapping("delete")public String delete(Integer id) {boolean flag = empService.delete(id);return "redirect:search";}
}
DepartmentController 实现代码:
@Controller
@RequestMapping("dep")
public class DepController {@AutowiredDepService depService;@RequestMapping("search")public ModelAndView search() {ModelAndView mv = new ModelAndView("dep/show");List<Dep> list = depService.search();mv.addObject("list", list);return mv;}@RequestMapping("showAdd")public String showAdd() {return "dep/add";}@RequestMapping("add")public String add(Dep dep) {boolean flag = depService.add(dep);return "redirect:search";}@RequestMapping("showUpdate")public ModelAndView showUpdat(Integer id) {ModelAndView mv = new ModelAndView("dep/update");Dep dep = depService.searchById(id);mv.addObject("dep", dep);return mv;}@RequestMapping("update")public String update(Dep dep) {boolean flag = depService.update(dep);return "redirect:search";}@RequestMapping("delete")public String delete(Integer id) {boolean flag = depService.delete(id);return "redirect:search";}
}

2.6 JSP(View)

2.6.1 emp

add.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head><title></title><style>#container {width: 700px;margin: 10px auto;}#container form .align {margin: 8px 0;}</style>
</head>
<body>
<div id="container"><form action="add"><div class="align"><label>编号</label><input type="text" placeholder="请输入编号"name="number"></div><div class="align"><label>名字</label><input type="text" placeholder="请输入名字" name="name"></div><div class="align"><label>性别</label><input type="radio" value="男" name="gender"/>男<input type="radio" value="女" name="gender"/>女</div><div class="align"><label>年龄</label><input type="text" placeholder="请输入年龄" name="age"></div><div class="align"><label>部门</label><select name="dep.id"><c:forEach var="dep" items="${depList }"><option value="${dep.id }">${dep.name }</option></c:forEach></select></div><div class="align"><button type="submit">保存</button></div></form>
</div>
</body>
</html>
show.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head><title>员工展示</title><style>#container {width: 700px;margin: 10px auto;}#container #search{overflow: hidden;}#container #search .align{float:left;margin-right:8px;}#container #search input{width:160px;}#container #data {clear: both;width: 700px;margin:10px 0;}</style>
</head>
<body>
<div id="container"><form id="search" action="search" method="post"><div class="align"><input type="text" name="number"placeholder="编号" value=${c.number}></div><div class="align"><input type="text" name="name"placeholder="姓名" value=${c.name}></div><div class="align"><select name="gender"><option value="">性别</option><option value="男" <c:if test="${c.gender =='男'}">selected</c:if>>男</option><option value="女" <c:if test="${c.gender =='女'}">selected</c:if>>女</option></select></div><div class="align"><input type="text" name="age" placeholder="年龄"value=${c.age!=null?c.age:''}></div><div class="align"><select name="dep.id"><option value="">部门</option><c:forEach items="${depList}" var="dep"><option value="${dep.id }"<c:if test="${dep.id ==c.dep.id}">selected</c:if>>${dep.name }</option></c:forEach></select></div><div class="align"><button type="submit">搜索</button></div></form><table id="data" border="1" ><tr><th>编号</th><th>名字</th><th>性别</th><th>年龄</th><th>部门</th></tr><c:forEach items="${list}" var="data"><tr><td>${data.number }</td><td>${data.name }</td><td>${data.gender }</td><td>${data.age }</td><td>${data.dep.name }</td></tr></c:forEach></table><button type="button" id="add">新增</button><button type="button" id="update">修改</button><button type="button" id="delete">删除</button>
</div>
</body>
</html>
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" %>
<html>
<head><title>修改员工</title><style>#container {width: 700px;margin: 10px auto;}#container form .align{margin:8px 0;}</style>
</head>
<body>
<div id="container"><form action="update"><input type="hidden" name="id" value="${emp.id}"><div class="align"><label>编号</label><input type="text" placeholder="请输入编号"name="number" value="${emp.number}"></div><div class="align"><label>名字</label><input type="text" placeholder="请输入名字"name="name" value="${emp.name}"></div><div class="align"><label>性别</label><input type="radio" value="男" name="gender"<c:if test="${emp.gender=='男'}">checked</c:if> />男<input type="radio" value="女" name="gender"<c:if test="${emp.gender=='女'}">checked</c:if> />女</div><div class="align"><label>年龄</label><input type="text" placeholder="请输入年龄" name="age"value="${emp.age}"></div><div class="align"><label>部门</label><select name="dep.id"><c:forEach var="dep" items="${depList }">2.6.2 depadd.jsp<option value="${dep.id }"<c:if test="${emp.dep.id==dep.id}">selected</c:if> >${dep.name }</option></c:forEach></select></div><div class="align"><button type="submit">保存</button></div></form>
</div>
</body>
</html>
2.6.2 dep
add.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8" %>
<html>
<head><title>部门新增</title><style>#container {width: 400px;margin: 10px auto;}#container form .align {margin: 8px 0;}</style>
</head>
<body>
<div id="container"><form action="add"><div class="align"><label>编号</label><input type="text" placeholder="请输入编号" name="number"></div><div class="align"><label>名称</label><input type="text" placeholder="请输入名称" name="name"></div><div class="align"><button type="submit">保存</button></div></form>
</div>
</body>
</html>
show.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head><title>部门展示</title><style>#container {width: 400px;margin: 10px auto;}#container #data {clear: both;width: 400px;margin: 10px 0;}</style>
</head>
<body>
<div id="container"><table id="data" border="1px"><tr><th>编号</th><th>名称</th></tr><c:forEach items="${list}" var="data"><tr><td>${data.number }</td><td>${data.name }</td></tr></c:forEach></table><button type="button" class="btn btn-primary" id="add">新增</button><button type="button" class="btn btn-primary" id="update">修改</button><button type="button" class="btn btn-danger" id="delete">删除</button>
</div>
</body>
</html>
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" %>
<html>
<head><title>部门修改</title><style>#container {width: 600px;margin: 10px auto;}#container form .align {margin: 8px 0;}</style>
</head>
<body>
<div id="container"><form action="update"><input type="hidden" name="id" value="${dep.id}"><div class="align"><label>编号</label><input type="text" placeholder="请输入编号" name="number"value="${dep.number}"></div><div class="align"><label>名称</label><input type="text" placeholder="请输入名称"name="name" value="${dep.name}"></div><div class="align"><button type="submit">保存</button></div></form>
</div>
</body>
</html>

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

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

相关文章

聊聊不再兼容安卓的鸿蒙

鸿蒙NExt已经确定不再兼容安卓系统&#xff0c;这意味着鸿蒙系统在更新迭代上将会展现出更加迅猛的速度。不过&#xff0c;这样的变化也给开发者们带来了不小的挑战。如今&#xff0c;鸿蒙的开发主要推荐使用的是ArkTS&#xff0c;而不是我们熟悉的Java SDK。对于大量习惯于使用…

【C++刷题】[UVA 489]Hangman Judge 刽子手游戏

题目描述 题目解析 这一题看似简单其实有很多坑&#xff0c;我也被卡了好久才ac。首先题目的意思是&#xff0c;输入回合数&#xff0c;一个答案单词&#xff0c;和一个猜测单词&#xff0c;如果猜测的单词里存在答案单词里的所有字母则判定为赢&#xff0c;如果有一个字母是答…

Unity3d开发google chrome的dinosaur游戏

游戏效果 游戏中&#xff1a; 游戏中止&#xff1a; 一、制作参考 如何制作游戏&#xff1f;【15分钟】教会你制作Unity小恐龙游戏&#xff01;新手15分钟内马上学会&#xff01;_ unity教学 _ 制作游戏 _ 游戏开发_哔哩哔哩_bilibili 二、图片资源 https://download.csdn.…

9.Kafka消费者API实践

目录 概述实践topic消费者效果 消费指定topic的某个分区代码效果kafka分区策略-Range 概述 Kafka消费者API实践 实践 topic # ./kafka-topics.sh --bootstrap-server localhost:9092 --create --partitions 3 --replication-factor 1 --topic test03 [roothadoop02 bin]# ./…

【问题解决】Jetson nano 安装pytorch使用GPU推理

一. 问题描述 安装 yolov8 后只调用cpu推理图片 二. 解决步骤 2.1 在推理环境下&#xff0c;执行下面命令卸载pytorch pip uninstall torch torchtext torchaudio2.2 下载PyTorch的依赖: sudo apt-get -y update; sudo apt-get -y install libopenblas-dev;###2.3 下载py…

深入全面概括C语言的运算符

目录 二.算术运算符 三.自增自减运算符 四.赋值运算符 五.关系运算符 六.逻辑运算符 七.三元运算符 九.运算符的优先级 一.前言 c语言的运算符可以分为六种&#xff0c;分别是&#xff1a;1.算术运算符&#xff1b;2.自增自减运算符&#xff1b;3.赋值运算符&#xff1b…

uniapp转小程序,小程序转uniapp方法

&#x1f935; 作者&#xff1a;coderYYY &#x1f9d1; 个人简介&#xff1a;前端程序媛&#xff0c;目前主攻web前端&#xff0c;后端辅助&#xff0c;其他技术知识也会偶尔分享&#x1f340;欢迎和我一起交流&#xff01;&#x1f680;&#xff08;评论和私信一般会回&#…

python-字符金字塔(赛氪OJ)

[题目描述] 请打印输出一个字符金字塔&#xff0c;字符金字塔的特征请参考样例。输入格式&#xff1a; 输入一个字母&#xff0c;保证是大写。输出格式&#xff1a; 输出一个字母金字塔&#xff0c;输出样式见样例。样例输入 C样例输出 A ABA …

【ffmpeg命令基础】过滤处理

文章目录 前言过滤处理的介绍两种过滤类型简单滤波图简单滤波图是什么简单滤波示例 复杂滤波图复杂滤波是什么区别示例 总结 前言 FFmpeg是一款功能强大的开源音视频处理工具&#xff0c;广泛应用于音视频的采集、编解码、转码、流化、过滤和播放等领域。1本文将重点介绍FFmpe…

Docker入门:从安装到实际应用

Docker入门指南&#xff1a;从安装到实际应用 Docker 是一个开源的平台&#xff0c;允许开发者通过容器技术来部署、管理和运行应用程序。容器是一种轻量级、独立的运行环境&#xff0c;可以包含应用程序及其所有依赖项&#xff0c;从而确保在不同环境下运行一致。本文将介绍 …

Python、Rust与AI的未来展望

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

【关于PHP性能优化,内存优化,日志工具等问题处理】

目录 PHP 性能优化&#xff1a; 如何优化 PHP 代码以提高性能&#xff1f; 通用优化策略&#xff1a; 框架特定优化&#xff1a; 性能优化最佳实践&#xff1a; 描述一下你使用过的 PHP 性能分析工具。 检测内存泄漏的方法 使用工具检测内存泄漏 常见内存泄漏场景及解决…

FastAdmin: 一款基于ThinkPHP+Bootstrap的极速后台开发框架(Gitee最有价值开源项目)

欢迎加入我们前端技术学习交流群&#xff0c;关注“前端组件开发”公众号&#xff0c;私信可申请入群 摘要&#xff1a; 随着Web技术的快速发展&#xff0c;后台管理系统的开发效率与灵活性成为了项目成功的关键。FastAdmin作为一款基于ThinkPHP和Bootstrap的开源后台框架&…

基于 Vue 3 和 Element Plus 构建图书管理系统

基于 Vue 3 和 Element Plus 构建图书管理系统 本文将介绍如何使用 Vue 3 和 Element Plus 构建一个简单的图书管理系统。这个系统将包括以下功能&#xff1a; 添加新书显示图书列表分页显示图书删除图书 相关链接 接口地址 elementplus中文地址 项目结构 我们的项目结构…

Langchain[4]:Langchain 0.2革命性突破:结合工具调用与结构化数据处理、@Chain修饰符使用,解决LLM输出难题,提升AI效能

Langchain[4]:Langchain 0.2革命性突破:结合工具调用与结构化数据处理,解决LLM输出难题,提升AI效能 1.工具调用 大型语言模型 (LLM) 可以通过工具调用功能与外部数据源交互。工具调用是一种强大的技术,允许开发人员构建复杂的应用程序,这些应用程序可以利用 LLM 访问、交…

websocket-react使用

问题 在一个应用中&#xff0c;如果需要在不同的组件之间共享同一个WebSocket连接&#xff0c;可以采用多种方法来实现。 比如&#xff1a;单例模式、全局变量、react context React上下文&#xff08;React Context&#xff09; 如果你使用的是React&#xff0c;可以使用Re…

C++ | Leetcode C++题解之第239题滑动窗口最大值

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> maxSlidingWindow(vector<int>& nums, int k) {int n nums.size();vector<int> prefixMax(n), suffixMax(n);for (int i 0; i < n; i) {if (i % k 0) {prefixMax[i] num…

Writing Bazel rules: data and runfiles

Bazel has a neat feature that can simplify a lot of work with tests and executables: the ability to make data files available at run-time using data attributes. You may have seen these in rules like this:Bazel 有一个巧妙的功能&#xff0c;可以简化测试和可执…

简单实用的企业舆情安全解决方案

前言&#xff1a;企业舆情安全重要吗&#xff1f;其实很重要&#xff0c;尤其面对负面新闻&#xff0c;主动处理和应对&#xff0c;可以掌握主动权&#xff0c;避免股价下跌等&#xff0c;那么如何做使用简单实用的企业舆情解决方案呢&#xff1f; 背景 好了&#xff0c;提取词…

CSS技巧专栏:一日一例 7 - 纯CSS实现炫光边框按钮特效

CSS技巧专栏&#xff1a;一日一例 7 - 纯CSS实现炫光边框按钮特效 本例效果图 案例分析 相信你可能已经在网络见过类似这样的流光的按钮&#xff0c;在羡慕别人做的按钮这么酷的时候&#xff0c;你有没有扒一下它的源代码的冲动&#xff1f;或者你当时有点冲动&#xff0c;却…