基于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版权协议,转载请附上原文出处链接和本声明。