ssm框架整合复习(一)

项目:一个简单的图书管理系统

主要复习ssm框架的使用,一步一步走,用于巩固ssm的知识

先把环境搭好,后面编写就会简单很多

1.导包

ssm需要很多包和配置,这也是springboot出生的原因,这些包一会冲突,一会版本不支持,属实是烦,先被配置和导包折磨一下,后面学springboot才能感觉有多方便,我常用的包大概就下面这些

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->
<!-- $Id: pom.xml 642118 2008-03-28 08:04:16Z reinhard $ -->
<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>
  <packaging>war</packaging>

  <name>LibraryManageSys</name>
  <groupId>org.example</groupId>
  <artifactId>LibraryManageSys</artifactId>
  <version>1.0-SNAPSHOT</version>

  <build>
    <plugins>
      <!--tomcat服务器插件-->
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <!--dependency>
      <groupId>org.example</groupId>
      <artifactId>[the artifact id of the block to be mounted]</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency-->

    <!--spring及mvc常用依赖-->
    <!--spring应用上下文-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.3.20</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.3.20</version>
    </dependency>
    <!--集成mvc-->
    <dependency>
      <groupId>org.bitbucket.swattu</groupId>
      <artifactId>spring-mvc</artifactId>
      <version>4.2.4</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.3.20</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.3.20</version>
    </dependency>

    <!--mybatis的包-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.10</version>
    </dependency>
    <!--mybatis与spring集成的包-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.7</version>
    </dependency>
    <!--mybatis分页插件-->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.1.2</version>
    </dependency>
    <!--数据库依赖的包-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.29</version>
    </dependency>
    <!--c3p0数据源的包-->
    <dependency>
      <groupId>com.mchange</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.5.1</version>
    </dependency>

    <!--jsp与servlet的包-->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

    <!--测试的包-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>
    <!--spring测试-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.3.20</version>
    </dependency>
  </dependencies>

</project>

这些包我也不是很了解,也没找到对这些包详细说明的文档,就先用着吧

2.编写pojo,dao层,service层

先实现一个简单的登录,主要为了搭建好环境

pojo:

package com.system.pojo;

import org.springframework.stereotype.Component;

@Component
public class Student {
    private String studentid;
    private String username;
    private String password;

    public String getStudentid() {
        return studentid;
    }

    public void setStudentid(String studentid) {
        this.studentid = studentid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "Student{" +
                "studentid='" + studentid + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

dao:

这里的dao层使用了mybatis的动态代理来实现业务,稍微复习一下

几个限定条件:

1.namespace需要是dao接口的全路径名,不止到包

2.id等于dao接口中的方法名称

3.resultType和返回值一致

4.parameterType和参数一致

 那么这里的dao层代码就是

package com.system.dao;

import com.system.pojo.Student;

public interface studentMapper {
    public Student verify(Student student);//验证学生
    public void register(Student student);//注册学生
    public Student findbyname(String name);//通过姓名查找学生
    public Student findbyid(String id);//通过id查找学生
}

由于返回值要和resultType相同,有时候写一些判定可能不是很方便,所以可以在service接口改变

service:

package com.system.service;

import com.system.pojo.Student;

public interface studentService {
    public boolean verify(Student student);//验证学生
    public boolean register(Student student);//注册学生
    public Student findbyname(String name);//通过姓名查找学生
    public Student findbyid(String id);//通过id查找学生
}

serviceimpl:

package com.system.service.impl;
import com.system.dao.studentMapper;
import com.system.pojo.Student;
import com.system.service.studentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

//服务类
@Service
public class studentImpl implements studentService{
    @Autowired
    private studentMapper mapper;
    public boolean verify(Student student) {
        if(mapper.verify(student)==null)//代表不存在当前对象
            return false;
        return true;
    }

    public boolean register(Student student) {
        if (findbyid(student.getStudentid())!=null)//已经存在该id的学生
            return false;
        mapper.register(student);
        return true;
    }

    public Student findbyname(String name) {
        return mapper.findbyname(name);
    }

    public Student findbyid(String id) {
        return mapper.findbyid(id);
    }
}

3.配置studentMapper

编写sql语句,注意使用了动态代理,要注意这几个条件

<?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.system.dao.studentMapper">
    <select id="verify" parameterType="student" resultType="student">
        select * from student where username=#{username} and password=#{password}
    </select>
    <insert id="register" parameterType="student">
        insert into student values(#{studentid},#{username},#{password})
    </insert>
    <select id="findbyname" parameterType="string" resultType="student">
        select * from student where username=#{username}
    </select>
    <select id="findbyid" parameterType="string" resultType="student">
        select * from student where studentid=#{studentid}
    </select>
</mapper>

4.编写spring,springmvc,mybatis的配置文件

上面的类中都加了注解,所以要在配置文件中实现对这些注解的扫描以及配置数据源

jdbc配置文件:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///librarymanager
jdbc.username=root
jdbc.password=123456

spring配置文件:主要配置注解扫描,配置mybatis和spring的集成,配置mybatis的动态代理

<?xml version="1.0" encoding="UTF-8"?>
<!--spring配置类-->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <!--扫描service层-->
    <context:component-scan base-package="com.system.service"/>
    <!--导入jdbc配置文件-->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <!--配置c3p0数据源-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
    <!--配置mybatis与spring的集成-->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="classpath:SqlMapConfig.xml"/>
        <property name="dataSource" ref="dataSource"/>
        <!--分页插件-->
        <property name="plugins">
            <array>
                <!-- 传入插件的对象 -->
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <props>
                            <prop key="helperDialect">mysql</prop>
                            <prop key="reasonable">true</prop>
                        </props>
                    </property>
                </bean>
            </array>
        </property>
    </bean>
    <!--扫描dao层,使用动态代理-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.system.dao"/>
    </bean>
</beans>

springmvc配置:主要扫描controller层和配置视图解析器

<?xml version="1.0" encoding="UTF-8"?>
<!--springmvc配置类-->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context.xsd">
    <!--扫描controller层-->
    <context:component-scan base-package="com.system.controller"/>
    <!--配置视图解析器-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="./view"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

mybatis配置文件:说明mapper位置,取别名

<?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">
<!--mybatis配置类-->
<configuration>
<typeAliases>
    <!--批量取别名,类名就是别名,不区分大小写-->
    <package name="com.system.pojo"/>
</typeAliases>
    <mappers>
        <mapper resource="./mapper/studentMapper.xml"/>
    </mappers>
</configuration>

5.编写web.xml配置

这一步也是很重要的,需要使用监听器加载spring容器,还要配置springmvc

<?xml version="1.0" encoding="UTF-8"?>
<web-app>

  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <!--说明配置文件的位置-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <!--默认的监听器-->
  <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>
  </filter>
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <!--设置欢迎页-->
  <welcome-file-list>
    <welcome-file>view/index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
        

6.编写一个controller和一个jsp进行测试

package com.system.controller;

import com.system.pojo.Student;
import com.system.service.impl.studentImpl;
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.RequestMethod;

@Controller
public class studentController {
    @Autowired
    private studentImpl service;
    @RequestMapping(value = "/verify",method = RequestMethod.POST)
    public String verify(Student student){
        if(!service.verify(student))
            return "/error/loginerror";
        return "index";
    }
}

jsp:

<%--
  Created by IntelliJ IDEA.
  User: 707770262
  Date: 2022/11/4
  Time: 16:47
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/verify" method="post">
    用户名:<input type="text" name="username"/><br/>
    密码:<input type="password" name="password"/><br/>
    <input type="submit" value="登录">
</form>
</body>
</html>

测试环境,数据库连接,controller层使用都正常。

这里还要注意的是视图的路径,controller设置的是相对于项目根路径而言的,jsp中使用el表达式 

${pageContext.request.contextPath}项目根目录

还要注意spring这些引入jdbc等配置文件都要说明是classpath,不说明在测试时是正常的,但是发布到tomcat上就有问题了,他就找不到了,需要说明classpath他才会找到。

代码后面一定会进行更改,这里只是列举主要的配置,主要用于自己复习,对搭建ssm项目有大致的了解,菜鸟一枚,有问题希望指出。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值