Resource download: https://download.csdn.net/download/weixin_44893902/45603211
Exercise point design: fuzzy query, delete, add
1, Language and environment
- Implementation language: JAVA language.
- Environment requirements: MyEclipse/Eclipse + Tomcat + MySql.
- Use technology: Jsp+Servlet+JavaBean or spring MVC + Spring + mybatis.
2, Realize function
With the development of digital information, it is necessary to make a student information management system. The main functions are as follows:
1. The home page displays all student information by default, as shown in Figure 1.
2. When the mouse hovers over a row of data, the light bar effect is displayed in linear transition animation, as shown in Figure 2.
3. Enter the student name and click query to complete the fuzzy query and display the query results, as shown in Figure 3.
4. When the user clicks delete, a prompt box will pop up. After the user clicks OK, the selected data will be deleted and the latest data will be displayed, as shown in Figure 4 and figure 5.
5. The user clicks the "add" button to open the new page. After filling in the relevant information, click the Add button to add the student information data to the database, and the page jumps to the list page to display the latest data, as shown in Figure 6 and Figure 7.
3, Database design
1. Create a database (stu_db).
2. Create a data table (student) with the following structure.
Field name | explain | Field type | length | remarks |
---|---|---|---|---|
id | number | int | Primary key, auto increment | |
name | Student name | varchar | 50 | Cannot be empty |
age | Age | int | Cannot be empty | |
classes | Class name | varchar | 50 | Cannot be empty |
birth | date of birth | date | Cannot be empty |
4, Recommended implementation steps
1. The implementation steps of SSM version are as follows:
(1) Create database and data table and add test data (add at least 4 test data).
(2) Create a Web project, create various packages, and import the jar files required by the project.
(3) Add relevant SSM framework support.
(4) Various configuration files required by the configuration project (mybatis configuration file, spring configuration file, spring MVC configuration file).
(5) Create an entity class.
(6) Mapper interface required to create MyBatis operation database and its Xml mapping database operation statement file.
(7) Create corresponding interfaces and implementation classes of business logic, implement corresponding businesses, and add references and injections to DAO/Mapper in the classes.
(8) Create the Controller class, add reference and injection to the business logic class in the Controller, and configure the spring MVC configuration file.
(9) Create relevant operation pages and beautify the pages with CSS.
(10) Realize various operation functions of the page and verify them in relevant places. The operation should be humanized.
(11) After debugging and running successfully, export relevant database files and submit them.
5, Implementation code
1. MySQL database
stu_db.sql
2. Project Java code
directory structure
student
JAR package:
src
com.controller
StudentController.java
package com.controller; import java.util.List; import javax.annotation.Resource; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.dao.StudentMapper; import com.entity.Student; import com.service.StudentService; @Controller public class StudentController { @Resource StudentService service; @RequestMapping("/selectStudent") public ModelAndView selectStudent(String keyword) { List<Student> studentList=service.selectAll(keyword); if (keyword==null||keyword.trim().equals("")) { keyword=""; } System.out.println("123456"); ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("studentList", studentList); modelAndView.setViewName("student"); return modelAndView; } @RequestMapping("/delStudent") public String delStudent(int id) { int del=service.delStudent(id); return "redirect:/selectStudent.do"; } @RequestMapping("/jumpInsert") public String jumpInsert() { return "addStudent"; } @RequestMapping("/insertStudent") public String insertStudent(Student student) { int add=service.insertStudent(student); return "redirect:/selectStudent.do"; } }
com.dao
StudentMapper.java
package com.dao; import com.entity.Student; import java.util.List; public interface StudentMapper { int deleteByPrimaryKey(Integer id); int insert(Student record); Student selectByPrimaryKey(Integer id); List<Student> selectAll(); int updateByPrimaryKey(Student record); List<Student> likeSelect(String keyword); }
StudentMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.dao.StudentMapper" > <resultMap id="BaseResultMap" type="com.entity.Student" > <id column="id" property="id" jdbcType="INTEGER" /> <result column="name" property="name" jdbcType="VARCHAR" /> <result column="age" property="age" jdbcType="INTEGER" /> <result column="classes" property="classes" jdbcType="VARCHAR" /> <result column="birth" property="birth" jdbcType="VARCHAR" /> </resultMap> <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" > delete from student where id = #{id,jdbcType=INTEGER} </delete> <insert id="insert" parameterType="com.entity.Student" > insert into student (id, name, age, classes, birth) values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}, #{classes,jdbcType=VARCHAR}, #{birth,jdbcType=VARCHAR}) </insert> <update id="updateByPrimaryKey" parameterType="com.entity.Student" > update student set name = #{name,jdbcType=VARCHAR}, age = #{age,jdbcType=INTEGER}, classes = #{classes,jdbcType=VARCHAR}, birth = #{birth,jdbcType=VARCHAR} where id = #{id,jdbcType=INTEGER} </update> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" > select id, name, age, classes, birth from student where id = #{id,jdbcType=INTEGER} </select> <select id="selectAll" resultMap="BaseResultMap" > select id, name, age, classes, birth from student </select> <select id="likeSelect" resultMap="BaseResultMap" > select id, name, age, classes, birth from student where `name` LIKE "%"#{name}"%" </select> </mapper>
com.entity
Student.java
package com.entity; public class Student { private Integer id; private String name; private Integer age; private String classes; private String birth; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name == null ? null : name.trim(); } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getClasses() { return classes; } public void setClasses(String classes) { this.classes = classes == null ? null : classes.trim(); } public String getBirth() { return birth; } public void setBirth(String birth) { this.birth = birth == null ? null : birth.trim(); } }
com.generator
Generator.java
package com.generator; import java.io.IOException; import java.io.InputStream; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.mybatis.generator.api.MyBatisGenerator; import org.mybatis.generator.config.Configuration; import org.mybatis.generator.config.xml.ConfigurationParser; import org.mybatis.generator.exception.InvalidConfigurationException; import org.mybatis.generator.exception.XMLParserException; import org.mybatis.generator.internal.DefaultShellCallback; public class Generator { /* * targetRuntime="MyBatis3Simple", Do not generate Example */ public void generateMyBatis() { //Warning messages during MBG execution List<String> warnings = new ArrayList<String>(); //When the generated code is repeated, the original code is overwritten boolean overwrite = true ; //String generatorFile = "/generator/generatorConfig.xml"; String generatorFile = "/generatorConfig.xml"; //Read MBG configuration file InputStream is = Generator.class.getResourceAsStream(generatorFile); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config; try { config = cp.parseConfiguration(is); DefaultShellCallback callback = new DefaultShellCallback(overwrite); //Create MBG MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); //Execute generated code myBatisGenerator.generate(null); } catch (IOException e) { e.printStackTrace(); } catch (XMLParserException e) { e.printStackTrace(); } catch (InvalidConfigurationException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } for (String warning : warnings) { System.out.println(warning); } } public static void main(String[] args) { Generator generator = new Generator(); generator.generateMyBatis(); } }
com.service
StudentService.java
package com.service; import java.util.List; import com.entity.Student; public interface StudentService { //query List<Student> selectAll(String keyword); //delete int delStudent(int id); //add to int insertStudent(Student student); }
com.service.imp
StudentServiceImpl.java
package com.serviceImpl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.dao.StudentMapper; import com.entity.Student; import com.service.StudentService; @Service public class StudentServiceImpl implements StudentService { @Resource StudentMapper mapper; @Override // query public List<Student> selectAll(String keyword) { if (keyword == null || keyword.trim().equals("")) { List<Student> selectAll = mapper.selectAll(); return selectAll; } else { List<Student> likeSelect = mapper.likeSelect(keyword); return likeSelect; } } // delete @Override public int delStudent(int id) { int del = mapper.deleteByPrimaryKey(id); return del; } // add to @Override public int insertStudent(Student student) { int insert = mapper.insert(student); return insert; } }
mybatis
sqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- alias --> <typeAliases> <package name="com.entity" /> </typeAliases> </configuration>
spring
applicationContext-dao.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd "> <!-- appoint spring Container read db.properties file --> <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder> <!-- Register connection pool with bean In container --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${jdbc.driver}"></property> <property name="Url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean> <!-- to configure SqlSessionFactory --> <bean class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- set up MyBatis Core profile --> <property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml" /> <!-- set up data sources --> <property name="dataSource" ref="dataSource" /> </bean> <!-- to configure Mapper scanning --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- set up Mapper Scan package --> <property name="basePackage" value="com.dao" /> </bean> <!-- Configure transaction manager --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- Enable annotation mode management AOP affair --> <tx:annotation-driven transaction-manager="transactionManager" /> </beans>
applicationContext-service.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd "> <!-- to configure Service scanning --> <context:component-scan base-package="com" /> </beans>
spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd "> <!-- to configure Controller scanning --> <context:component-scan base-package="com.controller" /> <!-- Configure annotation driven --> <mvc:annotation-driven /> <!-- Configure view parser --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- prefix --> <property name="prefix" value="/WEB-INF/jsp/" /> <!-- suffix --> <property name="suffix" value=".jsp" /> </bean> </beans>
generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <!-- Configuration Generator --> <generatorConfiguration> <context id="MySQLContext" targetRuntime="MyBatis3Simple" defaultModelType="flat"> <!-- Configure leading and trailing delimiters --> <property name="beginningDelimiter" value="`" /> <property name="endingDelimiter" value="`" /> <!-- Configure comment information --> <commentGenerator> <!-- Do not generate comments --> <property name="suppressAllComments" value="true" /> <property name="suppressDate" value="true" /> <property name="addRemarkComments" value="true" /> </commentGenerator> <!-- Database connection configuration --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/stu_db" userId="root" password="root"> </jdbcConnection> <!-- targetPackage: Generate the package name stored in the entity class, targetProject: Specify the target project path, either relative or absolute --> <javaModelGenerator targetPackage="com.entity" targetProject="src"> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- to configure SQL Mapper Mapper.xml File properties --> <sqlMapGenerator targetPackage="com.dao" targetProject="src" /> <!-- type="XMLMAPPER": All the methods are in use XML Interface call dependency XML file --> <javaClientGenerator targetPackage="com.dao" type="XMLMAPPER" targetProject="src" /> <!-- Generate mappings for all tables --> <table tableName="%"></table> </context> </generatorConfiguration>
jdbc.properties
jdbc.url=jdbc:mysql://localhost:3306/stu_db?useUnicode=true&characterEncoding=UTF-8&useSSL=false jdbc.username=root jdbc.password=123456 jdbc.driver=com.mysql.jdbc.Driver
WebContent
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>library.two</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</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> <!--spring container --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/applicationContext-*.xml</param-value> </context-param> <!-- Listener, loading spring to configure --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Front end controller --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- set up post Requested character encoding filter --> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
JSP
Home.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":" +request.getServerPort()+path; %> <html> <head> <meta charset="utf-8"> <title>Student information management system</title> </head> <body> <script type="text/javascript"> window.location.href="<%=basePath%>/selectStudent.do"; </script> </body> </html>
addStudent.jsp
<?xml version="1.0" encoding="UTF-8" ?> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title></title> </head> <body> <div class="addMoot"> <form action="insertStudent.do" method="post"> <input type="hidden" name="id" value="${studentList.id}" /> <p class="add_title">Enter new students</p> <table border="0" cellspacing="0" cellpadding="0"> <tr> <td>Student name:</td> <td><input type="text" name="name" value="${student.name}"></td> </tr> <tr> <td>Age:</td> <td><input type="text" name="age" value="${student.age}"></td> </tr> <tr> <td>Class name:</td> <td><input type="text" name="classes" value="${student.classes}"></td> </tr> <tr> <td>birthday:</td> <td><input type="date" name="birth" value="${student.birth}"></td> </tr> <tr> <td class="btn" colspan="2"><input class="button" type="submit" value="newly added" /> <input class="reset" type="button" onclick="history.go(-1);" value="cancel" /></td> </tr> </table> </form> </div> </body> </html>
student.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <head> <meta charset="utf-8"> <title>Student information management system</title> </head> <style type="text/css"> tr:hover { background: orange; } </style> <body> <form action=""> <fieldset style="height: 60px"> <legend> search</legend> full name:<input type="text" placeholder="Please enter a name to search" name="keyword" style="height: 25px;" /> <button type="submit">query</button> <button> <a href="jumpInsert.do">newly added</a> </button> </fieldset> </form> <table border="1px"> <tr> <th>number</th> <th>Student name</th> <th>Age</th> <th>Class name</th> <th>birthday</th> <th>operation</th> </tr> <c:forEach var="student" items="${studentList }" varStatus="item"> <tr> <td>${student.id}</td> <td>${student.name}</td> <td>${student.age}</td> <td>${student.classes}</td> <td>${student.birth}</td> <td><a onclick="del(${student.id})">delete</a></td> </tr> </c:forEach> </table> <div> <span>common ${studentList.size()}Data bar</span> </div> <script type="text/javascript"> function del(id){ if(confirm("Are you sure you want to delete?")){ return window.location.href="delStudent.do?id="+id; }else { return false; } } </script> </body> </html>