SSM项目——开发模板(基于XML)

7 篇文章 0 订阅

SSM项目开发基于XML步骤(使用maven)

前提,已经设计好了数据库表以及业务逻辑

1、引入jar包

引入Spring、SpringMVC、MyBatis、Spring与MyBatis的整合、数据库驱动、Servlet、数据库连接池、Junit等。此处主要根据自己业务需求导入jar包

2、创建Maven工程

可以基于webapp模板快速创建maven工程
主要项目结构:
在这里插入图片描述

3、配置web.xml文件

3、1 配置CharacterEncodingFilter过滤器,主要是为了解决中文乱码问题
    <!--配置乱码过滤-->
    <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>forceResponseEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
3、2 配置ContextLoaderListener,加载Spring
    <!--配置Spring的监听器,加载Spring-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
3、3 配置SpringMVC的核心控制器DispatcherServlet
 <!--配置SpringMVC的核心控制器 DispatcherServlet-->
    <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>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!--拦截设置-->
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <!--此处也可以配置成*.do这种模式-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>


    <!--defaultServlet来处理静态文件 根据需求自行配置-->
    <!--<servlet-mapping>-->
    <!--    <servlet-name>default</servlet-name>-->
    <!--    <url-pattern>/static/*</url-pattern>-->
    <!--</servlet-mapping>-->

    <!--配置session时间-->
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

4、创建包结构与对应的pojo(实体类)、接口、实现类等

创建对应的controller、service、dao(mapper)、pojo、utils等【此处为了方便,只定义简单的方法、类等,请根据需求自定义包结构】

4、1 创建学生实体类【此处借用lombok开发】
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private Integer id;
    private String name;
    private Integer age;
    private String sex;
}
4、2 创建dao层【StudentDao】
package com.ali.dao;

import com.ali.pojo.Student;

import java.util.List;

public interface StudentDao {
    //添加学生
    int addStudent(Student student);

    //查询学生
    List<Student> getAll();
}
4、3 根据业务逻辑创建service接口层以及实现类

①接口:

public interface StudentService {
    //添加学生
    int addStudent(Student student);
    //查询所有学生
    List<Student> getAll();
}

②实现类:

@Service
public class StudentServiceImpl implements StudentService {
    @Autowired
    private StudentDao studentDao;

    @Override
    public int addStudent(Student student) {
        return studentDao.addStudent(student);
    }

    @Override
    public List<Student> getAll() {
        return studentDao.getAll();
    }
}

5、在resources下创建对应的配置文件并配置

5、1 创建MyBatis的mapper映射文件(StudentDao.xml)【根据StudentDao】
<?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.ali.dao.StudentDao">
    <insert id="addStudent">
        insert into tbl_student values(#{id},#{name},#{age},#{sex});
    </insert>

    <select id="getAll" resultType="Student">
        select id,name,age,sex from tbl_student;
    </select>
</mapper>
5、2 创建MyBatis的配置文件(mybatis-confi.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>
    <!--打印日志信息-->
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>

    <typeAliases>
        <package name="com.ali.pojo"/>
    </typeAliases>
    <!--<mappers>-->
    <!--    <package name="com.ali.dao.StudentDao"/>-->
    <!--</mappers>-->
</configuration>
5、2 创建SpringMVC对应的配置文件:spring-mvc.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"
       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">

    <!--配置组件扫描-->
    <context:component-scan base-package="com.ali.controller"/>

    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--配置注解驱动-->
    <mvc:annotation-driven/>
</beans>
5、3 创建jdbc.properties配置文件,配置与数据库相关的信息

此处以MySQL8为例:

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useSSL=true&serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true
jdbc.username=root
jdbc.password=123
5、4 配置Spring的核心配置文件applicationContext.xml

配置组件扫描(service层)、创建数据源(此处引入外部jdbc.properties)、创建SqlSessionFactory对象
配置dao的扫描包等,还可以根据自己的业务需求配置事务等一系列操作。

<?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">

    <!--1、加载properties-->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <!--2、配置组件扫描-->
    <context:component-scan base-package="com.ali.service"/>
    <!--3、创建数据源-->
    <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>
    <!--4、创建SqlSessionFactory对象-->
    <bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>

    <!--5、配置dao接口扫描包,动态的实现Dao接口可以注入到Spring容器中-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--注入sqlSessionFactory-->
        <property name="sqlSessionFactoryBeanName" value="factory"/>
        <!--要扫描的dao包-->
        <property name="basePackage" value="com.ali.dao"/>
    </bean>

    <!--6、事务配置-->
</beans>

6、创建显示页面等(此处以jsp为例)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<a href="${pageContext.request.contextPath}/student/toAdd">添加学生</a>
<a href="${pageContext.request.contextPath}/student/getAll">查询学生</a>
</body>
</html>

此处以超链接实现页面跳转,完成从客户端向服务端发起请求。

7、编写controller层,实现具体业务逻辑

@Controller
@RequestMapping("/student")
public class StudentController {
    @Autowired
    private StudentService studentService;

    //跳转到添加页面
    @RequestMapping("/toAdd")
    public String toAddStudent(){
        return "add";
    }

    //添加学生
    @RequestMapping("/add")
    public String addStudent(Student student){
        System.out.println("student=>>>>:"+student);
        studentService.addStudent(student);
//        return "test";
        return "success";
    }

    @RequestMapping("/getAll")
    public String getAll(HttpSession session){
        List<Student> list = studentService.getAll();
        session.setAttribute("list",list);
        return "allStu";
    }

}

8、编写需要跳转的页面以及展示数据的逻辑

8、1 add.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>添加页面</title>
</head>
<body>
    <form action="${pageContext.request.contextPath}/student/add" method="post">
        id:<input type="text" name="id"><br/>
        姓名:<input type="text" name="name"><br/>
        年龄:<input type="text" name="age"><br/>
        性别:<input type="text" name="sex"><br/>
        <input type="submit" value="提交">
    </form>
</body>
</html>
8、2 allStu.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<c:forEach items="${list}" var="student">
    <tr>
        <td>${student.name}</td><br/>
    </tr>
</c:forEach>
</body>
</html>
8、3 success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h2>添加成功....</h2>
<a href="${pageContext.request.contextPath}/student/getAll">点击查询所有</a>

</body>
</html>

注意点:

①项目所有的配置文件名称并不是固定的,此处只是以主流名称为例
②该项目,只是完成了最最基本的几个操作,目的是为了了解SSM项目开发步骤,大家可以根据自己业务需求对页面进行渲染以及逻辑增强
③web.xml的工作:1、启动Spring容器;2、DispatcherServlet的声明;3、session过期,字符串编码等
④web.xml启动Spring容器的加载过程:
A、容器(tomcat、JBoss等服务器)启动后,会先去读取<context-param>、<listener>这两个节点;
【<context-param>】:<context-param>是web应用的资源配置,是web应用的上下文参数,数据库连接方式,Spring的配置文件路径(applicationContext.xml)等,这些键值对都会加入到servletContext对象。
【<listener>】:<listener>可以获取当前servletContext对象,在web应用启动前操作,获取context-param值,进而获取资源,listener中的ContextLoaderListener监听器的作用就是启动Web容器时,监听servletContext对象的变化,获取servletContext对象的<context-param>,从而自动装配ApplicationContext的配置信息。

    <!--配置Spring的监听器,加载Spring-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
B、DispatcherServlet的声明 DispatcherServlet是前端控制器设置模式的实现,提供Spring Web MVC的集中访问点【类似于中转站,把前端的请求分发到目标controller】
主要职责:
1)文件上传解析
2)通过HandlerMapping,将请求映射到处理器
3)通过HandlerAdapter支持多种类型的处理
4)通过ViewResolver解析逻辑视图名到具体视图的实现
5)本地化解析
6)渲染具体视图
7)执行过程中的异常交由HandlerExeceptionResolver来解析等
    <!--配置SpringMVC的核心控制器 DispatcherServlet-->
    <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>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!--拦截设置-->
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <!--此处也可以配置成*.do这种模式-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>


    <!--defaultServlet来处理静态文件 根据需求自行配置-->
    <!--<servlet-mapping>-->
    <!--    <servlet-name>default</servlet-name>-->
    <!--    <url-pattern>/static/*</url-pattern>-->
    <!--</servlet-mapping>-->
详情见: 深入讲解web.xml的配置
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值