毕业设计|基于SSM+JSP的家校通管理系统

2023-12-05

作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路  关注作者有好处

文末获取源码

项目编号:ZJL

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

二,项目简介

前台登陆:

本系统用户分为三大类:管理员学生家长和老师。

为这三大类用户提供他们各自的功能:

管理员:校内公告发布、申请公告发布到网站、申请新闻发布到网站、校内新闻、登录及权限验证、注册申请、密码找回、管理本校事务。申请家长身份,维护学生——家长关系(申请新的学生与家长关系,取消学生与家长关系)。消息推送。

老师(按不同的身份权限):登录及权限验证、留言、发布问卷调查、布置作业、考试管理、学籍管理。申请家长身份,维护学生——家长关系(申请新的学生与家长关系,取消学生与家长关系)。消息推送。

学生家长:登录及权限验证、注册申请、密码找回。维护学生——家长关系(申请新的学生与家长关系,取消学生与家长关系)。查看学生作业。即时聊天功能(类似qq群一样)

为实现各用户的功能系统需提供的功能:

网站首页及栏目设置:网站介绍、最近动态、公告、网站新闻、用户登录入口、注册入口、密码找回功能入口。

与用户身份相匹配的个人登录后的功能界面入口:学校用户及学生家长能看到本学校内的公告和校内新闻;与个人权限相匹配的各功能入口。

用户注册及密码找回功能、登录及权限验证功能。

网站页面展示模块:网站介绍、最近动态、学校注册情况、公告、网站新闻、用户登录入口、密码找回功能入口、注册入口。

鉴权及功能入口展示模块:学校用户及学生家长能看到本学校内的公告和校内新闻;与个人权限相匹配的各功能入口。

后台:

系统管理模块:用户帐户管理、权限管理、网站介绍发布、最近动态发布、审核用户注册申请、新闻公告审核、发布系统公告、发布网站新闻。校内新闻管理、申请新闻发布到网站;帐户管理(注册老师用户,为老师用户指定身份角色,激活、禁用帐户);学科年级信息维护、学校班级信息维护、学科信息维护;学校信息维护。

老师应用模块(按不同的身份权限):沟通交流、布置作业、考试管理、学籍管理(录入本班学生信息、分班、学生升、留级、毕业)、个人信息维护。申请家长身份,维护学生——家长关系(申请新的学生与家长关系,取消学生与家长关系)。考虑利用手机进行短信推送信息。

学生家长应用模块:沟通交流、作业下载。维护学生——家长关系(申请新的学生与家长关系,取消学生与家长关系)

三,系统展示

3.1 前后功能

3.2 后台管理

四,核心代码展示

4.1 教室管理


@Controller
@RequestMapping("/classroom")
public class ClassroomController extends BaseController {
	
	/**
	 * 依赖注入 start dao/service/===
	 */
	@Autowired
	private ClassroomService classroomService;
	@Autowired
	private SchoolService  schoolService;
	@Autowired
	private GradeService gradeService;
	@Autowired
	private TeacherService teacherService;
	

	/**
	 * 分页查询 返回list对象(通过对象)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByObj.do")
	public String findByObj(Classroom classroom, Model model, HttpServletRequest request, HttpServletResponse response,HttpSession session) {
		Pager<Classroom> pagers=new Pager<Classroom>();
		Integer schoolId = (Integer) session.getAttribute("schoolId");
		if(!isEmpty(classroom.getName())){
			 Map<String, Object> map = getMap();
			 map.put("name",classroom.getName());
			 map.put("schoolId",schoolId);
			//模糊查询分页查询
			 pagers = classroomService.findByMap(map);
		}else{
			classroom.setSchoolId(schoolId);
			//分页查询
			pagers = classroomService.findByEntity(classroom);
		}
		for (Classroom classroom1 : pagers.getDatas()) {
			Teacher obj = teacherService.load(classroom1.getId());
			if(obj!=null){
				classroom1.setTeacherName(obj.getRealName());			
				}
			Grade g=gradeService.load(classroom1.getGradeId());
			if(g!=null){
				classroom1.setGradeName(g.getName());
			}
		}
		model.addAttribute("pagers", pagers);
		//存储查询条件
		model.addAttribute("obj", classroom);
		return "classroom/classroom";
	}
	
	
	/**
	 * 分页查询 返回list对象(通过Map)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByMap.do")
	public String findByMap(Classroom classroom, Model model, HttpServletRequest request, HttpServletResponse response,HttpSession session) {
		//通过map查询
		Map<String,Object> params = new HashMap<String,Object>();
        if(!isEmpty(classroom.getName())){
        	params.put("name", classroom.getName());
		}
        if(!isEmpty(classroom.getGradeId())){
        	params.put("gradeId", classroom.getGradeId());
		}
        if(!isEmpty(classroom.getIsDelete())){
        	params.put("isDelete", classroom.getIsDelete());
		}
		//分页查询
		Pager<Classroom> pagers = classroomService.findByMap(params);
		model.addAttribute("pagers", pagers);
		//存储查询条件
		model.addAttribute("obj", classroom);
		return "classroom/classroom";
	}
	
	
	/**
	 * 跳至添加页面
	 * @return
	 */
	@RequestMapping(value = "/add.do")
	public String add(Model model,HttpSession session) {
		Integer schoolId = (Integer) session.getAttribute("schoolId");
		School school=new School();
		school.setId(schoolId);
		List<School> schoolList=schoolService.listAllByEntity(school);
		model.addAttribute("schoolList", schoolList);
		return "classroom/add";
	}

	
	/**
	 * 添加执行
	 * @return
	 */
	@RequestMapping(value = "/exAdd.do")
	public String exAdd(Classroom classroom, Model model, HttpServletRequest request, HttpServletResponse response) {
		classroom.setIsDelete(0);
		classroom.setStatus(0);
		classroomService.insert(classroom);
		return "redirect:/classroom/findByObj.do";
	}
	
	
	/**
	 * 跳至修改页面
	 * @return
	 */
	@RequestMapping(value = "/update.do")
	public String update(Integer id,Model model) {
		Classroom obj = classroomService.load(id);
		model.addAttribute("obj",obj);
		return "classroom/update";
	}
	
	/**
	 * 添加修改
	 * @return
	 */
	@RequestMapping(value = "/exUpdate.do")
	public String exUpdate(Classroom classroom, Model model, HttpServletRequest request, HttpServletResponse response) {
		classroomService.update(classroom);
		return "redirect:/classroom/findByObj.do";
	}
	
	/**
	 * 删除通过主键
	 * @return
	 */
	@RequestMapping(value = "/delete.do")
	public String delete(Integer id, Model model, HttpServletRequest request, HttpServletResponse response) {
		//真正删除
		classroomService.deleteById(id);
		//通过参数删除
        //Map<String,Object> params = new HashMap<String,Object>();
		//params.put("id", id);
		//classroomService.deleteBySqId("deleteBySql", params);
		//状态删除
		//Classroom load = classroomService.load(id);
		//load.setIsDelete(1);
		//classroomService.update(load);
		return "redirect:/classroom/findByObj.do";
	}
	
	// --------------------------------------- 华丽分割线 ------------------------------
	
	/**
	 * 通过id查询 返回list json(通过map)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByGradeId.json", produces=MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
	@ResponseBody
	public String findByGradeId(Classroom classroom, Model model, HttpServletRequest request, HttpServletResponse response) {
		 Map<String, Object> map = getMap();
		 map.put("gradeId",classroom.getGradeId());
		 List<Classroom> classroomList =classroomService.list("listBySqlId", map);
		//分页查询
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("obj", classroomList);
		return jsonObject.toString();
	}
	
	/**
	 * 分页查询 返回list json(通过对象)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByObj.json", produces=MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
	@ResponseBody
	public String findByObjByEntity(Classroom classroom, Model model, HttpServletRequest request, HttpServletResponse response) {
		//分页查询
		Pager<Classroom> pagers = classroomService.findByEntity(classroom);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("pagers", pagers);
		jsonObject.put("obj", classroom);
		return jsonObject.toString();
	}
	
	  
	/**
	 * 分页查询 返回list json(通过Map)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByMap.json", produces=MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
	@ResponseBody
	public String findByMapMap(Classroom classroom, Model model, HttpServletRequest request, HttpServletResponse response) {
		//通过map查询
		Map<String,Object> params = new HashMap<String,Object>();
        if(!isEmpty(classroom.getName())){
        	params.put("name", classroom.getName());
		}
        if(!isEmpty(classroom.getGradeId())){
        	params.put("gradeId", classroom.getGradeId());
		}
        if(!isEmpty(classroom.getIsDelete())){
        	params.put("isDelete", classroom.getIsDelete());
		}
		//分页查询
		Pager<Classroom> pagers = classroomService.findByMap(params);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("pagers", pagers);
		jsonObject.put("obj", classroom);
		return jsonObject.toString();
	}
	
	
	/**
	 * ajax 添加
	 * @param 
	 * @return
	 */
	@RequestMapping(value = "/exAdd.json", produces=MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
	@ResponseBody
	public String exAddJson(Classroom classroom, Model model, HttpServletRequest request, HttpServletResponse response) {
		classroomService.insert(classroom);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("message", "添加成功");
		return jsonObject.toString();
	}
	

	/**
	 * ajax 修改
	 * @param 
	 * @return
	 */
	@RequestMapping(value = "/exUpdate.json", produces=MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
	@ResponseBody
	public String exUpdateJson(Classroom classroom, Model model, HttpServletRequest request, HttpServletResponse response) {
		classroomService.update(classroom);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("message", "修改成功");
		return jsonObject.toString();
	}

	/**
	 * ajax 删除
	 * @return
	 */
	@RequestMapping(value = "/delete.json", produces=MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
	@ResponseBody
	public String exDeleteJson(Integer id, Model model, HttpServletRequest request, HttpServletResponse response) {
		//真正删除
		classroomService.deleteById(id);
		//通过参数删除
        //Map<String,Object> params = new HashMap<String,Object>();
		//params.put("id", id);
		//classroomService.deleteBySqId("deleteBySql", params);
		//状态删除
		//Classroom load = classroomService.load(id);
		//load.setIsDelete(1);
		//classroomService.update(load);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("message", "删除成功");
		return jsonObject.toString();
	}
	/**
	 * 单文件上传
	 * @param file
	 * @param request
	 * @param model
	 * @return
	 */
    @RequestMapping(value = "/saveFile")  
    public String saveFile(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request, Model model) {  
  
        System.out.println("开始");  
        String path = request.getSession().getServletContext().getRealPath("/upload");  
        String fileName = file.getOriginalFilename();  
        System.out.println(path);  
        File targetFile = new File(path, fileName);  
        if(!targetFile.exists()){  
            targetFile.mkdirs();  
        }  
        //保存  
        try {  
            file.transferTo(targetFile);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
  
        return "";  
    }  
	
	
	/**
	 * springMvc多文件上传
	 * @param files
	 * @param id
	 * @return
	 */
    @RequestMapping(value = "/saveFiles")
    public String saveFiles(@RequestParam("file") CommonsMultipartFile[] files,Integer id,HttpServletRequest request){
		for(int i = 0;i<files.length;i++){
	      	System.out.println("fileName---------->" + files[i].getOriginalFilename());
		  if(!files[i].isEmpty()){
            int pre = (int) System.currentTimeMillis();
	     	try {
			//拿到输出流,同时重命名上传的文件
			 String filePath = request.getRealPath("/upload");
			 File f=new File(filePath);
			 if(!f.exists()){
				f.mkdirs();
			 }
		     String fileNmae=new Date().getTime() + files[i].getOriginalFilename();
		     File file=new File(filePath+"/"+pre + files[i].getOriginalFilename());
			  if(!file.exists()){
				  file.createNewFile();
			 }
			  files[i].transferTo(file);
		     } catch (Exception e) {
				e.printStackTrace();
				System.out.println("上传出错");
			 }
		  }
		}
	  return "";
	}

	
}

4.2 网站内容发布




@Controller
@RequestMapping("/introduction")
public class IntroductionController extends BaseController {
	
	/**
	 * 依赖注入 start dao/service/===
	 */
	@Autowired
	private IntroductionService introductionService;
	
	/**
	 * 前台查询网页介绍
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/queryIntroduction.do")
	public String queryIntroduction(Model model, HttpServletRequest request, HttpServletResponse response) {
		List<Introduction> introductionList=introductionService.listAll();
		model.addAttribute("introductionList", introductionList);
		//存储查询条件
		model.addAttribute("introductionList", introductionList);
		return "introduction/uIntroduction";
	}
	
	
	
	/**
	 * 分页查询 返回list对象(通过对象)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByObj.do")
	public String findByObj(Introduction introduction, Model model, HttpServletRequest request, HttpServletResponse response) {
		Pager<Introduction> pagers =new Pager<Introduction>();
		if(introduction.getTitle()!=null){
			 Map<String, Object> map = getMap();
			 map.put("title",introduction.getTitle());
		    //模糊查询分页查询
			pagers = introductionService.findByMap(map);
		}else{
		//分页查询
		pagers = introductionService.findByEntity(introduction);
		}
		model.addAttribute("pagers", pagers);
		//存储查询条件
		model.addAttribute("obj", introduction);
		return "introduction/introduction";
	}
	
	
	/**
	 * 分页查询 返回list对象(通过Map)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByMap.do")
	public String findByMap(Introduction introduction, Model model, HttpServletRequest request, HttpServletResponse response) {
		//通过map查询
		Map<String,Object> params = new HashMap<String,Object>();
        if(!isEmpty(introduction.getTitle())){
        	params.put("title", introduction.getTitle());
		}
        if(!isEmpty(introduction.getContent())){
        	params.put("content", introduction.getContent());
		}
        if(!isEmpty(introduction.getAddTime())){
        	params.put("addTime", introduction.getAddTime());
		}
        if(!isEmpty(introduction.getImageUrl())){
        	params.put("imageUrl", introduction.getImageUrl());
		}
		//分页查询
		Pager<Introduction> pagers = introductionService.findByMap(params);
		model.addAttribute("pagers", pagers);
		//存储查询条件
		model.addAttribute("obj", introduction);
		return "introduction/introduction";
	}
	
	
	/**
	 * 跳至添加页面
	 * @return
	 */
	@RequestMapping(value = "/add.do")
	public String add() {
		return "introduction/add";
	}

	
	/**
	 * 添加执行
	 * @return
	 */
	@RequestMapping(value = "/exAdd.do")
	public String exAdd(@RequestParam(value = "file", required = false) MultipartFile file, Introduction introduction,HttpServletRequest request, Model model) {
		    System.out.println("开始");  
	        String path = request.getSession().getServletContext().getRealPath("/")+"upload/";  
	        String fileName = file.getOriginalFilename();  
	        System.out.println(path);  
	        File targetFile = new File("D:/my/upload", fileName);  
	        if(!targetFile.exists()){  
	            targetFile.mkdirs();  
	        }  
	        introduction.setImageUrl("\\upload\\"+fileName);
	        //保存  
	        try {  
	            file.transferTo(targetFile);  
	        } catch (Exception e) {  
	            e.printStackTrace();  
	        }  
		introduction.setAddTime(new Date());
		introductionService.insert(introduction);
		return "redirect:/introduction/findByObj.do";
	}
	
	/**
	 * 跳至修改页面
	 * @return
	 */
	@RequestMapping(value = "/update.do")
	public String update(Integer id,Model model) {
		Introduction obj = introductionService.load(id);
		model.addAttribute("obj",obj);
		return "introduction/update";
	}
	
	/**
	 * 添加修改
	 * @return
	 */
	@RequestMapping(value = "/exUpdate.do")
	public String exUpdate(@RequestParam(value = "file", required = false) MultipartFile file, Introduction introduction,HttpServletRequest request, Model model) {
		 System.out.println("开始");  
	        String path = request.getSession().getServletContext().getRealPath("/")+"upload/";  
	        String fileName = file.getOriginalFilename();  
	        System.out.println(path);  
	        File targetFile = new File("D:/my/upload", fileName);  
	        if(!targetFile.exists()){  
	            targetFile.mkdirs();  
	        }
	        if(fileName!=null){
	          introduction.setImageUrl("\\upload\\"+fileName);
	        }
	        //保存  
	        try {  
	            file.transferTo(targetFile);  
	        } catch (Exception e) {  
	            e.printStackTrace();  
	        }  
		introductionService.update(introduction);
		return "redirect:/introduction/findByObj.do";
	}
	
	/**
	 * 删除通过主键
	 * @return
	 */
	@RequestMapping(value = "/delete.do")
	public String delete(Integer id, Model model, HttpServletRequest request, HttpServletResponse response) {
		//真正删除
		introductionService.deleteById(id);
		//通过参数删除
        //Map<String,Object> params = new HashMap<String,Object>();
		//params.put("id", id);
		//introductionService.deleteBySqId("deleteBySql", params);
		//状态删除
		//Introduction load = introductionService.load(id);
		//load.setIsDelete(1);
		//introductionService.update(load);
		return "redirect:/introduction/findByObj.do";
	}
	
	// --------------------------------------- 华丽分割线 ------------------------------
	
	/**
	 * 分页查询 返回list json(通过对象)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByObj.json", produces=MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
	@ResponseBody
	public String findByObjByEntity(Introduction introduction, Model model, HttpServletRequest request, HttpServletResponse response) {
		//分页查询
		Pager<Introduction> pagers = introductionService.findByEntity(introduction);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("pagers", pagers);
		jsonObject.put("obj", introduction);
		return jsonObject.toString();
	}
	
	  
	/**
	 * 分页查询 返回list json(通过Map)
	 * 
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/findByMap.json", produces=MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
	@ResponseBody
	public String findByMapMap(Introduction introduction, Model model, HttpServletRequest request, HttpServletResponse response) {
		//通过map查询
		Map<String,Object> params = new HashMap<String,Object>();
        if(!isEmpty(introduction.getTitle())){
        	params.put("title", introduction.getTitle());
		}
        if(!isEmpty(introduction.getContent())){
        	params.put("content", introduction.getContent());
		}
        if(!isEmpty(introduction.getAddTime())){
        	params.put("addTime", introduction.getAddTime());
		}
        if(!isEmpty(introduction.getImageUrl())){
        	params.put("imageUrl", introduction.getImageUrl());
		}
		//分页查询
		Pager<Introduction> pagers = introductionService.findByMap(params);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("pagers", pagers);
		jsonObject.put("obj", introduction);
		return jsonObject.toString();
	}
	
	
	/**
	 * ajax 添加
	 * @param 
	 * @return
	 */
	@RequestMapping(value = "/exAdd.json", produces=MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
	@ResponseBody
	public String exAddJson(Introduction introduction, Model model, HttpServletRequest request, HttpServletResponse response) {
		introductionService.insert(introduction);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("message", "添加成功");
		return jsonObject.toString();
	}
	

	/**
	 * ajax 修改
	 * @param 
	 * @return
	 */
	@RequestMapping(value = "/exUpdate.json", produces=MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
	@ResponseBody
	public String exUpdateJson(Introduction introduction, Model model, HttpServletRequest request, HttpServletResponse response) {
		introductionService.update(introduction);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("message", "修改成功");
		return jsonObject.toString();
	}

	/**
	 * ajax 删除
	 * @return
	 */
	@RequestMapping(value = "/delete.json", produces=MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
	@ResponseBody
	public String exDeleteJson(Integer id, Model model, HttpServletRequest request, HttpServletResponse response) {
		//真正删除
		introductionService.deleteById(id);
		//通过参数删除
        //Map<String,Object> params = new HashMap<String,Object>();
		//params.put("id", id);
		//introductionService.deleteBySqId("deleteBySql", params);
		//状态删除
		//Introduction load = introductionService.load(id);
		//load.setIsDelete(1);
		//introductionService.update(load);
		JSONObject jsonObject = JsonUtil2.getJsonObject();
		jsonObject.put("message", "删除成功");
		return jsonObject.toString();
	}
	/**
	 * 单文件上传
	 * @param file
	 * @param request
	 * @param model
	 * @return
	 */
    @RequestMapping(value = "/saveFile")  
    public String saveFile(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request, Model model) {  
        System.out.println("开始");  
        String path = request.getSession().getServletContext().getRealPath("/upload");  
        String fileName = file.getOriginalFilename();  
        System.out.println(path);  
        File targetFile = new File(path, fileName);  
        if(!targetFile.exists()){  
            targetFile.mkdirs();  
        }  
        //保存  
        try {  
            file.transferTo(targetFile);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
  
        return "";  
    }  
	
	
	/**
	 * springMvc多文件上传
	 * @param files
	 * @param id
	 * @return
	 */
    @RequestMapping(value = "/saveFiles")
    public String saveFiles(@RequestParam("file") CommonsMultipartFile[] files,Integer id,HttpServletRequest request){
		for(int i = 0;i<files.length;i++){
	      	System.out.println("fileName---------->" + files[i].getOriginalFilename());
		  if(!files[i].isEmpty()){
            int pre = (int) System.currentTimeMillis();
	     	try {
			//拿到输出流,同时重命名上传的文件
			 String filePath = request.getRealPath("/upload");
			 File f=new File(filePath);
			 if(!f.exists()){
				f.mkdirs();
			 }
		     String fileNmae=new Date().getTime() + files[i].getOriginalFilename();
		     File file=new File(filePath+"/"+pre + files[i].getOriginalFilename());
			  if(!file.exists()){
				  file.createNewFile();
			 }
			  files[i].transferTo(file);
		     } catch (Exception e) {
				e.printStackTrace();
				System.out.println("上传出错");
			 }
		  }
		}
	  return "";
	}
	
	
}

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

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

毕业设计|基于SSM+JSP的家校通管理系统 的相关文章

  • Java中ArrayList的交集和并集

    有什么方法可以做到这一点吗 我正在寻找 但没有找到 另一个问题 我需要这些方法 以便我可以过滤文件 有些是AND过滤器 有些是OR过滤器 就像集合论中的那样 所以我需要根据所有文件和保存这些文件的联合 相交 ArrayList 进行过滤 我
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 如何在java中将一个数组列表替换为另一个不同大小的数组列表

    我有两个大小不同的数组列表 如何从此替换 ArrayList
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • 将 MOXy 设置为 JAXB 提供程序,而在同一包中没有属性文件

    我正在尝试使用 MOXy 作为我的 JAXB 提供程序 以便将内容编组 解组到 XML JSON 中 我创建了 jaxb properties 文件 内容如下 javax xml bind context factory org eclip
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • ChatGPT发布一年后,搜索引擎的日子还好吗?

    导读 生成式AI 搜索引擎的终结者还是进化加速器 ChatGPT发布刚刚一年 互联网世界已经换了人间 2023年 以ChatGPT和大模型为代表的生成式AI浪潮对全球互联网 云计算 人工智能领域都带来巨大冲击 而且生成式AI在各行各业的应用
  • 【GESP】2023年09月Python一级试卷

    2023年GESP09月认证Python一级试卷 分数 100 题数 27 一 单选题 共15题 每题2分 共30分 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
  • 接口自动化测试用例

    1 接口文档 根据开发 产品的接口文档 以及评审 进行设计接口测试用例 它不像UI测试 有个界面 对于简单的系统 需求文档不提供也能覆盖所有功能 接口测试虽说可以抓包 但抓包无法覆盖所有接口和字段 必须要求提供详细接口文档 甚至可以辅助扣代
  • pytorch 给定概率分布的张量,如何利用这个概率进行重复\不重复采样?

    在 PyTorch 中 可以使用 torch distributions Categorical 来基于给定的概率分布进行采样 下面是一个示例 import torch import torch distributions as dist
  • 碳复合材料的导热测量-科学指南针

    30年前碳复合材料就被开发出来 用于取代高性能军用飞行器引擎上的金属部件 现在这种材料也被用在民用飞行器 刹车制动 赛车刹车片 真空炉部件 化学反应器和其它工业 碳复合材料具有诸多特性 比如质地轻 化学惰性 高温下强度高 比强度高于耐热合金
  • 《OCAD光学系统自动设计程序》好书分享

    OCAD是一款具有鲜明工程化特色的中国光学自动设计软件 程序重点在于可以首先进行复杂光学系统的初始布局 进行设计前期的总体方案设计 可以对各类典型光学系统自动进行初始结构设计 作为一款光学系统辅助设计软件 SEEOD以光的直线传播 数学几何
  • OptiSystem应用:脉冲内拉曼散射对高阶光孤子的衰变

    本课程演示了受激拉曼散射对短孤子脉冲的影响 布局及其全局参数如图1和图2所示 图1 光路布局 图2 全局参数设置 图3 脉冲生成器设置 非线性色散光纤组件的参数如图4所示 该布局模拟了高阶孤子脉冲的传播 脉冲宽度 FWHM 为450 62f
  • 线程变量引发的session混乱问题

    最近不是在救火 就是在救火的路上 也没什么特别可写的 今天记录下最近遇到的一个问题 个人觉得挺有意思 待有缘人阅读 言归正传 售后反馈 营业查询中付款方式为第三方支付的几条银行缴费 创建操作员和修改操作员为系统操作员 系统操作员一般只用于系
  • TechWiz LCD 2D应用:多畴IPS仿真

    1 建模任务 1 1 模拟条件 模拟区域 0 10 边界条件 Periodic 偏移角度 12 Domain A 12 Domain B 单位长度 0 5
  • 陶瓷基电路板切片制样-科学指南针

    随着电子技术在各应用领域的逐步加深 半导体正沿着大功率化 高频化 集成化方向发展 高度的集成化封装模块要求良好的散热承载系统 而传统线路板FR 4导热系数上的劣势已经成为制约电子技术发展的一个瓶颈 近些年来发展迅猛的LED产业 也对其承载线
  • 如何用VPS防火墙有效地防御DDoS攻击?

    在今天的数字时代 网络安全是至关重要的 DDoS 分布式拒绝服务 攻击是一种广泛存在的网络威胁 可以导致网站宕机 服务中断和数据泄露 为了保护您的VPS免受DDoS攻击的威胁 您可以采取一些关键步骤 其中之一是有效地配置和使用VPS防火墙
  • 《基于Essential Macleod软件的光学薄膜设计技术》(第二版 精装版)

    目录 Preface 1 内容简介 2 目录 i 1 引言 1 2 光学薄膜基础 2 2 1 一般规则 2 2 2 正交入射规则 3 2 3 斜入射规则 6 2 4 精确计算 7 2 5 相干性 8 2 6 参考文献 10 3 Essent
  • 题解 | #第二快/慢用时之差大于试卷时长一半的试卷#

    题解 牛牛的单向链表 include
  • 平台首发,《鸿蒙零基础入门学习指南》正式上线

    鸿蒙来袭 势不可挡 2019年HarmonyOS正式面世 至今鸿蒙已成长了4年 截至2023年8月 鸿蒙生态设备数量超过7亿台 已有220万开发者投入到鸿蒙生态的开发 根据Counterpoint最新数据 2023年第二季度 在中国智能手机
  • 把大模型塞进终端,能让消费电子市场回暖吗?

    过去几个月时间里 把大模型塞进终端 已然成了消费电子产业上下游心照不宣的共识 高通 AMD 英特尔等上游的芯片厂商 争相喊出了混合AI 终端AI AI计算等概念 努力向外界讲述终端AI化的想象空间 华为 小米 vivo等手机厂商 纷纷将 大
  • 【GESP】2023年06月Python一级试卷

    2023年GESP06月认证Python一级试卷 分数 100 题数 27 一 单选题 共15题 每题2分 共30分 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
  • 【GESP】2023年03月Python一级试卷

    2023年GESP03月认证Python一级试卷 分数 100 题数 27 一 单选题 共15题 每题2分 共30分 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
  • 基于java中ssm框架实校园线上点餐系统平台演示【附项目源码】

    基于java中ssm框架实校园线上点餐系统平台演示 JAVA简介 JAVA语言是目前软件市场上应用最广泛的语言开发程序 可以在多种平台上运用的 兼容性比较强 适应市面上大多数操作系统 不会出现乱码的现像 其扩展性和维护性都更好 具有分析问题
  • 社交媒体时代的隐私防线:守护个人信息的智慧之道

    社交媒体的蓬勃发展为人们提供了更广泛的社交平台 但与此同时也带来了对个人隐私的不断侵犯 本文将深入讨论在社交媒体时代 如何有效地保护个人隐私 让读者在数字社交中更加安心自在 1 数字时代的铠甲 保护你的社交隐私 这个标题旨在强调社交媒体时代
  • 毕业设计|基于SSM+JSP的家校通管理系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板