文章目录

  • 引言
  • 项目展示
  • 项目目录
  • 项目代码
    • 1. 拦截器
    • 2. 文件上传与下载
    • 3. 增删改查
  • 问题解决
  • 总结

引言

本项目是基于第十二届服创的A01赛题,内容还是比较简单的,记录一下经过吧,

前期由于偷懒,把赛题分析交给了文本的同学,造成了分析不到位以及有点偏题了,所幸问题不大,

前期打算用ssm为架构完成,在中期时发现某书上有个用jsp写的模板,就直接copy了,

在后期为了增加ajax,拦截器以及文件上传下载等功能,又增上了SpringMVC架构,

因此造就了这个四不像,有着SpringMVC架构,却用着JDBC…,

总而言之还是经验不足,见风使舵了!

博主是萌新上路,文中如有不当之处,请各位大佬指出,共同进步,谢谢。

项目展示

不速之客—【A01】小微企业跨组织人才管理系统—项目演示视频

特此感谢睿姐配音![鞠躬]

项目目录

因为是基于服创的,所以是组队开发合并的,一开始就是前后端分离,因此造成了部分文件出现了中文命名,dddd,

项目代码

以下将展示部分代码,源代码可在此处下载,

1. 拦截器

本意是为了防止通过直接输入地址进行访问和分级权限管理的,结果吧,没有用上,但还是写着了…

public class LoginInterceptor implements HandlerInterceptor {public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {// 如果是登陆页面则放行System.out.println("uri: " + request.getRequestURI());if (request.getRequestURI().contains("login")) {return true;}if (request.getRequestURI().contains("validate")) {return true;}HttpSession session = request.getSession();// 如果用户已登陆也放行if(((String)session.getAttribute("validated")).equals("ok")) {return true;}return false;}
}

2. 文件上传与下载

本来想着根据当前员工的编号,程序自动更改上传文件的文件名再进行存储,这样的话,浏览或下载文件也可以直接根据以员工编号为文件名进行查找即可,不过为了方便起见,这里并没有体现出来,只是正常的文件上传和下载功能,

文件上传

@RequestMapping("/chengguo")
public String  fileUpload2(@RequestParam("chengguo") CommonsMultipartFile file, HttpServletRequest request) throws IOException {//上传路径保存设置String path = request.getServletContext().getRealPath("/工作成果");File realPath = new File(path);if (!realPath.exists()){realPath.mkdir();}//上传文件地址System.out.println("上传文件保存地址:"+realPath);//通过CommonsMultipartFile的方法直接写文件(注意这个时候)file.transferTo(new File(realPath +"/"+ file.getOriginalFilename()));return "<script Language='JavaScript'>window.alert('上传成功!')</script>" +"<script language='JavaScript'>history.back()</script>";
}

文件下载

@RequestMapping(value="/downloadCG")
public String downloads1(HttpServletResponse response , HttpServletRequest request) throws Exception{//要下载的图片地址String  path = request.getServletContext().getRealPath("/工作成果");String  fileName = "1234567.pdf";//1、设置response 响应头response.reset(); //设置页面不缓存,清空bufferresponse.setCharacterEncoding("UTF-8"); //字符编码response.setContentType("multipart/form-data"); //二进制传输数据//设置响应头response.setHeader("Content-Disposition","attachment;fileName="+ URLEncoder.encode(fileName, "UTF-8"));File file = new File(path,fileName);//2、 读取文件--输入流InputStream input=new FileInputStream(file);//3、 写出文件--输出流OutputStream out = response.getOutputStream();byte[] buff =new byte[1024];int index=0;//4、执行 写出操作while((index= input.read(buff))!= -1){out.write(buff, 0, index);out.flush();}out.close();input.close();return null;
}

3. 增删改查

这里本来有SSM架构的话,数据库应该使用mybatis写比较方便,但是用了模板,所以就用JDBC了,造成了大量的代码冗余吧,以下仅选取片段展示,这是写在jsp中的代码块,

<%String bh = (String)session.getAttribute("zgbh");try {Class.forName("com.mysql.jdbc.Driver").newInstance();String url = "jdbc:mysql://localhost:3307/rsgl?useSSL=false&useUnicode=true&characterEncoding=UTF-8";String user = "root";String password = "123456";Connection conn = DriverManager.getConnection(url, user, password);String sql = "select * from zgb,bmb,jlb,users" +" where zgb.bm = bmb.bmbh and zgb.bh=jlb.zgbh and zgb.bh=users.username and bh=?" +"order by bh";String sql1 = "insert into checkb(bh,xm,xb,bm,csrq,jbgz,gwjt,gwpj,jzjl,zwpj,password,usertype) " +"values(?,?,?,?,?,?,?,?,?,?,?,?)";String sql2 = "delete from zgb where bh=?";String sql3 = "delete from jlb where zgbh=?";String sql4 = "delete from users where username=?";PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setString(1,bh);ResultSet rs0 = pstmt.executeQuery();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");rs0.next();String xm0 = rs0.getString("xm").trim();String xb0 = rs0.getString("xb").trim();String bm0 = rs0.getString("bmmc").trim();String csrq0 = sdf.format(rs0.getDate("csrq"));String jbgz0 = String.valueOf(rs0.getFloat("jbgz"));String gwjt0 = String.valueOf(rs0.getFloat("gwjt"));String jzjl0 = rs0.getString("jzjl").trim();String gwpj0 = rs0.getString("gwpj").trim();String zwpj0 = rs0.getString("zwpj").trim();String pwd0 = rs0.getString("password").trim();String type0 = rs0.getString("usertype").trim();rs0.close();pstmt = conn.prepareStatement(sql1);pstmt.setString(1,bh);pstmt.setString(2,xm0);pstmt.setString(3,xb0);pstmt.setString(4,bm0);pstmt.setString(5,csrq0);pstmt.setString(6,jbgz0);pstmt.setString(7,gwjt0);pstmt.setString(8,gwpj0);pstmt.setString(9,jzjl0);pstmt.setString(10,zwpj0);pstmt.setString(11,pwd0);pstmt.setString(12,type0);pstmt.executeUpdate();pstmt = conn.prepareStatement(sql2);pstmt.setString(1,bh);int n1 = pstmt.executeUpdate();pstmt = conn.prepareStatement(sql3);pstmt.setString(1,bh);int n2 = pstmt.executeUpdate();pstmt = conn.prepareStatement(sql4);pstmt.setString(1,bh);int n3 = pstmt.executeUpdate();if (n1>0 && n2>0 && n3>0){
%><script Language='JavaScript'>window.alert('职工记录删除成功!')</script><script>window.location="${pageContext.request.contextPath}/hr/allList"</script>
<%}else {
%><script Language='JavaScript'>window.alert('职工记录删除失败!')</script><script language="JavaScript">history.back()</script>
<%}pstmt.close();conn.close();} catch (Exception e){out.print(e.toString());}
%>

上述代码的主要功能就是,HR选择删除员工时,先将该员工的所有资料插入到一个表checkb中,这个表中的人员都是被HR所辞退的,最终都会出现在领导的管理系统中,如果领导不同意辞退该员工的话,则他的数据将会被重新插入到原有的所有表中,即实现恢复员工的功能,同时删除checkb表中该员工的记录,如果领导同意辞退,则直接在checkb表中删除该记录即可,

之所以用了3个delete语句是因为一句delete删除三个表一直给我报错,为了不纠结这个问题,就分开写了,all in all,博主是小菜鸡,

问题解决

搭建了SpringMVC架构之后,出现了index.jsp界面的css显示不出来的问题,

然后网上搜寻了一番之后,找到了一个在这里可行的方法,增加静态资源过滤,即在web.xml中添加如下代码:

<!-- static resources -->
<servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.css</url-pattern>
</servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.png</url-pattern>
</servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.jpg</url-pattern>
</servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.gif</url-pattern>
</servlet-mapping><servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.js</url-pattern>
</servlet-mapping>

就是将你所用到的资源文件都过滤一遍,不会被拦截即可显示,

总结

不速之客五个人小队第一次参加服务外包创新大赛,由于经验不足,一路磕磕碰碰,但所幸我们小队都走过来了,坚持下来了,

由于知识储备不足,以完成项目为第一要务,因此选择了A01赛题,当做完的时候才察觉有些简单,不过这都无伤大雅,

最后,十分感谢队员的理解与支持,作为队长,由于经验不足,造成了战略性错误,深感抱歉,但是队友不抱怨,用行动以表理解真的让我很感动,这五个月感谢有你们!

服创实战——小微企业跨组织人才管理系统相关推荐

  1. Vue实战狗尾草博客后台管理系统

    Vue实战狗尾草博客后台管理系统第一章 这里准备采用的技术栈为:vue全家桶+element-ui 这里因为是后台管理系统,没有做SSR的必要.所以这里就采用前后端分离来昨晚这个项目~ 项目搭建 vu ...

  2. 企业数字化转型组织人才发展建设

    导读: 报告首次分享6个为客户提供管理咨询服务的模型和工具,分别是企业数字化转型四力成功模型.企业数字化转型战略地图.数字化企业价值链模型.π型数字化人才能力模型.RATIO数字化人才引进和发展策略. ...

  3. vue实战项目:电商管理系统实现步骤笔记(一)

    vue实战项目 视频地址以及项目文件 一.项目概述 1.1电商项目基本业务概述 1.2电商后台管理系统的功能 1.3电商后台管理系统的开发模式(前后端分离) 1.4电商后台管理系统的技术选型 1.4. ...

  4. 攻防演练-紫队视角下的实战攻防演练组织

    紫队视角下的实战攻防演练组织 紫队作为实战攻防演练的组织方,着眼于演练的整体局势,同时 兼顾着红蓝双方的演练成果与风险.通过制定合理的演练规则与完备 的应急预案,在确保不影响生产的前提下,利用攻防对抗 ...

  5. 辰视智能受邀出席“智汇台山共创共赢”高层次人才项目路演对接会

    9月20日上午,"智汇台山·共创共赢"高层次人才项目路演对接会活动在广东省台山市工业新城成功举办.此次活动是台山市紧抓粤港澳大湾区发展重大机遇,大力推进人才强市战略的重要举措,目的 ...

  6. 跨域身份管理系统 (SCIM) 简介

    Cloudera 的身份团队一直在努力将跨域身份管理系统 (SCIM) 支持添加到 Cloudera 数据平台 (CDP),我们很高兴地宣布 SCIM 在 Azure Active Directory ...

  7. 2023企业数字化转型组织人才发展

    导读: 数字经济已成为中国经济增长的重要引擎.随着人口老龄化的加剧,用工成本的不断增加,数字化转型是企业保持竞争力的重要途径,而建设数字化人才团队是数字化转型的基础. 关注公众号:[互联互通社区],回 ...

  8. [零基础学JAVA]Java SE实战开发-37.MIS信息管理系统实战开发[JDBC](1)

    MIS信息管理系统实战开发之使用MySQL实现保存 开发背景 ID.姓名.年龄为公共信息,而学生有成绩,工人有工资 定义一个抽象类Person(ID.姓名.年龄),学生是其子类,有成绩,工人是其子类有 ...

  9. 浙江大学杭州国际科创中心招聘优秀青年人才(机器学习及大数据)

    理解-学习-推理-交互,通过机器学习,大数据与 AI 正以更快速度和更高效率为人类社会创造价值.如今,不光是产业发展与变革,我们的科研工作也需要 AI 来创新突破!国际一流科研机构都在探索科研和 AI ...

  10. 【Tensorflow+自然语言处理+LSTM】搭建智能聊天客服机器人实战(附源码、数据集和演示 超详细)

    需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 一.自然语言处理与智能 自然语言处理技术是智能客服应用的基础,在自然语言处理过程中,首先需要进行分词处理,这个过程通常基于统计学理论,分词的精细化 ...

最新文章

  1. 用sysctl调整linux内核参数
  2. 【存储知识学习】第三章磁盘原理与技术3.4硬盘接口技术和SCSI硬盘接口--《大话存储》阅读笔记
  3. django学习第77天Django框架ORM
  4. HDU 6030 Happy Necklace
  5. 收藏 | 一文看懂注意力机制
  6. 详细分析Apple macOS 6LowPAN 漏洞(CVE-2020-9967)
  7. 总结CMS常见面试题
  8. Android模拟点击屏幕,实现按键精灵点击屏幕功能
  9. 正则表达式总结regex
  10. 稳压二极管及特性介绍
  11. vue 整合百度地图
  12. 全年涨幅超200%,来自东南亚的Sea Limited有何魔力?
  13. 贝叶斯法则与虚假阳性的病例
  14. 2016面试整理--来源牛客网
  15. linux系统虚拟鼠标的实现
  16. 制药实验室信息管理系统(LIMS)
  17. 中文乱码与字体库windows
  18. linux ps -ef和ps -aux,关于Linux中ps -aux的深入理解
  19. 映客高级技术总监黄继:7天从开发到上线,云上高效运维实践与探索
  20. 云原生数据仓库AnalyticDB MySQL版用户手册

热门文章

  1. icem划分网格步骤_ICEM CFD教程-icem网格划分教程
  2. 运维工作常见问题处理38-74(二)
  3. 计算机常用英语词汇及读音,e发音的单词有哪些
  4. 利用Netica训练简易贝叶斯网络模型【教程】
  5. 磁力计简单水平较准算法
  6. 【Python】使用Python调用Fragstats批量进行万级及以上数据的景观指数运算
  7. PCS7 DCS 水泥粉磨程序
  8. 优秀程序员 分析提高能力 程序进阶
  9. Java HttpUtils 请求工具类
  10. GhostNet论文