• Java项目:SSM学生管理系统


    作者主页:夜未央5788

     简介:Java领域优质创作者、Java项目、学习资料、技术互助

    文末获取源码

    项目介绍

    管理员操作包含以下功能:
    管理员登录,学生管理,成绩管理,教师信息管理,课程信息管理,学院管理,专业管理,班级信息管理,用户管理等功能。

    由于本程序规模不大,可供课程设计,毕业设计学习演示之用

    环境需要

    1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
    2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
    3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
    4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 

    5.数据库:MySql 5.7版本;

    6.是否Maven项目:是;

    技术栈

    1. 后端:Spring+SpringMVC+Mybatis

    2. 前端:JSP+CSS+JavaScript+jquery+easyUI

    使用说明

    1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;

    2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;

    若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;

    3. 将项目中jdbc-druid-config.properties配置文件中的数据库配置改为自己的配置;

    4. 运行项目,输入http://localhost:8080/ssm_sims 登录

    管理员账号/密码:admin/admin

    运行截图 

     

     

     

     

     

    代码相关

    用户管理控制器

    1. /*
    2. * 用户操作页面
    3. *
    4. */
    5. @Controller
    6. @RequestMapping("/user")
    7. public class UserContriller {
    8. @Autowired
    9. UserService userService;
    10. //跳转个人首页首页
    11. @RequestMapping("index.do")
    12. public String index(HttpServletRequest request) {
    13. if(Tool.ismobile(request)){
    14. return "jsp/mobile/user/user";
    15. }else{
    16. return "jsp/index/user/user-ziliao";
    17. }
    18. }
    19. //查看个人资料
    20. @RequestMapping("ziliao.do")
    21. public String ziliao(HttpServletRequest request) {
    22. if(Tool.ismobile(request)){
    23. return "jsp/mobile/user/user-ziliao";
    24. }else{
    25. return "jsp/index/user/user-ziliao";
    26. }
    27. }
    28. //修改用户
    29. @RequestMapping("update.do")
    30. public String update(HttpServletRequest request, Model model,User user) {
    31. User sessionuser=(User)request.getSession().getAttribute(PublicStatic.USER);
    32. user.setId(sessionuser.getId());
    33. userService.update(user);
    34. user=userService.findbyuserid(sessionuser.getId());
    35. request.getSession().setAttribute(PublicStatic.USER, user);
    36. return "redirect:/user/index.do";
    37. }
    38. //退出
    39. @RequestMapping("logout.do")
    40. public String logout(HttpServletRequest request,HttpServletResponse response) {
    41. HttpSession session = request.getSession();
    42. session.invalidate();
    43. Cookie[] cookies=request.getCookies();
    44. for(Cookie cookie: cookies){
    45. cookie.setMaxAge(0);
    46. cookie.setPath("/");
    47. response.addCookie(cookie);
    48. }
    49. return "redirect:/";
    50. }
    51. //跳转修改密码
    52. @RequestMapping("topwd.do")
    53. public String topwd(HttpServletRequest request) {
    54. return "jsp/index/user/user-pwd";
    55. }
    56. //修改密码
    57. @ResponseBody
    58. @RequestMapping("pwd.do")
    59. public String pwd(HttpServletRequest request,String pwd ,String newpwd) {
    60. User sessionuser=(User)request.getSession().getAttribute(PublicStatic.USER);
    61. User user=new User();
    62. user.setId(sessionuser.getId());
    63. user.setPwd(pwd);
    64. String login = userService.login(user, request);
    65. if("1".equals(login)){
    66. user.setPwd(Tool.MD5(newpwd));
    67. userService.update(user);
    68. return "1";
    69. }else{
    70. return "0";
    71. }
    72. }
    73. }

     上传管理控制器

    1. public class Uploader {
    2. // 输出文件地址
    3. private String url = "";
    4. // 上传文件名
    5. private String fileName = "";
    6. // 状态
    7. private String state = "";
    8. // 文件类型
    9. private String type = "";
    10. // 原始文件名
    11. private String originalName = "";
    12. // 文件大小
    13. private long size = 0;
    14. private HttpServletRequest request = null;
    15. private String title = "";
    16. // 保存路径
    17. private String savePath = "upload";
    18. // 文件允许格式
    19. private String[] allowFiles = { ".rar", ".doc", ".docx", ".zip", ".pdf",".txt", ".swf", ".wmv", ".gif", ".png", ".jpg", ".jpeg", ".bmp" };
    20. // 文件大小限制,单位KB
    21. private int maxSize = 10000;
    22. private HashMap errorInfo = new HashMap();
    23. public Uploader(HttpServletRequest request) {
    24. this.request = request;
    25. HashMap tmp = this.errorInfo;
    26. tmp.put("SUCCESS", "SUCCESS"); //默认成功
    27. tmp.put("NOFILE", "未包含文件上传域");
    28. tmp.put("TYPE", "不允许的文件格式");
    29. tmp.put("SIZE", "文件大小超出限制");
    30. tmp.put("ENTYPE", "请求类型ENTYPE错误");
    31. tmp.put("REQUEST", "上传请求异常");
    32. tmp.put("IO", "IO异常");
    33. tmp.put("DIR", "目录创建失败");
    34. tmp.put("UNKNOWN", "未知错误");
    35. }
    36. public void upload() throws Exception {
    37. boolean isMultipart = ServletFileUpload.isMultipartContent(this.request);
    38. if (!isMultipart) {
    39. this.state = this.errorInfo.get("NOFILE");
    40. return;
    41. }
    42. DiskFileItemFactory dff = new DiskFileItemFactory();
    43. String formater = "/cj" +new SimpleDateFormat("yyyyMMdd").format(new Date());
    44. dff.setRepository(new File(savePath));
    45. try {
    46. ServletFileUpload sfu = new ServletFileUpload(dff);
    47. sfu.setSizeMax(this.maxSize * 1024);
    48. sfu.setHeaderEncoding("utf-8");
    49. FileItemIterator fii = sfu.getItemIterator(this.request);
    50. while (fii.hasNext()) {
    51. FileItemStream fis = fii.next();
    52. if (!fis.isFormField()) {
    53. this.originalName = fis.getName().substring(fis.getName().lastIndexOf(System.getProperty("file.separator")) + 1);
    54. if (!this.checkFileType(this.originalName)) {
    55. this.state = this.errorInfo.get("TYPE");
    56. continue;
    57. }
    58. this.fileName = this.getName(this.originalName);
    59. this.type = this.getFileExt(this.fileName);
    60. this.url = this.request.getContextPath()+"/download/downloadimg.do?f="+formater + "/" + this.fileName;
    61. File files = new File(this.savePath+formater);
    62. if (!files.exists()) {
    63. files.mkdirs();
    64. }
    65. BufferedInputStream in = new BufferedInputStream(fis.openStream());
    66. File file = new File(this.savePath+formater+"/"+this.fileName);
    67. FileOutputStream out = new FileOutputStream( file );
    68. BufferedOutputStream output = new BufferedOutputStream(out);
    69. Streams.copy(in, output, true);
    70. this.state=this.errorInfo.get("SUCCESS");
    71. this.size = file.length();
    72. //UE中只会处理单张上传,完成后即退出
    73. break;
    74. } else {
    75. String fname = fis.getFieldName();
    76. //只处理title,其余表单请自行处理
    77. if(!fname.equals("pictitle")){
    78. continue;
    79. }
    80. BufferedInputStream in = new BufferedInputStream(fis.openStream());
    81. BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    82. StringBuffer result = new StringBuffer();
    83. while (reader.ready()) {
    84. result.append((char)reader.read());
    85. }
    86. this.title = new String(result.toString().getBytes(),"utf-8");
    87. reader.close();
    88. }
    89. }
    90. } catch (SizeLimitExceededException e) {
    91. this.state = this.errorInfo.get("SIZE");
    92. } catch (InvalidContentTypeException e) {
    93. this.state = this.errorInfo.get("ENTYPE");
    94. } catch (FileUploadException e) {
    95. this.state = this.errorInfo.get("REQUEST");
    96. } catch (Exception e) {
    97. this.state = this.errorInfo.get("UNKNOWN");
    98. e.printStackTrace();
    99. }
    100. }
    101. /**
    102. * 接受并保存以base64格式上传的文件
    103. * @param fieldName
    104. */
    105. public void uploadBase64(String fieldName){
    106. String savePath = this.getFolder(this.savePath);
    107. String base64Data = this.request.getParameter(fieldName);
    108. this.fileName = this.getName("test.png");
    109. this.url = savePath + "/" + this.fileName;
    110. BASE64Decoder decoder = new BASE64Decoder();
    111. try {
    112. File outFile = new File(this.getPhysicalPath(this.url));
    113. OutputStream ro = new FileOutputStream(outFile);
    114. byte[] b = decoder.decodeBuffer(base64Data);
    115. for (int i = 0; i < b.length; ++i) {
    116. if (b[i] < 0) {
    117. b[i] += 256;
    118. }
    119. }
    120. ro.write(b);
    121. ro.flush();
    122. ro.close();
    123. this.state=this.errorInfo.get("SUCCESS");
    124. } catch (Exception e) {
    125. this.state = this.errorInfo.get("IO");
    126. }
    127. }
    128. /**
    129. * 文件类型判断
    130. *
    131. * @param fileName
    132. * @return
    133. */
    134. private boolean checkFileType(String fileName) {
    135. Iterator type = Arrays.asList(this.allowFiles).iterator();
    136. while (type.hasNext()) {
    137. String ext = type.next();
    138. if (fileName.toLowerCase().endsWith(ext)) {
    139. return true;
    140. }
    141. }
    142. return false;
    143. }
    144. /**
    145. * 获取文件扩展名
    146. *
    147. * @return string
    148. */
    149. private String getFileExt(String fileName) {
    150. return fileName.substring(fileName.lastIndexOf("."));
    151. }
    152. /**
    153. * 依据原始文件名生成新文件名
    154. * @return
    155. */
    156. private String getName(String fileName) {
    157. Random random = new Random();
    158. return this.fileName = "" + random.nextInt(10000)
    159. + System.currentTimeMillis() + this.getFileExt(fileName);
    160. }
    161. /**
    162. * 根据字符串创建本地目录 并按照日期建立子目录返回
    163. * @param path
    164. * @return
    165. */
    166. private String getFolder(String path) {
    167. SimpleDateFormat formater = new SimpleDateFormat("yyyyMMdd");
    168. path += "/" + formater.format(new Date());
    169. File dir = new File(this.getPhysicalPath(path));
    170. if (!dir.exists()) {
    171. try {
    172. dir.mkdirs();
    173. } catch (Exception e) {
    174. this.state = this.errorInfo.get("DIR");
    175. return "";
    176. }
    177. }
    178. return path;
    179. }
    180. /**
    181. * 根据传入的虚拟路径获取物理路径
    182. *
    183. * @param path
    184. * @return
    185. */
    186. private String getPhysicalPath(String path) {
    187. String servletPath = this.request.getServletPath();
    188. String realPath = this.request.getSession().getServletContext()
    189. .getRealPath(servletPath);
    190. return new File(realPath).getParent() +"/" +path;
    191. }
    192. public void setSavePath(String savePath) {
    193. this.savePath = savePath;
    194. }
    195. public void setAllowFiles(String[] allowFiles) {
    196. this.allowFiles = allowFiles;
    197. }
    198. public void setMaxSize(int size) {
    199. this.maxSize = size;
    200. }
    201. public long getSize() {
    202. return this.size;
    203. }
    204. public String getUrl() {
    205. return this.url;
    206. }
    207. public String getFileName() {
    208. return this.fileName;
    209. }
    210. public String getState() {
    211. return this.state;
    212. }
    213. public String getTitle() {
    214. return this.title;
    215. }
    216. public String getType() {
    217. return this.type;
    218. }
    219. public String getOriginalName() {
    220. return this.originalName;
    221. }
    222. }

    管理员管理控制器

    1. @Controller
    2. @RequestMapping("/admin/user")
    3. public class AdminUserContriller {
    4. @Autowired
    5. UserService userService;
    6. @Autowired
    7. GroupService groupService;
    8. @Autowired
    9. JifenGroupService jifenGroupService;
    10. //跳转首页
    11. @RequestMapping("index.do")
    12. public String add(HttpServletRequest request, Model model,User user,PageBean page) {
    13. page = userService.findpage(user,page);
    14. model.addAttribute("page", page);
    15. model.addAttribute("quser", user);
    16. return "jsp/admin/user/index";
    17. }
    18. //更新
    19. @RequestMapping("update.do")
    20. public String update(HttpServletRequest request, Model model,User user) {
    21. User sessionuser=(User)request.getSession().getAttribute(PublicStatic.USER);
    22. user.setId(sessionuser.getId());
    23. userService.update(user);
    24. return "redirect:/user/index.do";
    25. }
    26. //删除
    27. @ResponseBody
    28. @RequestMapping("del.do")
    29. public String del(HttpServletRequest request, Model model,User user) {
    30. return userService.delete(user.getId());
    31. }
    32. //重置密码
    33. @ResponseBody
    34. @RequestMapping("updatepwd.do")
    35. public String updatepwd(HttpServletRequest request, Model model,User user) {
    36. String pwd="123456";
    37. user.setPwd(Tool.MD5(pwd));
    38. userService.update(user);
    39. return "1";
    40. }
    41. //重置密码
    42. @ResponseBody
    43. @RequestMapping("updateflag.do")
    44. public String updateflag(HttpServletRequest request, Model model,User user) {
    45. userService.update(user);
    46. return "1";
    47. }
    48. //设置管理员
    49. @ResponseBody
    50. @RequestMapping("updategroup.do")
    51. public String updategroup(HttpServletRequest request, Model model,User user,int groupid) {
    52. boolean b = groupService.updategroupbyuser(user.getId(), groupid);
    53. if(b){
    54. return "1";
    55. }else{
    56. return "0";
    57. }
    58. }
    59. //删除用户帖子 留言 回帖 图片等信息信息
    60. @ResponseBody
    61. @RequestMapping("deluserallinfo.do")
    62. public String deluserallinfo(HttpServletRequest request, Model model,User user) {
    63. boolean b = userService.deluserallinfo(user.getId());
    64. if(b){
    65. return "1";
    66. }else{
    67. return "0";
    68. }
    69. }
    70. @RequestMapping("tooptions.do")
    71. public String tooptions(HttpServletRequest request, Model model,User user){
    72. user = userService.findbyid(user);
    73. model.addAttribute("user", user);
    74. return "jsp/admin/user/option";
    75. }
    76. /**
    77. * 设置用户vip等级
    78. * @param request
    79. * @param model
    80. * @param user
    81. * @return
    82. */
    83. @RequestMapping(value="set_vip.do",method=RequestMethod.GET)
    84. public String setVip(Model model,User user){
    85. user = userService.findbyid(user);
    86. model.addAttribute("user", user);
    87. model.addAttribute("jifenGroupList", jifenGroupService.find(null));
    88. return "jsp/admin/user/set_vip";
    89. }
    90. /**
    91. * 设置用户vip等级表单提交
    92. * @param userId
    93. * @param jifen
    94. * @return
    95. */
    96. @RequestMapping(value="set_vip.do",method=RequestMethod.POST)
    97. public String setVip(Integer userId, String vipLevel){
    98. User user = new User();
    99. user.setId(userId);
    100. user = userService.findbyid(user);
    101. user.setVipLevel(vipLevel);
    102. userService.update(user);
    103. return "redirect:index.do";
    104. }
    105. }

    如果也想学习本系统,下面领取。关注并回复:120ssm 

  • 相关阅读:
    error build: 1 duplicate symbol for architecture x86_64
    Commonjs与ES Module
    卸载Erlang和RabbitMQ
    java学习--day18(TreeSet底层&内部类)
    组装式已成大趋势,浅淡下组装式应用
    SuperMap iServer 机器学习服务配置及使用
    Python操作MySQL库结(MySQL详细下载、安装、操控及第三方库中的使用)
    C#界面里的winform ContextMenuStrip属性
    如何处理微服务之间的通信和数据一致性?
    编译安装Linux内核
  • 原文地址:https://blog.csdn.net/hanyunlong1989/article/details/126576038