需求:完成学生注册和信息浏览。
1 建表 Student
数据库名称ssm1
表名student,id属性设置为自增,其他属性默认保持不变
2 新建 Web 工程
工程名称ssm1
3 maven 依赖 (pom.xml文件)
- <?xml version="1.0" encoding="UTF-8"?>
-
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>com.it</groupId>
- <artifactId>ssm1</artifactId>
- <version>1.0-SNAPSHOT</version>
- <packaging>war</packaging>
-
-
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <maven.compiler.source>1.8</maven.compiler.source>
- <maven.compiler.target>1.8</maven.compiler.target>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.11</version>
- <scope>test</scope>
- </dependency>
- <!--servlet依赖-->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.1.0</version>
- <scope>provided</scope>
- </dependency>
-
- <!-- jsp依赖 -->
- <dependency>
- <groupId>javax.servlet.jsp</groupId>
- <artifactId>jsp-api</artifactId>
- <version>2.2.1-b03</version>
- <scope>provided</scope>
- </dependency>
- <!--springmvc依赖-->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>5.2.5.RELEASE</version>
- </dependency>
- <!--事务的依赖-->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-tx</artifactId>
- <version>5.2.5.RELEASE</version>
- </dependency>
- <!--事务相关的依赖-->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-jdbc</artifactId>
- <version>5.2.5.RELEASE</version>
- </dependency>
- <!--jackson的依赖-->
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- <version>2.9.0</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>2.9.0</version>
- </dependency>
- <!--mybatis整合依赖-->
- <dependency>
- <groupId>org.mybatis</groupId>
- <artifactId>mybatis-spring</artifactId>
- <version>1.3.1</version>
- </dependency>
- <!--mybatis依赖-->
- <dependency>
- <groupId>org.mybatis</groupId>
- <artifactId>mybatis</artifactId>
- <version>3.5.1</version>
- </dependency>
- <!--mysql驱动的依赖-->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.1.9</version>
- </dependency>
- <!--druid数据库连接池依赖-->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid</artifactId>
- <version>1.1.12</version>
- </dependency>
-
- </dependencies>
-
- <build>
- <resources>
- <resource>
- <directory>src/main/java</directory><!--所在的目录-->
- <includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
- <include>**/*.properties</include>
- <include>**/*.xml</include>
- </includes>
- <filtering>false</filtering>
- </resource>
- </resources>
-
- <plugins>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.1</version>
- <configuration>
- <source>1.8</source>
- <target>1.8</target>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </project>
jsp 文件:
5 编写配置文件
Jdbc 属性配置文件 jdbc.properties
- jdbc.url=jdbc:mysql://localhost:3306/ssm1
- jdbc.username=root
- jdbc.password=123456
Spring 配置文件 applicationContext.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:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
- <!--spring配置文件:声明service,dao,工具类等对象-->
-
- <!-- 声明数据库连接属性文件的位置-->
- <context:property-placeholder location="classpath:conf/jdbc.properties"/>
- <!-- 声明数据源,连接数据库-->
- <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
- init-method="init" destroy-method="close">
- <property name="url" value="${jdbc.url}"/>
- <property name="username" value="${jdbc.username}"/>
- <property name="password" value="${jdbc.password}"/>
- </bean>
-
- <!-- 声明SqlSessionFactoryBean创建SqlSessionFactory-->
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <property name="dataSource" ref="dataSource"/>
- <property name="configLocation" value="classpath:conf/mybatis.xml"/>
- </bean>
-
- <!-- 声明mybatis的扫描器,创建dao对象-->
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
- <property name="basePackage" value="com.it.dao"/>
- </bean>
-
- <!-- 声明service的注解@Service所在包名的位置-->
- <context:component-scan base-package="com.it.service"/>
-
- <!-- 事物的配置:注解的配置,aspectJ的配置(二选一就可以了)-->
-
-
- </beans>
- <?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: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
- https://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/mvc
- https://www.springframework.org/schema/mvc/spring-mvc.xsd">
- <!--springmvc的配置文件,用来声明controller和其它web相关的对象-->
-
- <!-- 1.组件扫描器-->
- <context:component-scan base-package="com.it.controller"/>
- <!-- 2.视图解析器-->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/jsp/"/>
- <property name="suffix" value=".jsp"/>
- </bean>
- <!-- 3.注解驱动,注意后缀是mvc结尾的注解驱动-->
- <mvc:annotation-driven/>
- <!--该注解驱动的作用:
- 1.响应ajax请求,返回json
- 2.解决静态资源访问问题
- -->
- </beans>
- <?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>
- <!-- settings:控制mybatis全局行为-->
- <settings>
- <!-- 设置mybatis输出日志-->
- <setting name="logImpl" value="STDOUT_LOGGING"/>
- </settings>
- <!-- 设置别名,主要为了简化对于类名的指定-->
- <typeAliases>
- <package name="com.it.entity"/>
- </typeAliases>
-
- <!--sql映射文件的位置-->
- <mappers>
- <!-- name:是包名,这个包中的所有mapper.xml一次都能够加载
- 使用package的要求:
- 1.mapper文件名和dao接口名必须完全一样,包括大小写
- 2.mapping文件和dao接口必须在同一目录
- -->
- <package name="com.it.dao"/>
- </mappers>
- </configuration>
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
- version="4.0">
- <!-- 注册中央调度器-->
- <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:conf/dispatcherServlet.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>
-
- <!-- 注册spring的监听器-->
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:conf/applicationContext.xml</param-value>
- </context-param>
-
-
- <!-- 注册字符集过滤器-->
- <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>
- <init-param>
- <param-name>forceRequestEncoding</param-name>
- <param-value>true</param-value>
- </init-param>
- <init-param>
- <param-name>forceResponseEncoding</param-name>
- <param-value>true</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>characterEncodingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
-
- </web-app>
- package com.it.entity;
-
- public class Student {
- private Integer id;
- private String name;
- private Integer age;
-
- 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;
- }
-
- public Integer getAge() {
- return age;
- }
-
- public void setAge(Integer age) {
- this.age = age;
- }
-
- @Override
- public String toString() {
- return "Student{" +
- "id=" + id +
- ", name='" + name + '\'' +
- ", age=" + age +
- '}';
- }
- }
- package com.it.dao;
-
- import com.it.entity.Student;
-
- import java.util.List;
-
- public interface StudentDao {
- int insertStudent(Student student);
- List<Student> selectStudents();
- }
- <?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.it.dao.StudentDao">
- <select id="selectStudents" resultType="com.it.entity.Student">
- select id,name,age from student order by id desc
- </select>
- <insert id="insertStudent">
- insert into student(name,age) values(#{name},#{age})
- </insert>
- </mapper>
-
-
- package com.it.service;
-
- import com.it.entity.Student;
-
- import java.util.List;
-
- public interface StudentService {
- int addStudent(Student student);
- List<Student> queryStudents();
- }
实现类StudentServiceImpl
- package com.it.service.impl;
-
- import com.it.dao.StudentDao;
- import com.it.entity.Student;
- import com.it.service.StudentService;
- import org.springframework.stereotype.Service;
-
- import javax.annotation.Resource;
- import java.util.List;
- @Service
- public class StudentServiceImpl implements StudentService {
- //引用类型的自动注入,@Autowired,@Resource
- @Resource
- private StudentDao studentDao;
-
- @Override
- public int addStudent(Student student) {
- int i = studentDao.insertStudent(student);
- return i;
- }
-
- @Override
- public List<Student> queryStudents() {
- List<Student> students = studentDao.selectStudents();
- return students;
- }
- }
- package com.it.controller;
-
- import com.it.entity.Student;
- import com.it.service.StudentService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
- import org.springframework.web.servlet.ModelAndView;
-
- import java.util.List;
-
- @Controller
- @RequestMapping(value = "/student")
- public class StudentController {
- @Autowired
- private StudentService service;
-
- //注册学生
- @RequestMapping(value = "/addStudent.do")
- public ModelAndView addStudent(Student student){
- ModelAndView mv=new ModelAndView();
- String tips="注册失败";
- //调用service处理student
- int i = service.addStudent(student);
- if (i>0){
- //注册成功
- tips="学生【"+student.getName()+"】注册成功!";
- }
- //添加数据
- mv.addObject("tips",tips);
- //指定结果页面
- mv.setViewName("result");
- return mv;
- }
-
- //处理学生的查询,响应ajax
- @RequestMapping(value = "/queryStudent.do")
- @ResponseBody
- public List<Student> queryStudent(){
- //参数检查,简单的数据处理
- List<Student> students = service.queryStudents();
- return students;
- }
- }
-
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <%
- String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()
- +request.getServerName()+"/";
- %>
- <html>
- <head>
- <title>用户操作的功能入口</title>
- <base href="<%=basePath%>"/>
- </head>
- <body>
- <div align="center">
- <p>SSM整合的例子</p>
- <img src="images/pic1.jpg" width="1000px" height="500px">
- <table>
- <tr>
- <td><a href="addStudent.jsp">注册学生</a></td>
- </tr>
- <tr>
- <td><a href="listStudent.jsp">浏览学生</a></td>
- </tr>
- </table>
- </div>
- </body>
- </html>
-
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <%
- String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()
- +request.getServerName()+"/";
- %>
- <html>
- <head>
- <title>注册学生</title>
- <base href="<%=basePath%>"/>
- </head>
- <body>
- <div align="center">
- <form action="student/addStudent.do" method="post">
- <table>
- <tr>
- <td>姓名:</td>
- <td><input type="text" name="name"></td>
- </tr>
- <tr>
- <td>年龄:</td>
- <td><input type="text" name="age"></td>
- </tr>
- <tr>
- <td>
- <input type="submit" value="注册">
- </td>
- </tr>
- </table>
- </form>
- </div>
- </body>
- </html>
-
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <%
- String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()
- +request.getServerName()+"/";
- %>
- <html>
- <head>
- <title>查询学生ajax</title>
- <base href="<%=basePath%>"/>
- <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
- <script type="text/javascript">
- $(function () {
- //在当前页面dom对象加载后,执行loadStudentData()
- loadStudentData();
- $("#btnLoader").click(function () {
- loadStudentData();
- })
- function loadStudentData() {
- $.ajax({
- url:"student/queryStudent.do",
- type:"post",
- dataType:"json",
- success:function (data) {
- //清除旧的数据
- $("#info").html("");
- //增加新的数据
- $.each(data,function (i,n) {
- $("#info").append("<tr>")
- .append("<td>"+n.id+"</td>")
- .append("<td>"+n.name+"</td>")
- .append("<td>"+n.age+"</td>")
- .append("</tr>")
- })
- }
- })
- }
- })
- </script>
- </head>
- <body>
- <div align="center">
- <table>
- <thead>
- <tr>
- <td>学号</td>
- <td>姓名</td>
- <td>年龄</td>
- </tr>
- </thead>
- <tbody id="info">
-
- </tbody>
- <input type="button" id="btnLoader"value="查询数据">
- </table>
- </div>
- </body>
- </html>
-
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <html>
- <head>
- <title>Title</title>
- </head>
- <body>
- result.jsp页面,注册结果是:${tips}
- </body>
- </html>
项目结果
运行项目后自动进入首界面
1.点击注册学生链接
这是数据库中原本存在的数据
点击 注册
查看数据库是否成功添加
可以看到已经成功添加
2.返回首页,点击浏览学生链接