基于web的学生管理系统(二)java代码阶段
2021/11/27 11:12:01
本文主要是介绍基于web的学生管理系统(二)java代码阶段,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
代码实现
(一)dao包下代码
1、BaseDao
package com.offcn.dao; import com.mchange.v2.c3p0.ComboPooledDataSource; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.apache.commons.dbutils.handlers.ScalarHandler; import java.sql.SQLException; import java.util.List; public class BaseDao<T> { static ComboPooledDataSource ds = null; static QueryRunner qr = null; static{ ds = new ComboPooledDataSource();//创建c3p0的连接池对象 qr = new QueryRunner(ds); } //封装增删改方法 public int update(String sql,Object...params){ try { return qr.update(sql,params); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(); } } //单行查询 public T queryOne(String sql,Class<T> clazz,Object... params){ try { return qr.query(sql,new BeanHandler<>(clazz),params); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(); } } //多行查询 public List<T> queryMore(String sql, Class<T> clazz, Object...params){ try { return qr.query(sql,new BeanListHandler<>(clazz),params); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(); } } //聚合查询 public Number queryScar(String sql,Object...params){ try { return qr.query(sql,new ScalarHandler<Number>(),params); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(); } } }
2、StudentDao
package com.offcn.dao; import com.offcn.entity.Page; import com.offcn.entity.Student; import java.util.List; public class StudentDao extends BaseDao<Student> { //删除学生信息 public boolean delete(int id){ String sql = "delete from stu where sid=?"; return update(sql,id)>0 ? true : false; } //添加学生信息 public boolean insert(Student s){ String sql = "insert into stu(name,age,tel,bir,sex,spic)values(?,?,?,?,?,?)"; Object[] param={s.getName(),s.getAge(),s.getTel(),s.getBir(),s.getSex(),s.getSpic()}; return update(sql,param)>0 ? true : false; } //根据id查询学生信息 public Student stuSinSer(int id){ String sql = "select * from stu where sid=?"; return queryOne(sql,Student.class,id); } //修改学生信息 public boolean updateStu(Student s,int id){ String sql = "update stu set name=?,age=?,tel=?,bir=?,sex=?,spic=?where sid=?"; Object[] param={s.getName(),s.getAge(),s.getTel(),s.getBir(),s.getSex(),s.getSpic(),id}; return update(sql,param)>0 ? true : false; } //模糊查询 public List<Student> StuLike(String name,String sex,Page p){ StringBuffer sql = new StringBuffer("select * from stu where 1=1"); if(name!=null&&!"".equals(name)){ sql.append(" and name like '%"+name+"%'"); } if("0".equals(sex)||"1".equals(sex)){ sql.append(" and sex="+sex); } sql.append(" limit ?,?"); return queryMore(sql.toString(),Student.class,p.getStartIndex(),p.getPageSize()); } public int LikeNum(String name,String sex){ StringBuffer sql = new StringBuffer("select count(*) from stu where 1=1"); if(name!=null&&!"".equals(name)){ sql.append(" and name like '%"+name+"%'"); } if("0".equals(sex)||"1".equals(sex)){ sql.append(" and sex="+sex); } return queryScar(sql.toString()).intValue(); } }
3、UserDao
package com.offcn.dao; import com.offcn.entity.User; public class UserDao extends BaseDao<User> { //根据用户名和密码查询用户信息 public User login(String username,String password){ String sql = "select * from user where username=? and pwd=?"; return queryOne(sql,User.class,username,password); } //添加用户信息 public Boolean register(User u){ String sql = "insert into user(username,pwd,name,tel,bir) values(?,?,?,?,?)"; Object[] param = {u.getUsername(),u.getPwd(),u.getName(),u.getTel(),u.getBir()}; return update(sql,param)>0 ? true : false; } }
(二)entity包下代码
1.Student类
package com.offcn.entity; import java.util.Date; public class Student { private int sid; private String name; private int age; private String tel; private Date bir; private int sex; private String spic; public Student() { } public Student(String name, int age, String tel, Date bir, int sex, String spic) { this.name = name; this.age = age; this.tel = tel; this.bir = bir; this.sex = sex; this.spic = spic; } public String getSpic() { return spic; } public void setSpic(String spic) { this.spic = spic; } public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } public Date getBir() { return bir; } public void setBir(Date bir) { this.bir = bir; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } }
2、User类
package com.offcn.entity; import java.util.Date; public class User { private String username; private String pwd; private String name; private String tel; private Date bir; public User() { } public User(String username, String pwd, String name, String tel, Date bir) { this.username = username; this.pwd = pwd; this.name = name; this.tel = tel; this.bir = bir; } @Override public String toString() { return "User{" + "username='" + username + '\'' + ", pwd='" + pwd + '\'' + ", name='" + name + '\'' + ", tel='" + tel + '\'' + ", bir=" + bir + '}'; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } public Date getBir() { return bir; } public void setBir(Date bir) { this.bir = bir; } }
3、Page类
package com.offcn.entity; public class Page { private int curPage;//当前页 private int pageSize;//页容量 private int nextPage;//下一页 private int prevPage;//上一页 private int rows;//总记录数 private int endPage;//总页数 private int startIndex;//每一页的起始行下标 //总体初始化 public Page(int rows,String curPage) { this.rows = rows; this.pageSize=5; initCurPage(curPage); initPrevPage(); initEndPage(); initNextPage(); initStartIndex(); } //属性初始化 //初始化当前页 public void initCurPage(String curPage){ //当页面不传当前页,或当前页为空字符串默认首页 if(curPage==null||"".equals(curPage)){ this.curPage = 1; }else { this.curPage=Integer.valueOf(curPage); } } //初始化上一页 public void initPrevPage(){ if(curPage>1){ prevPage=curPage-1; }else { prevPage=1; } } //初始化下一页 public void initNextPage(){ if(curPage<endPage){ nextPage=curPage+1; }else { nextPage=endPage; } } //初始化总页数 public void initEndPage(){ if(rows%pageSize==0){ endPage=rows/pageSize; }else { endPage=rows/pageSize+1; } } //初始化起始行 public void initStartIndex(){ startIndex=(curPage-1)*pageSize; } public int getCurPage() { return curPage; } public void setCurPage(int curPage) { this.curPage = curPage; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getNextPage() { return nextPage; } public void setNextPage(int nextPage) { this.nextPage = nextPage; } public int getPrevPage() { return prevPage; } public void setPrevPage(int prevPage) { this.prevPage = prevPage; } public int getRows() { return rows; } public void setRows(int rows) { this.rows = rows; } public int getEndPage() { return endPage; } public void setEndPage(int endPage) { this.endPage = endPage; } public int getStartIndex() { return startIndex; } public void setStartIndex(int startIndex) { this.startIndex = startIndex; } }
(三)filter包下代码
1、EncodeFilter类
package com.offcn.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; //Filter过滤器,解决乱码 @WebFilter("/*") public class EncodeFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { servletRequest.setCharacterEncoding("utf-8"); servletResponse.setContentType("text/html;charset=utf-8"); filterChain.doFilter(servletRequest,servletResponse); } }
2、LoginFilter类
package com.offcn.filter; import com.offcn.entity.User; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; //登录过滤器 @WebFilter("/*") public class LoginFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { //向下转型 HttpServletRequest req = (HttpServletRequest)servletRequest; HttpServletResponse resp = (HttpServletResponse)servletResponse; //获取uri地址 String uri = req.getRequestURI(); //截取出需要的地址 String uriPath = uri.substring(uri.lastIndexOf("/")+1); //判断,所有登录之前的操作直接放行,否则查看是否有用户信息,有就直接放行,没有就回到登录页面去登录 if("register.jsp".equals(uriPath)||"register".equals(uriPath)||"hello".equals(uriPath)||"index.jsp".equals(uriPath)){ filterChain.doFilter(req,resp); }else { HttpSession session = req.getSession(); Object user = (User)session.getAttribute("user"); if(user!=null){ filterChain.doFilter(req,resp); }else{ resp.sendRedirect("index.jsp"); } } } }
(四)login包下代码
1、Login类
package com.offcn.login; import com.offcn.dao.UserDao; import com.offcn.entity.User; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.*; import java.io.IOException; @WebServlet("/hello") public class Login extends HttpServlet{ //实例化dao对象 UserDao ud = new UserDao(); @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //从网页上获取用户名和用户密码 String username = req.getParameter("username"); String password = req.getParameter("password"); //获取记住密码的勾选状态 String save = req.getParameter("save"); //调用userdao的登录方法,用一个User对象接收 User us = ud.login(username,password); //判断us是否有值,有值,则用户存在切密码正确,进行登录操作,没值则进入登录失败页面 if(us != null){ //如果记住密码勾选,则进行记住密码操作 if("checkon".equals(save)){ //创建Cookie对象,将用户输入的用户名和密码存入Cookie //实现记住密码功能 Cookie c1 = new Cookie("username",us.getUsername()); Cookie c2 = new Cookie("password",us.getPwd()); //给Cookie设置过期时间 c1.setMaxAge(60*60*24*7); c2.setMaxAge(60*60*24*7); //将Cookie响应到浏览器 resp.addCookie(c1); resp.addCookie(c2); } //实现用户跟踪校验功能,没有登录没法进入其他页面 //创建session,将us对象绑定到session HttpSession session = req.getSession(); session.setAttribute("user",us); //登录之后转发到主页面 req.getRequestDispatcher("student").forward(req,resp); }else { //登录失败进入登录失败页面 resp.sendRedirect("login_fail.jsp"); } } }
2、LoginOut类
package com.offcn.login; 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 java.io.IOException; @WebServlet("/logout") public class LogOut extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { HttpSession session = req.getSession(); session.invalidate(); resp.sendRedirect("index.jsp"); } }
3、Register类
package com.offcn.login; import com.offcn.dao.UserDao; import com.offcn.entity.User; 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 java.io.IOException; //注册 @WebServlet("/register") public class Register extends HttpServlet { UserDao ud = new UserDao(); @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取信息 String username = req.getParameter("username"); String pwd = req.getParameter("pwd"); String name = req.getParameter("name"); String tel = req.getParameter("tel"); String bir = req.getParameter("bir"); //存入数据库 User u = new User(username,pwd,name,tel,DateUtil.dateformat(bir)); boolean b = ud.register(u); if(b){ resp.sendRedirect("index.jsp"); }else { resp.sendRedirect("register.jsp"); } } }
4、InsertServlet类
package com.offcn.login; import com.offcn.dao.StudentDao; import com.offcn.entity.Student; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; import java.io.File; import java.io.IOException; import java.util.UUID; //插入学生信息操作 @MultipartConfig @WebServlet("/insert") public class InsertServlet extends HttpServlet { //实例化StudentDao StudentDao sd = new StudentDao(); @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取页面中输入的学生信息 String name = req.getParameter("name"); String age = req.getParameter("age"); String tel = req.getParameter("tel"); String bir = req.getParameter("bir"); String sex = req.getParameter("sex"); Part part = req.getPart("spic"); //获取图片信息的名字 String filename = part.getSubmittedFileName(); //给图片重新命名 filename = UUID.randomUUID()+filename; //图片的保存路径 String path = "d:/pic"; //实例化Student,并将获取的学生信息传入 Student student = new Student(name,Integer.parseInt(age),tel,DateUtil.dateformat(bir),Integer.parseInt(sex),filename); //调用插入学生信息方法,将信息传入数据库 boolean b = sd.insert(student); if(b){ //如果插入成功,则创建文件夹存储图片,并跳转回主页面 File f = new File(path); if(!f.exists()){ f.mkdir(); } part.write(path+File.separator+filename); resp.sendRedirect("student"); } } }
5、DeleteServlet类
package com.offcn.login; import com.offcn.dao.StudentDao; import javax.servlet.ServletContext; 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 java.io.IOException; //删除操作的servlet @WebServlet("/delete") public class deleteServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取要删除学生的id int id = Integer.parseInt(req.getParameter("id")); //实例化StudentDao StudentDao sd = new StudentDao(); //调用删除学生信息方法 boolean b = sd.delete(id); //删除之后跳转回主页面 resp.sendRedirect("student"); } }
6、StuServlet类
package com.offcn.login; import com.offcn.dao.StudentDao; import com.offcn.entity.Page; import com.offcn.entity.Student; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; @MultipartConfig @WebServlet("/student") public class StuServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String curPage = req.getParameter("curPage"); String name = req.getParameter("name"); String sex = req.getParameter("sex"); StudentDao sd = new StudentDao(); int rows = sd.LikeNum(name,sex); Page p = new Page(rows,curPage); List<Student> list = sd.StuLike(name,sex,p); req.setAttribute("list",list); req.setAttribute("p",p); req.setAttribute("name",name); req.setAttribute("sex",sex); req.getRequestDispatcher("stuservlet.jsp").forward(req,resp); } }
7、UpdateServlet类
package com.offcn.login; import com.offcn.dao.StudentDao; import com.offcn.entity.Student; 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 java.io.IOException; import java.io.PrintWriter; @WebServlet("/update") public class UpdateServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String id = req.getParameter("id"); StudentDao sd = new StudentDao(); Student s1 = sd.stuSinSer(Integer.parseInt(id)); req.setAttribute("s1",s1); req.getRequestDispatcher("/update.jsp").forward(req,resp); } }
8、Update2类
package com.offcn.login; import com.offcn.dao.StudentDao; import com.offcn.entity.Student; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.UUID; @MultipartConfig @WebServlet("/update2") public class Update2 extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { StudentDao sd = new StudentDao(); String id = req.getParameter("id"); String name = req.getParameter("name"); String age = req.getParameter("age"); String tel = req.getParameter("tel"); String bir = req.getParameter("bir"); String sex = req.getParameter("sex"); String spic = req.getParameter("spic"); Part part = req.getPart("newspic"); String path = "d:/pic"; String filename = part.getSubmittedFileName(); String pic = spic; if(!"".equals(filename)){ filename= UUID.randomUUID()+filename; pic = filename; part.write(path+File.separator+pic); File f = new File(path+File.separator+spic); f.delete(); } Student s2 = new Student(name,Integer.parseInt(age),tel,DateUtil.dateformat(bir),Integer.parseInt(sex),pic); boolean b = sd.updateStu(s2,Integer.parseInt(id)); if(b){ resp.sendRedirect("student"); } } }
9、DateUtils类
package com.offcn.login; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; //日期工具类 //做字符串转日期,日期转字符串的操作 public class DateUtil { //将字符串转为日期类型 public static Date dateformat(String s){ SimpleDateFormat sdf = new SimpleDateFormat("YY-MM-dd"); try { return sdf.parse(s); } catch (ParseException e) { e.printStackTrace(); throw new RuntimeException(); } } //将日期类型转为字符串 public static String format(Date d){ SimpleDateFormat sdf = new SimpleDateFormat("YY-MM-dd"); try { return sdf.format(d); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(); } } }
这篇关于基于web的学生管理系统(二)java代码阶段的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)