精华内容
下载资源
问答
  • SSM框架项目实例

    热门讨论 2018-03-09 17:13:42
    一个SSM框架整合的小系统,叫做在线考试系统,简单来说就是实现教师(管理员)发布考试和学生(普通用户)参加考试的功能,当然其中还有一些稍显复杂的东西。 项目经反馈存在一些问题,如有需要,可加QQ群了解,有...
  • SSM框架搭建实例

    2018-09-14 14:54:44
    一个基本的ssm框架的搭建,可以作为javaWeb项目的模板,可编译可运行,代码简洁
  • 文档中包含了百度网盘共享、包含3个基于SSM框架项目,包含视频等文件
  • 主要是一个没有用maven的ssm框架的一个完整的框架搭建项目源码
  • ssm框架项目案例

    2016-08-25 16:24:55
    完整的ssm框架完美融合,可以直接上手
  • Spring+SpringMVC+MyBatis框架SSM)是比较热门的中小型企业级项目开发的框架,对于新手来说也是比较容易学习入门的。虽说容易,但在框架搭建过程中仍然遇到了许多问题,这个实例使用的是sql2005数据库,需要先在...
  • ssm框架源码

    2019-04-03 17:38:33
    ssm框架源码,源码简单易懂,条理清晰,逻辑分明,十分适合初学
  • SSM框架项目实例源代码从注册开始结合数据库.doc
  • java的ssm框架写的一个完整的小项目,可以作为参考或二次开发
  • 文章主要介绍3个SSM框架应用的实例教程,非常适合想学习应用该整合框架的小伙伴。该项目假设为开发一个简单的用户基本信息的管理网站,在数据库中存在的每一个用户都可以登录网站,然后在网站上进行用户的管理(增删...

    SSM框架简介

    SSM(Spring+SpringMVC+MyBatis)框架集由Spring、SpringMVC、MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架。

    文章主要介绍3个SSM框架应用的实例教程,非常适合想学习应用该整合框架的小伙伴。

    该项目假设为开发一个简单的用户基本信息的管理网站,在数据库中存在的每一个用户都可以登录网站,然后在网站上进行用户的管理(增删改查)。主要目的是为了展示如何整合 SSM 框架。

    部分效果截图:

    进入新增用户页面,并填写新增用户的信息。

    172346725933

    此处输入图片的描述

    点击 add按钮,完整用户的新增操作,可以看到用户新增成功。

    172346725933

    此处输入图片的描述

    该项目使用 spring+spring MVC+Mybatis+freemarker 来实现个人简历的在线生成以及导出功能,通过一个简单网页填写个人履历后,在线生成一份个人简历。项目较为简单,作为SSM实战的项目,十分适合学习JAVA的同学练手。

    项目文件结构:

    187fc51a2769de446c7e25512ccc2c74.png

    项目结构

    部分效果截图:

    工作经历页面:

    3d8957a62be2bf0cf83c7ebba6e55306.png

    工作

    导出文档的截图:

    172346725933

    结果

    该项目采用 SSM + easyUI 来开发一个比较简易的人事管理系统,让同学们能够通过实际项目掌握 SSM 项目的开发。

    部分效果截图:

    系统主页:

    172346725933

    此处输入图片的描述

    功能模块页面:

    172346725933

    最后

    如果你想学习更多Java实例教程,点击这里即可查看~

    你也可以点击【Java工程师学习路径】,照着路径一步步从头开始学习~

    展开全文
  • 这是一份SSM基础框架实例,其中带有测试类,可以直接在Eclipse中导入运行,供学习参考。集合了Spring,Spring-MVC,MyBatis框架,可作为项目开发的模板文件。
  • SSM框架源代码

    2018-04-19 09:49:28
    ssm框架,自带简单sql文件,使用Myeclipes开发工具,其中的demo.sql由Navicat建立,供框架登录功能使用。
  • 是一个适合新手的比较好的例子, <!-- 自动扫描该包下面带有注解的类 --> <!-- 导入数据库配置文件 --> <!-- 配置数据库连接池 --> ...-- 基本属性 url、user、password --> ...-- 配置间隔多久才进行一次检测,...
  • SSM框架项目

    2018-03-01 14:28:11
    SSM框架项目,内带数据库文件,放心使用,SSM框架SSM框架项目,内带数据库文件,放心使用,SSM框架SSM框架项目,内带数据库文件,放心使用,SSM框架
  • Maven+SSM框架项目实例

    万次阅读 热门讨论 2018-01-17 17:33:33
    一、项目环境 ...框架:Maven+Spring+SpringMVC+Mybatis 数据库:Mysql 二、项目结构 项目文件架构: 三、Maven配置 pom.xml: properties> spring.version>4.0.2.RELEASEspring.ver

    一、项目环境

    • 开发系统:Window10
    • 开发工具:IDEA
    • JDK:1.8
    • 框架:Maven+Spring+SpringMVC+Mybatis
    • 数据库:Mysql

    二、项目结构

    项目文件架构:
    这里写图片描述

    三、Maven配置

    pom.xml:

        <properties>
            <!-- spring版本号 -->
            <spring.version>4.0.2.RELEASE</spring.version>
            <!-- mybatis版本号 -->
            <mybatis.version>3.2.6</mybatis.version>
            <!-- log4j日志文件管理包版本 -->
            <slf4j.version>1.7.7</slf4j.version>
            <log4j.version>1.2.17</log4j.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <!-- 表示开发的时候引入,发布的时候不会加载此包 -->
                <scope>test</scope>
            </dependency>
            <!-- spring核心包 -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-oxm</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <!-- mybatis核心包 -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
            <!-- mybatis/spring包 -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>1.2.2</version>
            </dependency>
            <!-- 导入java ee jar 包 -->
            <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-api</artifactId>
                <version>7.0</version>
            </dependency>
            <!-- 导入Mysql数据库链接jar包 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.6</version>
            </dependency>
            <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
            <dependency>
                <groupId>commons-dbcp</groupId>
                <artifactId>commons-dbcp</artifactId>
                <version>1.2.2</version>
            </dependency>
            <!-- JSTL标签类 -->
            <dependency>
                <groupId>jstl</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
            <!-- 日志文件管理包 -->
            <!-- log start -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
    
    
            <!-- 格式化对象,方便输出日志 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.1.41</version>
            </dependency>
    
    
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <!-- log end -->
            <!-- 映入JSON -->
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-mapper-asl</artifactId>
                <version>1.9.13</version>
            </dependency>
            <!-- 上传组件包 -->
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.3.1</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.4</version>
            </dependency>
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>1.9</version>
            </dependency>
            <!-- 导入Mysql数据库链接jar包 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.30</version>
            </dependency>
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>2.3.1</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.4.2</version>
            </dependency>
        </dependencies>

    四、SSM的配置文件

    mybatis-config.xml:

    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <settings>
            <setting name="cacheEnabled" value="true"/>
        </settings>
        <!-- 只需配置别名,其他的配置使用其他的方法进行配置 -->
        <typeAliases>
            <typeAlias type="com.model.entity.Student" alias="Student"/>
            <typeAlias type="com.model.entity.Teacher" alias="Teacher"/>
            <typeAlias type="com.model.entity.Classes" alias="Classes"/>
        </typeAliases>
    </configuration>

    spring-mybatis.xml:

    <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"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    
        <!-- 导入jdbc配置文件 -->
        <context:property-placeholder location="classpath:jdbc.properties"/>
        <!-- 注解的扫描路径 -->
        <context:component-scan base-package="com.*"/>
        <!-- 连接池 -->
        <!-- 配置1个阿里连接池 -->
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init"
              destroy-method="close">
            <property name="driverClassName">
                <value>${jdbc_driverClassName}</value>
            </property>
            <property name="url">
                <value>${jdbc_url}</value>
            </property>
            <property name="username">
                <value>${jdbc_username}</value>
            </property>
            <property name="password">
                <value>${jdbc_password}</value>
            </property>
            <!-- 连接池最大使用连接数 -->
            <property name="maxActive">
                <value>20</value>
            </property>
            <!-- 初始化连接大小 -->
            <property name="initialSize">
                <value>1</value>
            </property>
            <!-- 获取连接最大等待时间 -->
            <property name="maxWait">
                <value>60000</value>
            </property>
            <!-- 连接池最大空闲 -->
            <property name="maxIdle">
                <value>20</value>
            </property>
            <!-- 连接池最小空闲 -->
            <property name="minIdle">
                <value>3</value>
            </property>
            <!-- 自动清除无用连接 -->
            <property name="removeAbandoned">
                <value>true</value>
            </property>
            <!-- 清除无用连接的等待时间 -->
            <property name="removeAbandonedTimeout">
                <value>180</value>
            </property>
            <!-- 连接属性 -->
            <property name="connectionProperties">
                <value>clientEncoding=UTF-8</value>
            </property>
        </bean>
    
        <!-- mybatis的sessionfatory -->
        <bean id="sqlSessionFactory"
              class="org.mybatis.spring.SqlSessionFactoryBean"
              p:dataSource-ref="dataSource"
              p:configLocation="classpath:mybatis-config.xml"
              p:mapperLocations="classpath:/mapping/*.xml"/>
    
        <!-- dao的实现类对象,既mapper对象 。从上面的session工厂中,自动创建出所有mapper文件下的实现类对象 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"
              p:basePackage="com.model.dao"
              p:sqlSessionFactoryBeanName="sqlSessionFactory"/>
    
        <!-- 事务管理器,用于注解注入事务 -->
        <bean id="transactionManager"
              class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
              p:dataSource-ref="dataSource"/>
    
    </beans>

    springmvc-servlet.xml:

    <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-3.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
        <!-- 注解的扫描路径 -->
        <context:component-scan base-package="com.controller"/>
        <mvc:annotation-driven/>
        <!-- springmvc的视图解析器 -->
        <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
            <property name="prefix" value="/WEB-INF/JSP/"></property>
            <property name="suffix" value=".jsp"></property>
            <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        </bean>
    
    </beans>

    jdbc.properties:

    jdbc_driverClassName=com.mysql.jdbc.Driver
    jdbc_url=jdbc:mysql://localhost:3306/xxxx?characterEncoding=utf-8
    jdbc_username=xxxx
    jdbc_password=xxxx

    五、数据库表

    student表:
    这里写图片描述
    classes表:
    这里写图片描述
    teacher表:
    这里写图片描述

    六、各层代码

    实体类
    Classes:

    package com.model.entity;
    
    public class Classes {
        private int cid;
        private String cname;
    
        @Override
        public String toString() {
            return "Classes{" +
                "cid=" + cid +
                ", cname='" + cname + '\'' +
                '}';
        }
    
        public Classes() {
        }
    
        public Classes(int cid, String cname) {
    
            this.cid = cid;
            this.cname = cname;
        }
    
        public int getCid() {
    
            return cid;
        }
    
        public void setCid(int cid) {
            this.cid = cid;
        }
    
        public String getCname() {
            return cname;
        }
    
        public void setCname(String cname) {
            this.cname = cname;
        }
    }

    Student:

    package com.model.entity;
    
    public class Student {
        private int sid;//学号
        private String sname;//姓名
        private Classes classes;//所属班级
        private String sex;//性别
        private String birthplace;//出生地
    
        @Override
        public String toString() {
            return "Student{" +
                "sid=" + sid +
                ", sname='" + sname + '\'' +
                ", classes=" + classes +
                ", sex='" + sex + '\'' +
                ", birthplace='" + birthplace + '\'' +
                '}';
        }
    
        public Student() {
        }
    
        public Student(int sid, String sname, Classes classes, String sex, String birthplace) {
    
            this.sid = sid;
            this.sname = sname;
            this.classes = classes;
            this.sex = sex;
            this.birthplace = birthplace;
        }
    
        public int getSid() {
    
            return sid;
        }
    
        public void setSid(int sid) {
            this.sid = sid;
        }
    
        public String getSname() {
            return sname;
        }
    
        public void setSname(String sname) {
            this.sname = sname;
        }
    
        public Classes getClasses() {
            return classes;
        }
    
        public void setClasses(Classes classes) {
            this.classes = classes;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public String getBirthplace() {
            return birthplace;
        }
    
        public void setBirthplace(String birthplace) {
            this.birthplace = birthplace;
        }
    }

    Teacher:

    package com.model.entity;
    
    public class Teacher {
        private int tid;//教师编号
        private String tname;//姓名
        private Classes classes;//所教班级(student的cid外键)
    
        public Teacher() {
        }
    
        @Override
        public String toString() {
            return "Teacher{" +
                "tid=" + tid +
                ", tname='" + tname + '\'' +
                ", classes=" + classes +
                '}';
        }
    
        public Teacher(int tid, String tname, Classes classes) {
            this.tid = tid;
            this.tname = tname;
            this.classes = classes;
        }
    
        public int getTid() {
    
            return tid;
        }
    
        public void setTid(int tid) {
            this.tid = tid;
        }
    
        public String getTname() {
            return tname;
        }
    
        public void setTname(String tname) {
            this.tname = tname;
        }
    
        public Classes getClasses() {
            return classes;
        }
    
        public void setClasses(Classes classes) {
            this.classes = classes;
        }
    }

    持久层(Dao类)
    StudentDao:

    package com.model.dao;
    
    import com.model.entity.Student;
    
    import org.apache.ibatis.annotations.Param;
    
    import java.util.List;
    
    public interface StudentDao {
    
        public List<Student> findAll();//查找所有学生
    
        public void add(@Param("sname") String sname, @Param("cid") int cid,
                        @Param("sex") String sex, @Param("birthplace") String birthplace);//添加学生
    
        public Student findBySid(int sid);//根据学号查学生
    
    }

    业务层(Service类)
    StudentService:

    import com.model.entity.Student;
    
    import java.util.List;
    
    public interface StudentService {
        public List<Student> findAll();
    
        public void add(String sname, int cid, String sex, String birthplace);//添加学生
    
        public Student findBySid(int sid);//根据学号查学生
    }

    StudentServiceImpl:

    package com.service.Impl;
    
    import com.model.dao.StudentDao;
    import com.model.entity.Student;
    import com.model.service.StudentService;
    
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    import javax.annotation.Resource;
    
    @Service
    public class StudentServiceImpl implements StudentService {
    
        //这里的自动装配会报错,可以忽视,因为在spring-mybatis.xml中有进行配置,通过mapper映射从Session工厂中获取
        @Resource
        private StudentDao studentDao;
    
        public List<Student> findAll() {
            return studentDao.findAll();
        }
    
        public void add(String sname, int cid, String sex, String birthplace) {
    
        }
    
        public Student findBySid(int sid) {
            return studentDao.findBySid(sid);
        }
    }

    控制器(Controller)
    StudentAction:

    package com.controller;
    
    import com.model.entity.Student;
    import com.model.service.StudentService;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import java.util.List;
    
    @Controller
    public class StudentAction {
    
        @Autowired
        private StudentService service;//持有一个业务层对象
    
        @RequestMapping("/findall")
        public String findAll(Model model) {
            List<Student> list = service.findAll();
            model.addAttribute("studentlist", list);
            return "show";
        }
    
        //ajax查询数据
        @ResponseBody
        @RequestMapping("/findbysid")
        public Student findBySid(@RequestParam("sid") int sid) {
            return service.findBySid(sid);
        }
    }

    七、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_2_5.xsd" id="WebApp_ID"
             version="2.5">
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mybatis.xml;
                classpath:springmvc-servlet.xml
            </param-value>
        </context-param>
        <context-param>
            <param-name>log4jConfigLocation</param-name>
            <param-value>classpath:log4j.properties</param-value>
        </context-param>
        <context-param>
            <param-name>log4jRefreshInterval</param-name>
            <param-value>6000</param-value>
        </context-param>
        <listener>
            <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
        </listener>
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    
        <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>forceEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>characterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <servlet>
            <servlet-name>springmvc</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <load-on-startup>2</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>*.action</url-pattern>
        </servlet-mapping>
        <display-name>ssm_student</display-name>
    
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>

    八、JSP页面

    index.jsp:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <script type="text/javascript" src="js/jquery-2.1.1.min.js"></script>
    
    <script language="JavaScript">
        $(function () {
            $("#search").click(function () {
                $.ajax({
                           type: "post",
                           url: "findbysid.action",
                           data: $("#sid"),
                           dataType: "json",
                           success: function (data) {
                               var html = "";
                               html +=
                                   "<td>" + data.sid + "</td><td>" + data.classes.cname + "</td><td>" + data.sname
                                   + "</td><td>" + data.sex + "</td><td>" + data.birthplace + "</td>";
                               $("#student").html(html);
                           },
                           //null值不会被success回调函数捕获,因此可以通过error来实现该功能
                           error: function () {
                               alert("请输入正确的学号!");
                           }
                       })
            })
        })
    </script>
    <body>
    <center>
        <div style="margin-top: 25px">
            请输入所要查询的学号:<input type="text" id="sid" name="sid"/><input id="search" style="margin-left: 10px" type="button" value="搜索"><br/>
        </div>
        <div style="margin-top: 50px">
            <table border="1">
                <tr>
                    <td>学号</td>
                    <td>班级</td>
                    <td>姓名</td>
                    <td>性别</td>
                    <td>出生地</td>
                </tr>
                <tr id="student">
    
                </tr>
            </table>
        </div>
    </center>
    </body>
    </html>

    九、Tomcat测试

    测试结果(成功):
    这里写图片描述

    输入1,没有对应学号,则弹出:
    这里写图片描述

    展开全文
  • 基于ssm框架的简单选课系统 基本功能 学生部分 登录、修改密码 查询个人信息 查询排课情况、根据老师姓名/学院筛选、进行选课、查询个人选课情况、查询成绩 教师部分 登录、修改密码 查询个人信息 查询个人开课情况...
  • SSM框架WEB工程样例

    2017-09-03 23:11:01
    SSM框架WEB工程样例,SSM框架WEB工程样例,SSM框架WEB工程样例,SSM框架WEB工程样例,SSM框架WEB工程样例,
  • SSM框架详细实例讲解

    千次阅读 多人点赞 2019-04-02 18:22:30
    SSM框架简介 SSM框架,是Spring + Spring MVC + MyBatis的缩写,这个是继SSH之后,目前比较主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统。 我们先大概的回顾一下吧。1.Spring简介 Spring是一个...

    SSM框架简介

    SSM框架,是Spring + Spring MVC + MyBatis的缩写,这个是继SSH之后,目前比较主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统。 我们先大概的回顾一下吧。

    1.Spring简介 

            Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 

          A.控制反转(IOC)是什么呢? 
            IOC:控制反转也叫依赖注入。利用了工厂模式将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分配给你需要调用这些bean的类(假设这个类名是A),分配的方法就是调用A的setter方法来注入,而不需要你在A里面new这些bean了。 
            [注意]:面试的时候,如果有条件,画图,这样更加显得你懂了 
          B.面向切面(AOP)又是什么呢? 
            首先,需要说明的一点,AOP只是Spring的特性,它就像OOP一样是一种编程思想,并不是某一种技术,AOP可以说是对OOP的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。 
            实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。 
    [简单点解释],比方说你想在你的biz层所有类中都加上一个打印‘你好,AOP’的功能这你经可以用aop思想来做,你先写个类写个方法,方法经实现打印‘你好,AOP’让后你Ioc这个类 ref=“biz.*”让每个类都注入。 

    2.Spring MVC简介 

            Spring MVC属于Spring Framework的后续产品,已经融合在Spring Web Flow里面,它原生支持的Spring特性,让开发变得非常简单规范。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。 

    3.MyBatis简介 

            MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。可以这么理解,MyBatis是一个用来帮你管理数据增删改查的框架。

     

    先看一下项目的结构吧

     

    说了这么多,现在回归正题,SSM框架里面有很多繁杂的配置,一共有三个

    1.web.xml

    2.spring.xml

    3.mvc-servlet.xml

    下面将会依次详细介绍三个配置文件的配置方法以及配置的含义

    1.web.xml

    web.xml是ssm项目当中最重要的一个配置文件,当服务启动时会首先加载web.xml这个文件,里面包括了对前端控制器、乱码等的配置

    下面贴上代码,代码当中有详细的注释解释每个配置的意思

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app version="2.4"
             xmlns="http://java.sun.com/xml/ns/j2ee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    
    <!--spring的配置-->
    <!--==================================================-->
      <!-- 配置srping的位置 -->
      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring.xml</param-value>
      </context-param>
      <!-- 配置监听器 -->
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
    
    
      <!--springmvc需要配置的-->
      <!--==================================================-->
    
      <!-- 配置springmvc的核心控制器 -->
      <servlet>
        <servlet-name>mvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:mvc-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
    
      <servlet-mapping>
        <servlet-name>mvc</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    
      <!-- 解决乱码的配置 -->
      <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>forceEncoding</param-name>
          <param-value>true</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
    
      <!-- 请求method支持 put和delete必须添加过滤器 -->
      <filter>
        <filter-name>myFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>myFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
    
      <!--&lt;!&ndash; 启用druid的监控功能 &ndash;&gt;-->
      <servlet>
        <servlet-name>statViewServlet</servlet-name>
        <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
        <init-param>
          <param-name>loginUsername</param-name>
          <param-value>admin</param-value>
        </init-param>
        <init-param>
          <param-name>loginPassword</param-name>
          <param-value>admin</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>statViewServlet</servlet-name>
        <url-pattern>/druid/*</url-pattern>
      </servlet-mapping>
    </web-app>
    

    2.spring.xml

    spring.xml的作用是为了给spring进行配置

    <?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:tx="http://www.springframework.org/schema/tx"
           xmlns:aop="http://www.springframework.org/schema/aop"
           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/tx  http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
    	http://www.springframework.org/schema/aop  http://www.springframework.org/schema/aop/spring-aop-4.1.xsd">
    
    <!-- 扫描cn -->
        <context:component-scan base-package="cn">
            <!-- spring是bean的容器(spring用来操做 service+repository)controler是springmvc操作的 所以排除-->
            <!--<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />-->
        </context:component-scan>
    
        <!-- 扫描jdbc文件 -->
        <context:property-placeholder location="classpath:jdbc.properties" />
    
        <!--
        所有数据库操作的源头 实现自接口DataSouce DriverManagerDataSource
         还有很多连接池继承DataSouce DriverManagerDataSource 实现了很多子连接池 比如c3p0 dbcp druid
         这里我们就用阿里的druid,因为这个连接池有一个监控功能
        -->
        <!-- 连接数据库 -->
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
            <property name="url" value="${url}"></property>
            <property name="driverClassName" value="${driverClass}"></property>
            <property name="username" value="${username1}"></property>
            <property name="password" value="${password1}"></property>
            <!-- 默认初始化的连接个数 -->
            <property name="initialSize" value="1"></property>
            <!-- 最大允许的连接个数 -->
            <property name="maxActive" value="200"></property>
            <!-- 最大的等待人数 -->
            <property name="maxIdle" value="100"></property>
            <!-- 开启sql统计功能 -->
            <property name="filters" value="stat"></property>
        </bean>
    
    
        <!-- 事务管理器  不再使用jdbc的commit和rollback 必须由事务管理器提供 配置事物管理器必须要注入dataSource-->
        <bean id="tm"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"></property>
        </bean>
        <!-- 定义事物里面的通知-->
        <tx:advice id="txAdvise" transaction-manager="tm">
            <tx:attributes>
                <!--tx:method的作用是拦截指定方法开头的 然后对他进行事物处理 -->
                <tx:method name="insert*" propagation="REQUIRED" />
                <tx:method name="update*" propagation="REQUIRED" />
                <tx:method name="delete*" propagation="REQUIRED" />
                <!--read-only="true" 意思是除了上面拦截的以外  其他的都不拦截-->
                <tx:method name="*" read-only="true" />
            </tx:attributes>
        </tx:advice>
    
        <aop:config>
            <!-- 定义切点(搜索条件) aop:pointcut 意思相当于跟if差不多 满足条件的就会进来
          表示式   execution(返回值  包.类.方法(参数 ...代表任意多个参数))
          id 表示切点的名字
       -->
            <aop:pointcut expression="execution(* cn.et.service.*.*(..))" id="myPointCut" />
            <!-- 关联切点和事务管理器 将事物跟切点连接起来-->
            <aop:advisor advice-ref="txAdvise" pointcut-ref="myPointCut" />
        </aop:config>
    
    
        <!-- 集成mybatis -->
        <!-- 实例化一个SqlSessionFactory工厂-->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <!--指定数据源-->
            <property name="dataSource" ref="dataSource"></property>
            <!--指定实体文件所在的位置-->
            <property name="typeAliasesPackage" value="cn.et.model"/>
            <!--指定mapper.xml文件所在的位置-->
            <property name="mapperLocations" value="classpath:mapper/*.xml" />
        </bean>
    
        <!-- 扫描mybatis的接口映射文件  -->
        <bean id="scannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="cn.et.mapper"></property>
        </bean>
    </beans>

    3.mvc-servlet.xml

    mvc-servlet.xml是为了配置springMVC

    <?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:mvc="http://www.springframework.org/schema/mvc"
            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.2.xsd
    	http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-4.2.xsd
    	http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
    ">
        <!-- 扫描cn -->
        <context:component-scan base-package="cn">
            <!-- pringmvc主要操作控制层、视图层所以给不相关的层次的注解排除-->
            <!--<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>-->
            <!--<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>-->
        </context:component-scan>
    
        <!--如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。-->
        <mvc:default-servlet-handler/>
    
        <!-- 引用返回对象 响应json的消息转换器 -->
        <mvc:annotation-driven>
            <mvc:message-converters>
                <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter">
                    <property name="supportedMediaTypes">
                        <list>
                            <value>text/html</value>
                            <value>application/x-www-form-urlencoded</value>
                        </list>
                    </property>
                </bean>
                <!-- 配置返回对应解析成json的消息转换器 -->
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                    <property name="supportedMediaTypes">
                        <list>
                            <value>text/html</value>
                            <value>application/x-www-form-urlencoded</value>
                        </list>
                    </property>
                </bean>
            </mvc:message-converters>
        </mvc:annotation-driven>
    </beans>

    小提示
    关于配置文件这个东西,在初学各种框架的时候非常让人头疼,一不小心配置错误,项目就运行不了。所以不如直接从网上找个小项目的源码把代码删除,直接用别人的配置来做练习,在框架能熟练运用之后再慢慢学习配置文件的问题。

    据本人亲自整合,在jar包导入完全的时候,上面的这些配置文件可直接使用(数据库连接参数被删除,包名和一些路径的配置根据自己项目来进行更改)

     

    到此我们的SSM环境也就搭建好了,现在就要去实现业务的代码了

    1.model层是实体类,属性对应数据库表的每个字段,并且我们使用驼峰规则命名属性(这里很重要,字段userName和UserName在封装时差别很大,会映射不到mapper层的xml上),我们一贯的做法会让model序列化,这里虽然没有并发的情况,但是这是一种良好的做法。代码如下:

    package cn.et.model;
    
    public class Student {
        private String id;
        private String name;
        private String age;
        private String sex;
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getAge() {
            return age;
        }
    
        public void setAge(String age) {
            this.age = age;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    }
    

    2.mapper层,这里实现和数据库直接交互的接口,@Repository的注解目的是持久化数据层。在这里为了同时将mybatis注解写sql跟xml写sql表现出来,我有的接口用的是注解实现的有的接口用的是xml实现的代码如下:

    package cn.et.mapper;
    
    import cn.et.model.Student;
    import org.apache.ibatis.annotations.*;
    
    import java.util.List;
    
    public interface StudentMapper {
         /**
          * 添加
          * @param student
          */
         void insertStudent(@Param("student") Student student);
    
         /**
          * 删除
          * @param id
          */
         @Delete("delete from student where sid=#{id}")
         void deleteStudent(@Param("id") String id);
    
         /**
          * 修改
          * @param student
          */
         void updateStudent(@Param("student") Student student);
    
    
         /**
          * 查询所有
          * @return
          */
        @Results({
            @Result(column = "sid",property = "id"),
            @Result(column = "sname",property = "name"),
            @Result(column = "sage",property = "age"),
            @Result(column = "ssex",property = "sex")
        })
        @Select("select * from student")
        List<Student> studentList();
    
         /**
          * 根据id查询单个
          * @param id
          * @return
          */
         @Results({
                 @Result(column = "sid",property = "id"),
                 @Result(column = "sname",property = "name"),
                 @Result(column = "sage",property = "age"),
                 @Result(column = "ssex",property = "sex")
         })
         @Select("select * from student where sid=#{id}")
        Student studentById(@Param("id") String id);
    
         /**
          * 根据条件查询
          * @param student
          * @return
          */
        List<Student> studentQuery(@Param("student") Student student);
    
    
    }
    

    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="cn.et.mapper.StudentMapper" >
        <resultMap id="studentMap" type="cn.et.model.Student">
            <result property="id" column="sid"/>
            <result property="name" column="sname"/>
            <result property="age" column="sage"/>
            <result property="sex" column="ssex"/>
        </resultMap>
    
        <insert id="insertStudent">
            INSERT INTO student (sid,sname,sage,ssex) VALUES (#{student.id},#{student.name},#{student.age},#{student.sex})
        </insert>
    
        <update id="updateStudent">
          UPDATE student
          <set>
              <if test="student.name !=null and student.name !=''">
                  sname=#{student.name},
              </if>
              <if test="student.age !=null and student.age !=''">
                  sage=#{student.age},
              </if>
              <if test="student.sex !=null and student.sex !=''">
                  ssex=#{student.sex},
              </if>
          </set>
          WHERE sid =#{student.id}
        </update>
    
        <select id="studentQuery" resultMap="studentMap">
            select * from student
            <where>
                <if test="student.name !=null and student.name !=''">
                    and sname like '%${student.name}%'
                </if>
                <if test="student.age !=null and student.age !=''">
                    and sage=#{student.age}
                </if>
                <if test="student.sex !=null and student.sex !=''">
                    and ssex=#{student.sex}
                </if>
            </where>
        </select>
    
    </mapper>


    3.service层,这是用来处理业务的,代码如下:

    package cn.et.service;
    
    import cn.et.model.Student;
    
    import java.util.List;
    
    public interface StudentService {
        /**
         * 添加
         * @param student
         */
        void insertStudent(Student student);
    
        /**
         * 删除
         * @param id
         */
        void deleteStudent(String id);
    
        /**
         * 修改
         * @param student
         */
        void updateStudent(Student student);
    
    
        /**
         * 查询所有
         * @return
         */
        List<Student> studentList();
    
        /**
         * 根据id查询单个
         * @param id
         * @return
         */
        Student studentById(String id);
    
        /**
         * 根据条件查询
         * @param student
         * @return
         */
        List<Student> studentQuery(Student student);
    
    }
    

    4.serviceImpl层是service的实现类,@Service注解告诉Spring这是个业务层,Service中声明了几个接口,我们并没有去真正去实现,但是有人想为什么不直接写个实现类,反而要加一个Service层呢?这个问题,这要归结到代码复用性和维护性问题,如果你直接写一个实现,当你增加新的功能时就要在一大堆代码中是添加修改,这是非常耗时的操作,所以接口和实现分离有利于维护,代码如下:
     

    package cn.et.service.impl;
    
    import cn.et.mapper.StudentMapper;
    import cn.et.model.Student;
    import cn.et.service.StudentService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service
    public class StudentServiceImpl implements StudentService {
        @Autowired
        StudentMapper studentMapper;
    
        public void insertStudent(Student student) {
            studentMapper.insertStudent(student);
        }
    
        public void deleteStudent(String id) {
            studentMapper.deleteStudent(id);
        }
    
        public void updateStudent(Student student) {
            studentMapper.updateStudent(student);
        }
    
        public List<Student> studentList() {
            List<Student> students = studentMapper.studentList();
            return students;
        }
    
        public Student studentById(String id) {
            return studentMapper.studentById(id);
        }
    
        public List<Student> studentQuery(Student student) {
            return studentMapper.studentQuery(student);
        }
    }
    

     

    5.控制层Controller 
    使用@Controller注解,然后使用@AutoWired导入service层,因为service中的方法是我们使用到的,controller通过接收前端传过来的参数进行业务操作,在返回一个指定的路径或者数据表。RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。上面讲的这些都是Spring MVC知识,如果你看不懂请百度Spring MVC流程控制,基础知识我就不多废话。具体代码如下:

    package cn.et.controller;
    
    import cn.et.model.Student;
    import cn.et.service.StudentService;
    import cn.et.tool.CommonResponse;
    import cn.et.tool.Response;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.List;
    
    @RestController
    public class StudentController {
        @Autowired
        StudentService studentService;
    
        @RequestMapping("insertStudent")
        public Response insertStudent(Student student){
            studentService.insertStudent(student);
            return Response.success();
        }
    
        @RequestMapping("deleteStudent")
        public Response deleteStudent(String id){
            studentService.deleteStudent(id);
            return Response.success();
        }
    
        @RequestMapping("updateStudent")
        public Response updateStudent(Student student){
            studentService.updateStudent(student);
            return Response.success();
        }
    
        @RequestMapping("studentList")
        public Response studentList(){
            List<Student> students = studentService.studentList();
            return new CommonResponse<List<Student>>(students);
        }
    
        @RequestMapping("studentById")
        public Response studnetById(String id){
            Student student = studentService.studentById(id);
            return new CommonResponse<Student>(student);
        }
    
        @RequestMapping("studentQuery")
        public Response studentQuery(Student student){
            List<Student> students = studentService.studentQuery(student);
            return new CommonResponse<List<Student>>(students);
        }
    
    }
    

    至此我们的后台代码就告一段落了,如有疑问的小伙伴给我留言。。。。。。。。

    展开全文
  • SSM框架简单实例

    千次阅读 多人点赞 2018-05-14 11:09:07
    1、SSM框架SSM(Spring+SpringMVC+MyBatis)框架集由Spring、SpringMVC、MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架。2、简单实例(1)项目结构(2)PageBean.javapackage cn.hwd.paging.bean...

    1、SSM框架

    SSM(Spring+SpringMVC+MyBatis)框架集由Spring、SpringMVC、MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架。

    2、简单实例

    (1)项目结构



    (2)PageBean.java

    package cn.hwd.paging.bean;
    
    import java.util.List;
    
    public class PageBean<T> {
    	
    	private int pc;// 当前页码page code
    //	private int tp;// 总页数total page
    	private int tr;// 总记录数total record
    	private int ps;// 每页记录数page size
    	private List<T> list;// 当前页的记录
    	public int getPc() {
    		return pc;
    	}
    	public void setPc(int pc) {
    		this.pc = pc;
    	}
    	/**
    	 * 计算总页数
    	 * @return
    	 */
    	public int getTp() {
    		// 通过总记录数和每页记录数来计算总页数
    		int tp = tr / ps;
    		return tr%ps==0 ? tp : tp+1;
    	}
    //	public void setTp(int tp) {
    //		this.tp = tp;
    //	}
    	public int getTr() {
    		return tr;
    	}
    	public void setTr(int tr) {
    		this.tr = tr;
    	}
    	public int getPs() {
    		return ps;
    	}
    	public void setPs(int ps) {
    		this.ps = ps;
    	}
    	public List<T> getList() {
    		return list;
    	}
    	public void setList(List<T> list) {
    		this.list = list;
    	}
    }

    (3)User.java

    package cn.hwd.paging.bean;
    
    import java.util.Date;
    
    public class User {
    	
    	private Integer id;  
        private String name;  
        private Integer age;
        private Date 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;
    	}
    	public Integer getAge() {
    		return age;
    	}
    	public void setAge(Integer age) {
    		this.age = age;
    	}
    	public Date getBirth() {
    		return birth;
    	}
    	public void setBirth(Date birth) {
    		this.birth = birth;
    	}
    	public User() {
    		super();
    		// TODO Auto-generated constructor stub
    	}
    	public User(Integer id, String name, Integer age, Date birth) {
    		super();
    		this.id = id;
    		this.name = name;
    		this.age = age;
    		this.birth = birth;
    	}
    }

    (4)UserController.java

    package cn.hwd.paging.controller;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    
    import cn.hwd.paging.bean.PageBean;
    import cn.hwd.paging.bean.User;
    import cn.hwd.paging.service.UserService;
    
    @Controller
    @RequestMapping("/user")
    public class UserController {
    	
    	@Autowired
    	private UserService userService;
    	
    	@RequestMapping("/index.action")  
        public String index(
        		@RequestParam(value="pc", required=true, defaultValue="1") Integer pc, 
        		Model model) throws Exception {
    		PageBean<User> pb = new PageBean<User>();
    		pb.setPc(pc);
    		int ps = 10;
    		pb.setPs(ps);
    		int tr = userService.count();
    		pb.setTr(tr);
    		Map<String, Object> map = new HashMap<String, Object>();
    		map.put("m", (pc - 1) * ps);
    		map.put("n", ps);
    		List<User> users = userService.findAll(map);
    		pb.setList(users);
    		model.addAttribute("pb", pb);
            return "index";
        }
    	
    }

    (5)UserMapper.java

    package cn.hwd.paging.mapper;
    
    import java.util.List;
    import java.util.Map;
    
    import cn.hwd.paging.bean.User;
    
    public interface UserMapper {
    	
    	public Integer count() throws Exception;
    	
    	public List<User> findAll(Map<String, Object> map) throws Exception; 
    	
    }

    (6)UserMapper.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="cn.hwd.paging.mapper.UserMapper">
    
    	<resultMap id="userResultMap" type="user">
    	    <id column="id" property="id"/>
    	    <result column="name" property="name"/>
    	    <result column="age" property="age"/>
    	    <result column="birth" property="birth"/>  
        </resultMap>
    
    	<select id="count" resultType="int">  
        	select count(*) from user
      	</select>
      	
    	<select id="findAll" parameterType="map" resultMap="userResultMap">  
        	select id,name,age,birth from user limit #{m}, #{n}
      	</select>
      	
    </mapper>

    (7)UserService.java

    package cn.hwd.paging.service;
    
    import java.util.List;
    import java.util.Map;
    
    import cn.hwd.paging.bean.User;
    
    public interface UserService {
    
    	public Integer count() throws Exception;
    	
    	public List<User> findAll(Map<String, Object> map) throws Exception;
    	
    }

    (8)UserServiceImpl.java

    package cn.hwd.paging.service.impl;
    
    import java.util.List;
    import java.util.Map;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import cn.hwd.paging.bean.User;
    import cn.hwd.paging.mapper.UserMapper;
    import cn.hwd.paging.service.UserService;
    
    @Service("userService")
    public class UserServiceImpl implements UserService {
    	
    	@Autowired
        private UserMapper userMapper;
    	
    	public Integer count() throws Exception {
    		return userMapper.count();
    	}
    	
    	@Override
    	public List<User> findAll(Map<String, Object> map) throws Exception {
            return userMapper.findAll(map);
    	}
    
    }

    (9)jdbc.properties

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://127.0.0.1:3306/hwd
    jdbc.username=root
    jdbc.password=mysql

    (10)log4j.properties

    # 定义log输出级别
    log4j.rootLogger=DEBUG, Console
    # 定义log输出为控制台
    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    # 指定输出格式,其中%p表示日志级别 ,%t表示当前线程名,%m表示日志内容,%n表示换行
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout
    log4j.appender.Console.layout.ConversionPattern=%5p [%t] - %m%n

    (11)mybatis-config.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>
    
    	<typeAliases>
    		<package name="cn.hwd.paging.bean" />
    	</typeAliases>
    	
    </configuration>

    (12)spring-servlet.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-4.3.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-4.3.xsd">
        
        <context:component-scan base-package="cn.hwd.paging" />
        
    	<!-- 配置视图解析器 -->
    	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<!-- 配置jsp路径的前缀 -->
    		<property name="prefix" value="/WEB-INF/page/" />
    		<!-- 配置jsp路径的后缀 -->
    		<property name="suffix" value=".jsp" />
    	</bean>
    	
    	<context:property-placeholder location="classpath:jdbc.properties" />
    
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
        	destroy-method="close">
            <property name="driverClassName" value="${jdbc.driver}" />
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
        </bean>
        
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <!-- mybatis配置文件 -->
            <property name="configLocation" value="classpath:mybatis-config.xml" />
            <!-- 数据源 -->
            <property name="dataSource" ref="dataSource" />
        </bean>
        
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        	<property name="basePackage" value="cn.hwd.paging.mapper" />
        	<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
        </bean>
    	
    </beans>

    (13)pom.xml

    <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/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>cn.hwd</groupId>
      <artifactId>paging</artifactId>
      <packaging>war</packaging>
      <version>0.0.1-SNAPSHOT</version>
      <name>paging Maven Webapp</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.8.1</version>
        </dependency>
        <dependency>
    	  <groupId>javax.servlet</groupId>
    	  <artifactId>servlet-api</artifactId>
    	  <version>2.5</version>
    	</dependency>
    	<dependency>
      	  <groupId>org.mybatis</groupId>
      	  <artifactId>mybatis</artifactId>
      	  <version>3.2.6</version>
      	</dependency>
      	<dependency>
    	  <groupId>mysql</groupId>
    	  <artifactId>mysql-connector-java</artifactId>
    	  <version>5.1.30</version>
    	</dependency>
      	<dependency>
      	  <groupId>log4j</groupId>
      	  <artifactId>log4j</artifactId>
      	  <version>1.2.16</version>
      	</dependency>
      	<dependency>
    	  <groupId>org.springframework</groupId>
    	  <artifactId>spring-webmvc</artifactId>
    	  <version>4.0.2.RELEASE</version>
    	</dependency>
    	<dependency>
      	  <groupId>org.mybatis</groupId>
      	  <artifactId>mybatis-spring</artifactId>
      	  <version>1.2.2</version>
      	</dependency>
      	<dependency>
      	  <groupId>commons-dbcp</groupId>
      	  <artifactId>commons-dbcp</artifactId>
      	  <version>1.2.2</version>
      	</dependency>
      	<dependency>
      	  <groupId>org.springframework</groupId>
      	  <artifactId>spring-jdbc</artifactId>
      	  <version>4.0.2.RELEASE</version>
      	</dependency>
      	<dependency>  
          <groupId>javax.servlet</groupId>  
          <artifactId>jstl</artifactId>  
          <version>1.2</version>  
        </dependency>  
        <dependency>  
          <groupId>taglibs</groupId>  
          <artifactId>standard</artifactId>  
          <version>1.1.2</version>  
        </dependency>
      </dependencies>
      <build>
        <finalName>paging</finalName>
      </build>
    </project>

    (14)index.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    <!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=ISO-8859-1">
    <title>paging</title>
    </head>
    <body>
    	<table>
    		<thead>
    			<tr>
    				<th>id</th>
    				<th>name</th>
    				<th>age</th>
    				<th>birth</th>
    			</tr>
    		</thead>
    		<tfoot>
    			<tr>
    				<td colspan="4">
    					第${pb.pc }页/共${pb.tp }页
    					<a href="<c:url value="/user/index.action" />?pc=1">首页</a>
    					<c:if test="${pb.pc > 1 }">
    						<a href="<c:url value="/user/index.action" />?pc=${pb.pc - 1 }">上一页</a>
    					</c:if>
    					<%-- 计算begin、end --%>
    					<c:choose>
    						<%-- 如果总页数不足10页,那么把所有的页数都显示出来! --%>
    						<c:when test="${pb.tp <= 10 }">
    							<c:set var="begin" value="1" />
    							<c:set var="end" value="${pb.tp }" />
    						</c:when>
    						<c:otherwise>
    							<%-- 当总页数>10时,通过公式计算出begin和end --%>
    							<c:set var="begin" value="${pb.pc-5 }" />
    							<c:set var="end" value="${pb.pc+4 }" />	
    							<%-- 头溢出 --%>
    							<c:if test="${begin < 1 }">
    								<c:set var="begin" value="1" />
    								<c:set var="end" value="10" />
    							</c:if>	
    							<%-- 尾溢出 --%>
    							<c:if test="${end > pb.tp }">
    								<c:set var="begin" value="${pb.tp - 9 }" />
    								<c:set var="end" value="${pb.tp }" />
    							</c:if>	
    						</c:otherwise>
    					</c:choose>
    					<%-- 循环遍历页码列表 --%>
    					<c:forEach var="i" begin="${begin }" end="${end }">
    						<c:choose>
    							<c:when test="${i eq pb.pc }">
    								[${i }]
    							</c:when>
    							<c:otherwise>
    								<a href="<c:url value="/user/index.action" />?pc=${i}">[${i }]</a>	
    							</c:otherwise>
    						</c:choose>
    					</c:forEach>
    					<c:if test="${pb.pc < pb.tp }">
    						<a href="<c:url value="/user/index.action" />?pc=${pb.pc + 1 }">下一页</a>
    					</c:if>
    					<a href="<c:url value="/user/index.action" />?pc=${pb.tp }">尾页</a>
    				</td>
    			</tr>
    		</tfoot>
    		<tbody>
    			<c:forEach items="${pb.list }" var="user">
    				<tr>
    					<td>${user.id }</td>
    					<td>${user.name }</td>
    					<td>${user.age }</td>
    					<td><fmt:formatDate value="${user.birth }" pattern="yyyy/MM/dd HH:mm:ss" /></td>
    				</tr>
    			</c:forEach>
    		</tbody>
    	</table>
    </body>
    </html>

    (15)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>Archetype Created Web Application</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>  
      <!-- 配置前端控制器 -->  
      <servlet>  
        <servlet-name>spring</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:spring-servlet.xml</param-value>
        </init-param> 
      </servlet>  
      <servlet-mapping>  
        <servlet-name>spring</servlet-name>  
        <url-pattern>*.action</url-pattern>  
      </servlet-mapping>
    </web-app> 

    (16)运行结果




    展开全文
  • 用idea搭建SSM框架maven项目项目+sql+maven jar包) https://blog.csdn.net/m1195900241/article/details/89893350
  • ssm框架源码实例

    2016-01-21 13:38:57
    ssm框架,包括了增删改查和如何配置ssm的步骤。
  • SSM框架实例(单表查询) 要求: 基于SSM框架的做一个关于教室信息的增删改查 步骤: 一、创建数据库并添加部分测试数据 数据: 二、创建Maven项目 略 三、配置依赖包 <dependencies> <dependency> ...
  • 实例!使用Idea创建SSM框架的Maven项目

    千次阅读 多人点赞 2021-02-23 06:00:00
    大家好,我是雄雄,欢迎关注微信公众号【雄雄的小课堂】。前言书接前文,昨天带着大家下载且配置了maven,以及在idea中创建maven项目,今天,我们就结合ssm框架,在idea中实现一个...
  • SSM框架实例--信息管理系统

    千次阅读 多人点赞 2019-07-08 14:10:55
    SSM框架是目前比较流行的javaweb框架,很多小伙伴也都在学习,这里给大家带来一个简单的数据库增删改查的小实例—信息管理系统 1.首先我们创建数据库 2.在jdbc.properties里配置数据库信息 3.创建User这个实体类,...
  • 1.SSM简介 SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两...常作为数据源较简单的web项目框架。 2.工具及版本 2.1 JDK1.8 2.2 Intelli j IDEA 2019.2.4 2.3 Maven 3.6.2 2.4 Tomcat 9.0 2.5 windows ...
  • 这是一个简单的ssm架构的项目,跑成功后会对这些组件有比较完整的认识。 后端组件:spring+springMVC+mybatis 前端组件:bootstrap+bootstrapTable+highcharts 数据库:postgreSQL(可以自己修改成oracle,修改内容...
  • 本系统是利用ssm框架做的完整的图书管理系统,包含后前台和后台,涉及到权限登录,发送邮件,答题模块,借书模块等等诸多功能。
  • 项目为个人博客项目,旨在对SSM的综合应用,提高大家对这三个框架的的基本使用能力,项目分为前台和后台,博客基本的功能齐全。 技术架构 Spring+SpringMVC+Mybatis+Mysql+Jquery+Maven+jsp+BootStrap+layui+...
  • 完整Java项目 内含SSM框架源码

    热门讨论 2017-11-02 14:09:33
    开源项目之在线教育网站(SSM框架整合技术) 内含word说明文档 代码文档齐全

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,770
精华内容 5,908
关键字:

ssm框架项目实例