SSM:Spring、SpringMVC、Mybatis

项目完成图:

1、搭建 SpringMVC

1.1 导入spring和springMVC包

  • spring-webmvc
  • servlet-api
  • 异步请求jacksonjar
  • jstl
  • 文件上传下载commons-fileupload
  • spring-context
  • 阿里数据源
<dependencies><!-- spring-webmvc --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.2.RELEASE</version></dependency><!-- servlet-api --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency><!--添加jacksonjar包,spring异步请求时转换json对象需要的包--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.1</version></dependency><!-- jstl --><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- 文件上传下载 --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.3</version></dependency><!-- spring-context --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.2.RELEASE</version></dependency><!-- 阿里数据源 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency></dependencies>

1.2 创建spring配置文件

创建application.xml 和 springmvc.xml文件

application.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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd"><!-- 开启spring的注解扫描功能 --><context:component-scan base-package="com.company.ssm"></context:component-scan><!--导入springMVC配置 --><import resource="springmvc.xml"/><!-- 导入数据库连接配置 --><import resource="db.xml"/>
</beans>

springmvc.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:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- 开启springmvc注解 --><mvc:annotation-driven></mvc:annotation-driven><!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property><property name="prefix" value="/WEB-INF/jsp/"></property><property name="suffix" value=".jsp"></property></bean><!-- 过滤静态资源文件  --><mvc:default-servlet-handler/><!-- 文件解析器 --><bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="defaultEncoding" value="utf-8"></property><property name="maxUploadSize" value="10485760"></property></bean><!-- 拦截器 --><mvc:interceptors><mvc:interceptor><mvc:mapping path="/**"/><!-- 配置哪些请求被拦截  拦截器不会拦截jsp页面请求--><mvc:exclude-mapping path="/statics/**"/><!-- 哪些请求不被拦截 --><mvc:exclude-mapping path="/loginCtl/toLogin"/><!-- 哪些请求不被拦截 --><bean id="demo" class="com.company.ssm.interceptor.LoginInterceptor"></bean></mvc:interceptor></mvc:interceptors></beans>

1.3 在web.xml中配置 spring 请求分发 servlet

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.5"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><display-name>Archetype Created Web Application</display-name><!--  配置spring 核心请求分发器--><servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 配置初始化参数,加载spring配置文件 --><init-param><param-name>contextConfigLocation</param-name><!-- <param-value>/WEB-INF/classes/application.xml</param-value> --><param-value>classpath:application.xml</param-value></init-param><!-- 启动时就创建 DispatcherServlet对象,并加载spring框架--><load-on-startup>0</load-on-startup></servlet><!-- 配置请求映射地址 --><servlet-mapping><servlet-name>springMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>

1.4 创建jsp页面

login.jsp

<%--Created by IntelliJ IDEA.User: God_86Date: 2020/6/30Time: 14:45To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登录</title>
</head>
<body>
<h1>登录页面</h1>
<form action="${path}/loginCtl/login" method="post">用户名:<input type="text" name="userName"> <br>密码:<input type="password" name="password"> <br><input type="submit" value="登录">
</form>
</body>
</html>

loginSuccess.jsp

<%--Created by IntelliJ IDEA.User: God_86Date: 2020/6/30Time: 16:06To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登录成功</title>
</head>
<body>
登录成功
</body>
</html>

1.5 创建控制器类

SpringMVC搭建成功!!!

2、集成MyBatis

2.1 导包

  • Springjdbc 模块
  • Mybatis
  • Mysql驱动
  • Log4j
  • Spring 整合 mybatis 的插件包
  • Spring 切面实现AOP
<!-- spring-context --><!-- spring-jdbc --><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.2.RELEASE</version></dependency><!-- mysql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.20</version></dependency><!-- Spring 切面实现AOP --><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>5.2.2.RELEASE</version></dependency><!-- spring整合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.4.2</version></dependency><!-- log4j --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency>

2.2 创建包结构

2.3 创建Spring,mybatis 配置文件

jdbc.properties

url=jdbc:mysql://127.0.0.1:3306/shop?characterEncoding=utf-8&serverTimezone=GMT
driver=com.mysql.cj.jdbc.Driver
jdbc_username=root
jdbc_password=123456
initialSize=10
minIdle=5
maxActive=20

log4j.properties

log4j.rootLogger = debug,stdout,D
#System out Console
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%p] %d{yyyy-MM-dd HH:mm:ss,SSS} %m%n#System out File
log4j.appender.D = org.apache.log4j.FileAppender
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = F://eclipse-workspace/log.log
log4j.appender.D.Append = true
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ] -[%l] %m%n

db.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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd"><!-- 加载属性文件 --><context:property-placeholder location="classpath:jdbc.properties"/><!-- spring管理阿里数据源对象的创建,由此数据源对象管理创建数据库连接对象(Connection) --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${driver}"></property><property name="url" value="${url}"></property><property name="username" value="${jdbc_username}"></property><property name="password" value="${jdbc_password}"></property><property name="initialSize" value="${initialSize}"></property><property name="minIdle" value="${minIdle}"></property><property name="maxActive" value="${maxActive}"></property></bean><!-- 配置事务管理器类 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean><!-- 开启事务注解功能 --><tx:annotation-driven transaction-manager="transactionManager" /><!-- 配置sqlSessionFactory spring管理生成SqlSessionFactory对象--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!--注入数据库连接管理对象 --><property name="dataSource" ref="dataSource"></property><!-- 加载mybatis全局配置文件 --><property name="configLocation" value="classpath:mybatis-config.xml"></property><!-- 加载sql映射文件 -->
<!--             <property name="mapperLocations" value="classpath:com/company/ssm/mapper/*Mapper.xml"></property>--><property name="mapperLocations" value="classpath:mybatis/mapper/*Mapper.xml"></property><!-- java bean注册别名 -->
<!--           <property name="typeAliasesPackage" value="com.company.ssm.bean"></property>--></bean><!-- 指定生成接口代理 --><bean id="mapperFactory" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.company.ssm.dao"></property><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property></bean>
</beans>

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><typeAliases><package name="com.company.ssm.bean"/></typeAliases>
</configuration>

3、监听器

设置全局默认地址的监听器类

ObjectListener.java

package com.company.ssm.util;import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;/*** 监听器类* 设置全局默认地址*/
public class ObjectListener implements ServletContextListener {@Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println("ServletContext对象创建");//监听ServletContext 对象的创建ServletContext context = sce.getServletContext();context.setAttribute("path", context.getContextPath());}@Overridepublic void contextDestroyed(ServletContextEvent sce) {}
}

配置监听器:

web.xml

<!-- 配置监听器,设置上下文路径 --><listener><listener-class>com.company.ssm.util.ObjectListener</listener-class></listener>

4、拦截器

登录拦截器

LoginInterceptor.java

package com.company.ssm.interceptor;import com.company.ssm.bean.User;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;public class LoginInterceptor implements HandlerInterceptor {/*方法:检测用户是否登录,若没有登录则跳转登录页当请求到达控制器之前被执行true--继续向下执行,到达下一个拦截器,或控制器false--不会继续向下执行*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {HttpSession session = request.getSession();User user = (User) session.getAttribute("user");if(user != null){response.sendRedirect(request.getContextPath()+"/loginCtl/toLogin");return false;}else{return true;}}/*控制器方法执行之后执行*/@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {}/*整个请求结束后执行*/@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {}
}

配置拦截器:

springmvc.xml

<!-- 拦截器 --><mvc:interceptors><mvc:interceptor><mvc:mapping path="/**"/><!-- 配置哪些请求被拦截  拦截器不会拦截jsp页面请求--><mvc:exclude-mapping path="/statics/**"/><!-- 哪些请求不被拦截 --><mvc:exclude-mapping path="/loginCtl/toLogin"/><!-- 哪些请求不被拦截 --><bean id="demo" class="com.company.ssm.interceptor.LoginInterceptor"></bean></mvc:interceptor></mvc:interceptors>

ssm项目jsp加载不出来图片_16. SSM 搭建相关推荐

  1. Android 如何加载网页、图片以及PDF文件之项目实战

    这里对于App有需求需要做webView加载页面以及图片,pdf文件等,可以参考一下这篇文章: 我在做项目应用时,有个需求是把用户不同类型的数据上传到后台. 对于用户的数据大体分为以下类型: 图片(j ...

  2. Vue项目中加载图片的坑

    Vue项目中加载图片时,遇到的坑 1.当直接在标签中,使用图片路径,此时可以正常显示. <img src='img_src' /> 正常显示 2.当img标签的src属性为变量时,且该变量 ...

  3. 小程序一次性上传多个本地图片,上拉加载照片以及图片加载延迟解决之道

    一:小程序之一次性上传多个本地相片 最近由于项目需要所以学了下小程序,也做了一些东西,随后便有了以下的一些总结了,现在说说如何使用小程序一次性上传多个本地相片. 问题描述 最近做项目的时候要实现一个上 ...

  4. Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)【系列1】...

     Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)[系列1] Android在加载或者处理超大巨 ...

  5. gif android 点击 加载,android 加载显示gif图片的解决方案

    使用方法: 1-把GifView.jar加入你的项目. 2-在xml中配置GifView的基本属性,GifView继承自View类,和Button.ImageView一样是一个UI控件.如: andr ...

  6. VC下加载多种格式图片的方法总结

    From: http://www.cnblogs.com/Daywei/archive/2011/03/19/1988848.html 尽管VC有提供相应的API和类来操作bmp位图.图标和(增强)元 ...

  7. jsp加载常量的探讨

    今天遇到了一个jsp加载常量的问题: 代码如下: public class SystemConstant {public static final int LSSV = 188;public int ...

  8. ios wkweb设置图片_ios·WKWebView\UIWebView加载HTMLString,实现图片懒加载

    背景: 项目中开发商品类型数据,数据可变性较大,所以商品详情数据存在文案和图片富文本显示,后台返回了html格式的数据供前端展示. 如果用webView直接显示的话,需要等html内容完全展示才能获取 ...

  9. img实现图片加载前默认图片,加载时替换真实图片,加载失败时替换加载失败图片

    文章目录 前言 一.加载前 二.加载成功 三.加载失败 总结 前言 开发过程中,我们希望图片在加载失败的时候会替换成加载失败的图片,同时为了更好的体验,加载前最好也要有一张占位图片,即实现加载前显示一 ...

最新文章

  1. 2983:谁是你的潜在朋友
  2. [渝粤教育] 广东-国家-开放大学 21秋期末考试中国近现代史纲要(A)10881k1
  3. 软件工程导论知识点总结
  4. 计算机修改了服务如何恢复,怎么修复MSDTC服务?
  5. matlabplot———散点图
  6. Revit二次开发-设置视图范围无限制
  7. Android APP如何获取framework下的资源?
  8. 【具有独到技术的软件卸载工具】
  9. 整理Ubuntu 14.04 Indicators 以及好的软件
  10. 大地坐标系(Geocentric Geodetic Coordinate System)与笛卡尔积坐标系(Geocentric Space Rectangular Coordinate System)
  11. 游戏本自动掉帧_玩游戏掉帧怎么办?
  12. Vulkan简介(1)
  13. 数据分析算法-决策树(上)-课堂学习笔记
  14. 美国国土安全部部长约翰逊就Dyn网络攻击事件发表声明
  15. RFID手持终端PDA如何进行二次开发
  16. 前端面试回答-小程序面试_css
  17. 西游记中孙悟空的蜕变
  18. 密探独家 | 访谈李开复:这三个行业会最先被 AI 颠覆
  19. 转载:汽车ABS、EBD、ESP、TCS、HDC、HHC、这些英文都有什么用处?
  20. 机器学习:BP神经网络,CNN卷积神经网络,GAN生成对抗网络

热门文章

  1. 解决jquery和prototype库冲突问题
  2. 解决ThinkPHP关闭调试模式时报错的问题汇总
  3. 工控随笔_09_西门子_S7-200 Smart与V20 USS通信USS_RPM_R利用轮询的方式通讯异常
  4. 解决PLSQL 查询后显示中文为问号(???)问题
  5. mysql8.0.18ZIP版下载与安装(以及无my-default.ini文件和data文件夹的解决方法)
  6. 服务不支持 chkconfig 的解决方法
  7. json loads No JSON object could be decoded 问题解决
  8. JavaScript中的endsWith
  9. SQL用于更新ID为顺序ID(用于删除了几条数据导致id不连续)
  10. Python json pickle模块