SSH JavaWeb学生信息管理系统实现
2017-12-05 21:37
543 查看
上周周末断网。。。。。无聊的时候写的demo,SSH的。
SIMS(Student Information Management System,学生信息管理系统) 包括登录、学生信息录入,修改,删除,查询,数据批量导出等等功能。
开发环境:Eclipse ,jdk1.6
框架:SpringMvc+Hibernate(ORM工具)
前台:JSP
数据库:MySQL
众所周知,Spring配置是相当头疼的,后面尽量用Springboot写一下(当然得先学,省去自己配制还是相当方便的)。本来想把项目源码放到Github上面,
但是还要自己配置,就懒得放了。。。
话不多说,先看下目录结构:
配置文件有三个,Springmvc.xml,applicationContext.xml,web.xml;
跟普通的web.xml一样,多了一个简单的过滤器,功能是判断当前用户是否登陆过。有的话放行,没有的话让其跳转到登录界面。
上面这个applicationContext.xml是配置一些bean,主要包括数据库,事务管理,上传文件等等。
SpringMvc的话功能主要是扫描注解,映射处理器,视图解析器,静态资源映射等等。
有了这几个文件,就可以完成Mvc的操作了,前台发起交易,后台处理完成返回视图经过视图解析器处理得到一个JSP页面。
这个系统有两种角色,Administrator和Student,由于是简单的demo,我就没给注册界面,手动添加了管理员信息入库,然后过滤器实现登录过滤,登录过滤如下:
下面以登录为例,请求到后台,dispatchServlet分发请求,HandlerMapping来处理映射,根据前台发的交易名字去找注解为"/login/login"的方法,即下面的Controller中的login方法。找到之后进行操作,完成返回视图,经viewResolver渲染得到JSP文件来展示。
代码就不一一罗列了,相信大家应该会。登陆进去之后,就是普通的CRUD操作了,我不会写界面,难看了别骂我。。。。
CRUD就是普通的前台发起交易,后台Controller-service-dao调用完成之后生成视图用视图解析器解析之后返回jsp页面作展示。
下面是登录界面:
登陆进来之后,是首页:
选中某个记录进行编辑:
修改完电话号码身份证号之后更新如图:
然后是各按条件查询的功能:
查询完了结果如下:
数据批量导出:
其它功能就不一一罗列了。
———————————————————————————————————————
看完《李狗嗨》和《逃避可耻但有用》,简直太好看了,被gakki萌化了,好看!!!
SIMS(Student Information Management System,学生信息管理系统) 包括登录、学生信息录入,修改,删除,查询,数据批量导出等等功能。
开发环境:Eclipse ,jdk1.6
框架:SpringMvc+Hibernate(ORM工具)
前台:JSP
数据库:MySQL
众所周知,Spring配置是相当头疼的,后面尽量用Springboot写一下(当然得先学,省去自己配制还是相当方便的)。本来想把项目源码放到Github上面,
但是还要自己配置,就懒得放了。。。
话不多说,先看下目录结构:
配置文件有三个,Springmvc.xml,applicationContext.xml,web.xml;
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>SIMS</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> <filter> <filter-name>Set Character Encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported>true</async-supported> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>openSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class> <async-supported>true</async-supported> <init-param> <param-name>sessionFactoryBeanName</param-name> <param-value>sessionFactory</param-value> </init-param> </filter> <filter-mapping> <filter-name>openSessionInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>loginFilter</filter-name> <filter-class>org.SIMS.controller.LoginFilter</filter-class> </filter> <filter-mapping> <filter-name>loginFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
跟普通的web.xml一样,多了一个简单的过滤器,功能是判断当前用户是否登陆过。有的话放行,没有的话让其跳转到登录界面。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"> <context:property-placeholder location="/WEB-INF/config/resources.properties" ignore-unresolvable="true"/> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/> <!-- 扫描注解Bean --> <context:component-scan base-package="org.**.service,org.**.dao"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!-- apache dbcp连接池配置--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${connection.driverClassName}"></property> <property name="url" value="${connection.url}"/> <property name="username" value="${connection.username}"/> <property name="password" value="${connection.password}"/> </bean> <!-- SessionFactory配置 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="packagesToScan" value="org.**.domain"/> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> <!-- 只扫描class文件,不扫描hbm,默认两个都搜索 --> <prop key="hibernate.archive.autodetection">class</prop> <!-- 不检查@NamedQuery --> <prop key="hibernate.query.startup_check">false</prop> <prop key="hibernate.query.substitutions">${hibernate.query.substitutions}</prop> <prop key="hibernate.default_batch_fetch_size">${hibernate.default_batch_fetch_size}</prop> <prop key="hibernate.max_fetch_depth">${hibernate.max_fetch_depth}</prop> <prop key="hibernate.generate_statistics">${hibernate.generate_statistics}</prop> <prop key="hibernate.bytecode.use_reflection_optimizer">${hibernate.bytecode.use_reflection_optimizer}</prop> </props> </property> <property name="namingStrategy"> <bean class="org.hibernate.cfg.ImprovedNamingStrategy" /> </property> </bean> <!-- 事务管理 --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- 事务注解 --> <tx:annotation-driven transaction-manager="transactionManager"/> </beans>
上面这个applicationContext.xml是配置一些bean,主要包括数据库,事务管理,上传文件等等。
SpringMvc的话功能主要是扫描注解,映射处理器,视图解析器,静态资源映射等等。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 开启controller注解支持 --> <context:component-scan base-package="org.**.controller"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!-- 注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapte --> <mvc:annotation-driven /> <mvc:view-controller path="/" view-name="redirect:/index"/> <!-- 当在web.xml 中 DispatcherServlet使用 <url-pattern>/</url-pattern> 映射时,能映射静态资源 --> <mvc:default-servlet-handler/> <!-- 静态资源映射 --> <mvc:resources mapping="/static/**" location="/WEB-INF/static/"/> <!-- 默认的视图解析器 在上边的解析错误时使用 (默认使用html)- --> <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="contentType" value="text/html"/> <property name="prefix" value="/WEB-INF/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
有了这几个文件,就可以完成Mvc的操作了,前台发起交易,后台处理完成返回视图经过视图解析器处理得到一个JSP页面。
这个系统有两种角色,Administrator和Student,由于是简单的demo,我就没给注册界面,手动添加了管理员信息入库,然后过滤器实现登录过滤,登录过滤如下:
package org.SIMS.controller; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.SIMS.domain.Administrator; /** * Servlet Filter implementation class LoginFilter */ @WebFilter("/LoginFilter") public class LoginFilter implements Filter { /** * Default constructor. */ public LoginFilter() { // TODO Auto-generated constructor stub } /** * @see Filter#destroy() */ public void destroy() { // TODO Auto-generated method stub } /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub // place your code here HttpServletRequest req= (HttpServletRequest)request; HttpServletResponse res= (HttpServletResponse)response; String url = req.getRequestURI(); HttpSession session = req.getSession(); Administrator ad = (Administrator) session.getAttribute("Admin"); System.out.println(session.getAttribute("Admin")); if(ad!=null || url.endsWith("login")||url.endsWith(".css")||url.endsWith(".js")||url.endsWith("gakki.png")||url.endsWith("loginfmbg.png")||url.endsWith("SSH_market/")){//第一次登录的话放行,不然跳转至登陆页面 // pass the request along the filter chain chain.doFilter(req, res); }else{ //未登录的话就跳转至登陆页面 req.getRequestDispatcher("/login.jsp").forward(req, res); } } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig fConfig) throws ServletException { // TODO Auto-generated method stub } }
下面以登录为例,请求到后台,dispatchServlet分发请求,HandlerMapping来处理映射,根据前台发的交易名字去找注解为"/login/login"的方法,即下面的Controller中的login方法。找到之后进行操作,完成返回视图,经viewResolver渲染得到JSP文件来展示。
package org.SIMS.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.SIMS.domain.Administrator; import org.SIMS.service.StudentService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/login") public class LoginController { @Autowired private StudentService studentservice; @RequestMapping("/login") public String login(HttpServletRequest request,HttpServletResponse response){ String name = request.getParameter("name"); String pwd =request.getParameter("pwd"); Administrator ad = studentservice.getAdmin(name,pwd); if(ad==null){ //失败的情况,跳转失败页面要么重新登录 System.out.println("没有该用户!"); } request.getSession().setAttribute("Admin", ad); return "redirect:/index.jsp"; } }
代码就不一一罗列了,相信大家应该会。登陆进去之后,就是普通的CRUD操作了,我不会写界面,难看了别骂我。。。。
CRUD就是普通的前台发起交易,后台Controller-service-dao调用完成之后生成视图用视图解析器解析之后返回jsp页面作展示。
下面是登录界面:
登陆进来之后,是首页:
选中某个记录进行编辑:
修改完电话号码身份证号之后更新如图:
然后是各按条件查询的功能:
查询完了结果如下:
数据批量导出:
其它功能就不一一罗列了。
———————————————————————————————————————
看完《李狗嗨》和《逃避可耻但有用》,简直太好看了,被gakki萌化了,好看!!!
相关文章推荐
- javaWeb实现学生信息管理系统
- python下学生管理系统:从文件中读取30位学生的信息(含邮箱),并实现简单的增、删、查找、统计(邮箱使用人数)。---附程序哦!
- java(swing)+ mysql实现学生信息管理系统源码
- 文件IO 实现学生信息管理系统
- java(swing)+mysql实现学生信息管理系统
- C++链表类的三种使用方法(学生信息管理系统的实现)
- C语言数组实现学生信息管理系统
- 学生信息管理系统--(Java+MySQL实现)
- C++实现学生信息管理系统
- 实现简单的学生选课信息管理系统
- 使用python实现一个简单的学生信息管理系统
- Java swing mysql实现的学生学院班级信息管理系统V1.1附带视频运行指导教程
- 学生信息管理系统之单链表实现
- java web学生信息管理系统的实现及源码(jsp servlet)
- 简单实现了一个学生成绩信息管理系统
- 学生信息管理系统(二)——数据库分析与实现
- 【Win32编程初探】学生信息管理系统的实现
- Java swing mysql实现的学生学院班级信息管理系统V1.1附带视频运行指导教程
- 学生信息管理系统(C实现)
- 使用单向链表实现学生信息管理系统