基于ssm的java web简单学生信息管理系统

基于SSM的学生信息管理系统java学生信息管理系统java系统mysql数据库课设毕设
1.包含源程序,数据库脚本。代码和数据库脚本都有详细注释。
2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善
开发环境:


Eclipse ,MYSQL,JDK1.8,Tomcat 7
涉及技术点:
MVC模式、SpringMvc、Mybatis、Spring、HTML、JavaScript、CSS、JQUERY、DWR、Ajax等
系统采用Mybatis框架实现ORM对象关系映射,前台JSP实现,后台springMvc映射,使用Spring框架进行整合。适合学习J2EE的一段时间的熟手,代码思路清晰,注解详细,数据库用的是mysql5.1,服务器用的tomcat7,JDK版本1.8. 编程软件Eclispe J2EE版本。是典型MVC架构,并且前后台分离

具体功能这里不再赘述,请下方看系统详细演示图,如果大家有什么疑问或者什么不懂得可以在下方给我留言,或者你有更好的建议等等都可以的,也可以找我和我一起交流沟通,互相学习进步!但是dai。ma。you。chang

java web简单学生信息管理系统
项目描述利用Java以及jsp等技术实现学生信息管理,学生可以自己注册登记,教师进行学生管理,快捷方便合理利用资源。

运行环境

jdk7+tomcat8+mysql+IntelliJ IDEA

项目技术(必填)

jsp+servlet+layui+jquery

<%@page import="java.util.List"%>
<%@page import="cg.student.impl.MajorDaoImpl"%>
<%@page import="cg.student.bean.Major"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script src="./js/jquery-1.7.2.min.js"></script>
<script src="./js/select-major-class.js"></script>
<link rel="stylesheet" href="./layui/css/layui.css">
</head>
<script type="text/javascript">

</script>
<body>



<div class="layui-main" style="position: relative;">
<div class="layui-logo"><h1>注册信息</h1></div>
<form class="layui-form layui-form-pane" method="post" enctype="multipart/form-data" action="./StuRegistServlet">
	<div class="layui-form-item">	
		<div class="layui-inline">
			<label class="layui-form-label layui-bg-red">学号</label>
			<div class="layui-input-inline">
				<input type="text" name="stuId" lay-verify="required|stuNum" placeholder="请输入学号" autocomplete="off" class="layui-input">
			</div>			
			<label class="layui-form-label layui-bg-red">姓名</label>
			<div class="layui-input-inline">
				<input type="text" name="stuName" lay-verify="required" placeholder="请输入姓名" autocomplete="off" class="layui-input">
			</div>			
		</div>
	</div>
	<div class="layui-form-item">	
		<div class="layui-inline">
			<label class="layui-form-label layui-bg-blue">性别</label>
    		<div class="layui-input-inline">
     			<input type="radio" name="stuSex" value="男" title="男">
      			<input type="radio" name="stuSex" value="女" title="女" checked>
    		</div>
			<label class="layui-form-label layui-bg-blue">出生日期</label>
			<div class="layui-input-inline">
				<input type="text" name="stuBirthday" id="stuBirthday" lay-verify="date" placeholder="请选择出生日期" autocomplete="off" class="layui-input">
			</div>
		</div>
	</div>
	<div class="layui-form-item">		
		<div class="layui-inline">
		 	<label class="layui-form-label layui-bg-orange">专业</label>
     		<div class="layui-input-inline">
       			<select name="major" id="major" lay-filter="major">
				<option value="">--请选择--</option>
				<%
						MajorDaoImpl md=new MajorDaoImpl();
						List <Major> list=md.listAllMajorInfo();
						for(int i=0;i<list.size();i++){
							Major m=list.get(i);
						
					 %>
					<option value="<%=m.getMajorId()%>"><%=m.getMajorName() %></option>
					<%}%>
					</option>
				</select>
     		</div>
     		<label class="layui-form-label layui-bg-orange">班级</label>
     		<div class="layui-input-inline">
       			<select name="classNum" id="classNum" lay-filter="classNum">
				<option value="">--请选择--</option>
				</select>
     		</div>
		</div>
	</div>
	<div class="layui-form-item">	
		<div class="layui-inline">
			<label class="layui-form-label layui-bg-blue">电话</label>
    		<div class="layui-input-inline">
     			<input type="tel" name="stuTelephone" lay-verify="required|phone" autocomplete="off" class="layui-input">
    		</div>
			<label class="layui-form-label layui-bg-blue">邮箱</label>
			<div class="layui-input-inline">
				<input type="text" name="stuEmail" lay-verify="email" autocomplete="off" class="layui-input">
			</div>
		</div>
	</div>
	<div class="layui-form-item">	
		<div class="layui-inline">
			<label class="layui-form-label layui-bg-blue">QQ</label>
    		<div class="layui-input-inline">
     			<input type="tel" name="stuQQ" lay-verify="required|number" autocomplete="off" class="layui-input">
    		</div>			
		</div>
	</div>
	<div class="layui-form-item">	
		<div class="layui-inline">
			<label class="layui-form-label layui-bg-blue">密码</label>
    		<div class="layui-input-inline">
     			<input type="text" name="stuPassword" id="stuPassword" lay-verify="required|pass" autocomplete="off" class="layui-input">
    		</div>
			<label class="layui-form-label layui-bg-blue">确认密码</label>
			<div class="layui-input-inline">
				<input type="text" name="con_stuPassword" id="con_stuPassword" lay-verify="required|pass|pass2" autocomplete="off" class="layui-input">
			</div>
		</div>
	</div>
	<div class="layui-form-item layui-form-text" style="width:600px;">	
		<label class="layui-form-label layui-bg-green">备注</label>
    	<div class="layui-input-block">
      		<textarea name="stuNote" placeholder="请输入备注内容" class="layui-textarea"></textarea>
    	</div>
	</div>

<div style="position:absolute; top: 25px; left: 750px;"><!-- 子DIV Start -->
	<div class="layui-upload">
		<div style="position:absolute;left:20px;top:163px;">
  			<button type="button" class="layui-btn layui-btn-danger" id="uploadimg"><i class="layui-icon"></i>选择照片</button>  			
  			<%-- <input type="file" name="pic" id="pic" lay-verify="pic" title="选择简历照片">--%>
  		</div>		
  		<img  name="img" id="img" lay-verify="img_file" style="border:#009688 solid thin;width: 148px; height: 200px;" alt="照片(PNG格式)">
  		<p id="demoText"></p>  		
	</div>
</div><!-- 子DIV End-->
<div class="layui-form-item">
    <div class="layui-input-block">
      <button class="layui-btn" lay-submit="" lay-filter="" id="lay-stuReg">注册</button>
      <button type="reset" class="layui-btn layui-btn-primary">重置</button>
      <a href="login.jsp" class="layui-btn layui-btn-primary">返回</a>
    </div>
   </div>
  
</div>
</form>
<script src="./layui/layui.js"></script>
<script>
layui.use(['layer', 'form', 'element','laydate','upload'], function() {
	var layer = layui.layer
	, $=layui.$
	, form = layui.form
	, element = layui.element
	, laydate=layui.laydate
	, upload=layui.upload;
	
	laydate.render({
		    elem: '#stuBirthday' //指定元素
		  });
	 
	//自定义验证规则
	  form.verify({
	    title: function(value){
	      if(value.length < 5){
	        return '标题至少得5个字符啊';
	      }
	    }
	    ,img_file:function(){
		      if($('#img').attr('src')==null){
			        return '请选择照片片!';
			      }
			    }
	    ,stuNum:[/(.+){11,13}$/, '学号必须11到13位']
	    ,pass: [/(.+){6,12}$/, '密码必须6到12位']
	    ,pass2:function(value){
		      if($('#stuPassword').val()!=$('#con_stuPassword').val()){
			        return '两次输入的密码不一致,请重新输入';
			      }
			    }
	    ,content: function(value){
	      layedit.sync(editIndex);
	    }
	  });
	
	//普通图片上传
	  var uploadInst = upload.render({
	    elem: '#uploadimg'
	    ,url: './StuRegistServlet'
	    ,auto: false
	    ,exts:'jpg|png|jpeg'
	    //,bindAction: '#lay-stuReg'
	    ,before: function(obj){
	      //预读本地文件示例,不支持ie8
	      obj.preview(function(index, file, result){
	        //$('#img').attr('src', result); //图片链接(base64)	        
	      });
	    }
	    ,choose: function(obj){
		    //将每次选择的文件追加到文件队列
		    var files = obj.pushFile();
		    
		    //预读本地文件,如果是多文件,则会遍历。(不支持ie8/9)
		    obj.preview(function(index, file, result){
		      $('#img').attr('src', result); //图片链接(base64)	
		      //console.log(index); //得到文件索引
		      //console.log(file); //得到文件对象
		      //console.log(result); //得到文件base64编码,比如图片
		      
		      //obj.resetFile(index, file, '123.jpg'); //重命名文件名,layui 2.3.0 开始新增
		      
		      //这里还可以做一些 append 文件列表 DOM 的操作
		      
		      //obj.upload(index, file); //对上传失败的单个文件重新上传,一般在某个事件中使用
		      //delete files[index]; //删除列表中对应的文件,一般在某个事件中使用
		    });
	    }
	    ,done: function(res){
	      //如果上传失败
	      if(res.code > 0){
	        return layer.msg('上传失败');
	      }
	      //上传成功
	     
	    }
	    ,error: function(){
	      //演示失败状态,并实现重传
	      var demoText = $('#demoText');
	      demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
	      demoText.find('.demo-reload').on('click', function(){
	        uploadInst.upload();
	      });
	    }
	  });
	
	form.on('select(major)', function(data){
		//console.log(data.elem); //得到select原始DOM对象
		console.log(data.value); //得到被选中的值
		//console.log(data.othis); //得到美化后的DOM对象
		$('#classNum').empty(); // 清空resText里面的所有内容
		var html = "<option value=''>--请选择--</option>"
		$('#classNum').append(html);
		$.ajax({
			type : "post",
			url : "./ClassServlet",
			data : {
				majorNum : data.value
			},
			dataType : "json",
			success : function(data) {
				var op_class = '';
				// alert(JSON.stringify(data));
				for ( var key in data) {
					 //alert(key); //获取key值
					 //alert(data[key]); //获取对应的value值
					op_class = "<option value='" + data[key] + "'>" + key + "</option>"
					$('#classNum').append(op_class);
				}
				form.render('select');

			}
		});

		});
});
</script>
</body>
</html>

 

package cg.student.servlet;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException;
import org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import cg.student.bean.Student;
import cg.student.dao.StudentDao;
import cg.student.impl.StudentDaoImpl;

/**
 * Servlet implementation class StuUpdateServlet
 */
@WebServlet(description = "修改个人信息", urlPatterns = { "/UpdateStuServlet" })
public class UpdateStuServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public UpdateStuServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=utf-8");
		//创建工厂类
		DiskFileItemFactory factory = new DiskFileItemFactory();
		//创建请求解析器
		ServletFileUpload fileUpload = new ServletFileUpload(factory);
		//设置上传单个文件的的大小3M
		fileUpload.setFileSizeMax(1024*1024*1);
		//设置上传总文件的大小10M
		fileUpload.setSizeMax(1024*1024*3);
		//设置响应内容的编码
		response.setContentType("text/html;charset=utf-8");
		try {
			//解析请求信息,获取FileItem的集合
			List<FileItem> items = fileUpload.parseRequest(request);
			//遍历集合
			for (FileItem fileItem : items) {
				//如果是普通的表单项-------
				if(fileItem.isFormField()){
				    //获取参数名
				    String fieldName = fileItem.getFieldName();//<input type="text" name="name"> 即name="name"
				    //获取参数值
				    String value = fileItem.getString("utf-8");//获得空间的输入值
				    System.out.println(fieldName+" = "+value);
			        //如果是文件表单项------
				    request.setAttribute(fieldName, value);
			    }else{
			    	//获取文件名
				    String fileName = fileItem.getName();
				    int index=fileName.lastIndexOf("\\");
				    if(index!=-1) {
				    	fileName=fileName.substring(index+1);
				    	}
				    //获取上传路径
				    String realPath = getServletContext().getRealPath("/upload/images");//绝对
				    String Path=request.getContextPath()+"/upload/images/";//相对				    
				    //检查upload文件夹是否存在,如果不存在则创建
				    File f = new File(realPath);
				    if(!f.exists()){
					    f.mkdir();
				    };
				    //为避免重名生成一个uuid作为文件名的前缀
				    String prefix = UUID.randomUUID().toString().replace("-", "");			
				    //将文件写入到服务器中
				    if(fileName!=null && fileName!="") {
				    fileName=prefix+"_"+fileName;
				    String fileAbsPath=realPath+File.separator+prefix+"_"+fileName;
				    String filePath=Path+prefix+"_"+fileName;				    
				    File file=new File(fileAbsPath);
				    fileItem.write(file);				    
				    //fileItem.write(new File(realPath+File.separator+fileName));
				    request.setAttribute("fileAbsURL", fileAbsPath);
				    request.setAttribute("fileURL", filePath);
				    request.setAttribute("fileName", fileName);
				    }
				    System.out.println(fileName+" = "+realPath+File.separator+fileName);
				    //清楚文件缓存
				    fileItem.delete();
			    }
		}
		} catch (Exception e) {
			if(e instanceof SizeLimitExceededException){
				//文件总大小超出限制
				response.getWriter().print("上传文件的总大小不能超过3M");
			}else if(e instanceof FileSizeLimitExceededException){
				//单个文件大小超出限制
				response.getWriter().print("上传单个文件的大小不能超过1M");
			}
		} 
		HttpSession session = request.getSession();
		//从request中取出我需要处理的值
		String stuId=(String)request.getAttribute("stuId");
		String stuName=(String)request.getAttribute("stuName");
		String stuSex=(String)request.getAttribute("stuSex");
		String stuBirthday=(String)request.getAttribute("stuBirthday");
		String majorNum=(String)request.getAttribute("major");
		
		String classNum=(String)request.getAttribute("classNum");
		String stuTelephone=(String)request.getAttribute("stuTelephone");
		String stuEmail=(String)request.getAttribute("stuEmail");
		String stuQQ=(String)request.getAttribute("stuQQ");
		String stuNote=(String)request.getAttribute("stuNote");		
		String stuPassword=(String)request.getAttribute("stuPassword");
		
		String fileURL=(String)request.getAttribute("fileURL");
		String fileAbsURL=(String)request.getAttribute("fileAbsURL");
		String fileName=(String)request.getAttribute("fileName");
		//数据库操作方法进行操作
		Student stu=new Student();
		stu.setStuId(stuId);
		stu.setStuName(stuName);
		stu.setStuSex(stuSex);
		stu.setStuBirthday(stuBirthday);
		if(majorNum!=null && majorNum!="") {
			stu.setMajorNum(Integer.parseInt(majorNum));
		}
		if(classNum!=null && classNum!="") {
			stu.setClassNum(Integer.parseInt(classNum));
		}
		stu.setStuTelphone(stuTelephone);
		stu.setStuEmail(stuEmail);
		stu.setStuQQ(stuQQ);
		stu.setStuNote(stuNote);
//		if(fileName==null) {
//			StudentDao sdao=new StudentDaoImpl();
//			Student stu1=sdao.getStuInfoByStuId(stuId);
//			if(stu1!=null) {
//				stu.setStuImgURL(stu1.getStuImgURL());
//				stu.setStuImgAbsURL(stu1.getStuImgAbsURL());
//				stu.setStuImgFileName(stu1.getStuImgFileName());
//			}
//		}else {
			stu.setStuImgURL(fileURL);
			stu.setStuImgAbsURL(fileAbsURL);
			stu.setStuImgFileName(fileName);
			stu.setStuPassword(stuPassword);
//		}
		
		
		boolean flag=false;
		
		
		PrintWriter out=response.getWriter();
		StudentDao sd=new StudentDaoImpl();
		flag=sd.updateStuInfo(stu);
		if(flag) {
			Student student=sd.getStuInfoByStuId(stuId);
			if(stu!=null) {
				session.setAttribute("user", student);
			}
	        out.println("<script>alert('修改成功')</script>");
	        response.setHeader("refresh", "2;URL=./student/update_stu.jsp");
		}else {
			 out.println("<script>alert('修改失败')</script>");
			 response.setHeader("refresh", "2;URL=./student/update_stu.jsp");
		}

	}

}

 


版权声明:本文为QQ80213251原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。