基础SSM框架搭建

news2024/11/15 21:28:48

SSM框架

  • 一、注入依赖
  • 二、配置web.xml
  • 三、springmvc-common.xml配置
  • 四、mybatis-config.xml配置
  • 五、log4j.properties日志文件配置
  • 六、jdbc.properties连接信息
  • 七、applicationContext.xml配置
  • 八、UserDao.xml案例
  • 九、UserService接口
  • 十、UserServiceImpl实现
  • 十一、MyConverter
  • 十二、UserController


在这里插入图片描述

一、注入依赖

		 <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <scope>provided</scope>
    </dependency>
    <!-- spring的依赖 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.3.23.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>4.3.23.RELEASE</version>
    </dependency>

    <!-- 数据库驱动包 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.26</version>
    </dependency>

    <!-- c3p0 -->
    <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
    <dependency>
      <groupId>com.mchange</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.5.5</version>
    </dependency>

    <!--jstl标签  -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

    <!-- fastjson -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.47</version>
    </dependency>
    <!-- log4j日志 -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

    <!-- mybatis的依赖 -->
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.7</version>
    </dependency>



    <!-- mybatis跟spring整合的依赖 -->
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.6</version>
    </dependency>
        

二、配置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>spring-springMVC20221121</display-name>

  <!-- 配置首页 -->
  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>

  <!-- 配置过滤器。。解决post请求的中文乱码问题 :仅仅能解决post请求的中文乱码问题,注意get请求中文乱码无法处理-->
  <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>

  <!-- 配置全局变量  指定spring的主配置文件,方便监听器去加载 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>

  <!-- 配置一个监听器    用来加载spring的主配置文件 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <!-- 配置核心分发器,加载springmvc的主配置文件 -->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc-common.xml</param-value>
    </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>


</web-app>

三、springmvc-common.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context-4.3.xsd
        http://www.springframework.org/schema/aop
        https://www.springframework.org/schema/aop/spring-aop-4.3.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
        ">
	<!-- 开启IOC注解扫描 -->
	<context:component-scan
		base-package="com.wk"></context:component-scan>

<!-- 配置全局的类型转换器     时间格式转换 -->
	<bean id="conversionServiceFactoryBean" class="org.springframework.context.support.ConversionServiceFactoryBean">
		<property name="converters">
			<set>
				<bean class="com.wk.convert.MyConverter"></bean>
			</set>
		</property>
	</bean>

	<!-- springmvc开启使用注解进行映射处理 -->
	<mvc:annotation-driven conversion-service="conversionServiceFactoryBean">

	</mvc:annotation-driven>

	<!-- 配置视图解析器:可以给返回的页面名称自动补充前缀和后缀 -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- 自动补充前缀 -->
		<property name="prefix" value="/"></property>
		<!-- 自动补充后缀 -->
		<property name="suffix" value=".jsp"></property>
	</bean>

	<!-- 开启静态资源访问 location:资源文件所存放的物理路径 mapping:资源文件所访问的请求地址 -->
<!--	<mvc:resources location="/img/" mapping="/img/**"></mvc:resources>-->
<!--	<mvc:resources location="/js/" mapping="/js/**"></mvc:resources>-->
<!--	<mvc:resources location="/css/" mapping="/css/**"></mvc:resources>-->
</beans>

四、mybatis-config.xml配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<mappers>
		<!-- 新增mapper文件时一定要在myabtis的主配置文件中配置进来 -->
		<!-- <mapper resource="org/mybatis/example/BlogMapper.xml" /> -->
		<mapper resource="com/wk/dao/UserDao.xml" />
	</mappers>
</configuration>

五、log4j.properties日志文件配置

#LOG_DIR:/usr/local/.../logs\
LOG_DIR = E:\\logs
#Level:ERROR,WARN,INFO,DEBUG
log4j.rootLogger = INFO,Console,File
log4j.appender.Console = org.apache.log4j.ConsoleAppender
log4j.appender.Console.Threshold = DEBUG
log4j.appender.Console.ImmediateFlush = true
log4j.appender.Console.Target = System.out
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
log4j.appender.File = org.apache.log4j.DailyRollingFileAppender
log4j.appender.File.Threshold = INFO
log4j.appender.File.ImmediateFlush = true
log4j.appender.File.Append = true
log4j.appender.File.DatePattern = '_'yyyy-MM-dd'.log'
log4j.appender.File.encoding=UTF-8
log4j.appender.File.File = ${LOG_DIR}/info
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern = [%-5p][%d{ISO8601}]%m%n

六、jdbc.properties连接信息

根据个人连接数据库信息更改

a=jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8
b=root
c=123
d=com.mysql.cj.jdbc.Driver

七、applicationContext.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:context="http://www.springframework.org/schema/context"
	   xmlns:aop="http://www.springframework.org/schema/aop"
	   xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context-4.3.xsd
        http://www.springframework.org/schema/aop
        https://www.springframework.org/schema/aop/spring-aop-4.3.xsd
        http://www.springframework.org/schema/tx
        https://www.springframework.org/schema/tx/spring-tx-4.3.xsd
        "
       >
		<!-- 开启注解扫描  IOC -->
		<context:component-scan base-package="com.wk"></context:component-scan>

		<!-- 开启aop 注解
		<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
		-->
		
		
		<!-- 3:去加载数据库连接信息的配置文件 -->
		<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		
			<property name="locations">
				<list>
					<value>classpath:jdbc.properties</value>
				</list>
			
			
			</property>
		</bean>
		
		
		<!-- 2:注入数据源对象     c3p0 -->
		<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
			<!-- 用户名 -->
			<property name="user" value="${b}"></property>
			<!-- 密码 -->
			<property name="password" value="${c}"></property>
			<!-- 驱动类 -->
			<property name="driverClass" value="${d}"></property>
			<!-- 数据库连接地址 -->
			<property name="jdbcUrl" value="${a}"></property>
		
		</bean>
		
		
		<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
			<property name="dataSource" ref="dataSource"></property>
			<property name="configLocation" value="classpath:mybatis-config.xml"></property>
		
		</bean>
		
		<!-- 扫描dao接口 -->
		<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
			<property name="basePackage" value="com.wk.dao"></property>
			<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"></property>
		</bean>

		<!-- 
			spring集成事物管理:
				1:注入事物管理着对象(需要引入数据源对象)
				2:开启事物
				3:指定在哪些方法上需要绑定事物
		 -->
		<bean id="tx" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
			<property name="dataSource" ref="dataSource"></property>
		</bean>
		<tx:annotation-driven transaction-manager="tx"/>				
</beans>

八、UserDao.xml案例

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">


<!-- nameSpace:  这个文件对应的dao接口是哪一个,注意写全称 -->
<mapper namespace="com.wk.dao.UserDao">

    <insert id="addUser" parameterType="com.wk.entity.User">
        insert into tb_user (uname,upwd,email,phone,addr,birth)
        values(#{uname},#{upwd},#{email},#{phone},#{addr},#{birth})
    </insert>

</mapper>

九、UserService接口

public interface UserService {
    void insertUser(User user);
}

十、UserServiceImpl实现

@Service
public class UserServiceImpl implements UserService {
	
	@Autowired
	private UserDao userDao;
	
	@Override
	public void insertUser(User user) {
		userDao.addUser(user);
	}

}

十一、MyConverter

public class MyConverter implements Converter<String, Date>{

	@Override
	public Date convert(String source) {
		
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		
		try {
			Date d=sdf.parse(source);
			return d;
		} catch (ParseException e) {
			
			e.printStackTrace();
			return null;
		}
	}

}

十二、UserController

@Controller
@RequestMapping("/user")
public class UserController {

	@Autowired
	private UserService userService;
	
	@RequestMapping("/reg")
	public String reg(User user) {
		
		userService.insertUser(user);
		
		return "login";
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/31794.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【表白程序】盛开的玫瑰代码

我挥舞着键盘和本子&#xff0c;发誓要把世界写个明明白白。 今天带来的是盛开的玫瑰&#xff0c;希望大家喜欢&#xff01; 简介 HTML5 SVG线条玫瑰花动画特效是一款基于svg绘制卡通玫瑰花动画&#xff0c;先用线条勾画出花的现状&#xff0c;在生成颜色过程特效。 利用所学…

如何提取图片中文字?安利这几个图片转文字提取的方法

在我们工作学习中&#xff0c;有没有遇到过需要将图片中的文字信息给记录下来的情况&#xff0c;一般这种时候你是怎么做的呢&#xff1f;是根据图片手动输入吗&#xff1f;如果是在文字少量的情况下&#xff0c;可以这样操作&#xff0c;可是如果文字较多的话&#xff0c;手动…

iOS 16.1新功能尝鲜:如何在iPhone上启用实时活动?

近日&#xff0c;苹果发布了iOS 16.1正式版&#xff0c;在本次更新中&#xff0c;苹果推出了全新“实时活动”功能&#xff0c;用户能在iPhone锁定屏幕上查看到更多信息&#xff0c;如果是iPhone 14 Pro机型&#xff0c;实时活动信息还将在灵动岛同步显示。 那么&#xff0c;i…

用HTML+CSS+JS做一个漂亮简单的游戏网页——全屏游戏美术大赛作品(4个滚动页面)

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

[论文阅读] Adversarial Learning for Semi-Supervised Semantic Segmentation

[论文地址] [代码] [BMVC 18] Abstract 我们提出了一种使用对抗性网络进行半监督性语义分割的方法。虽然大多数现有的判别器都是在图像层面上对输入图像进行真假分类的训练&#xff0c;但我们以完全卷积的方式设计了一个判别器&#xff0c;以区分预测的概率图和考虑到空间分辨…

盘点一下分布式模式下的服务治理和监控优化方案

什么是服务治理&#xff1f; 相信每一个软件公司&#xff08;企业&#xff09;都希望可以确保开发及项目运行流程可以顺利&#xff0c;但是如果要完美完结那么需要其中会有很多的因素存在。包括&#xff0c;最佳实践、架构原则、服务治理以及其他决定性的因素。而其中服务治理…

网络入侵检测 Network Intrusion Detection System (NIDS)

网络入侵检测 Network Intrusion Detection System--NIDS网络入侵检测 Network Intrusion Detection System (NIDS)1.学习内容2.数据集说明3.NIDS组件4.基于SDN的网络入侵检测5.实验步骤下载数据集下载代码配置环境结构目录运行程序训练结果6.总结参考论文数据集申明&#xff1…

JVM垃圾回收——CMS垃圾收集器

目录 一、什么是CMS垃圾收集器 二、CMS垃圾收集的过程 三、CMS收集器的不足 四、CMS收集器的参数配置 一、什么是CMS垃圾收集器 虽然HotSpot虚拟机已经在jdk14中移除了CMS垃圾收集的参数&#xff0c;但是考虑到还有很多开发是基于jdk8开发的&#xff0c;所以还是有必要了解…

leetcode17. 电话号码的字母组合

文章目录题目思考代码和注释总结题目 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 来源&#xff1a;力扣&#xff08;…

【计算机毕业设计】5.网上书店系统maven源码

一、系统截图&#xff08;需要演示视频可以私聊&#xff09; 摘要 随着Internet的发展&#xff0c;人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化、网络化和电子化。网上销售&#xff0c;它将是直接市场营销的最新形式。本论文是以构建网上书店系统为…

善网ESG周报(第一期)

ESG报告&#xff1a; 诺基亚最新ESG报告已出炉 报告显示&#xff0c;诺基亚的ESG战略着重于环境、工业数字化、安全和隐私、缩小数字鸿沟、以及企业责任。 Lazada 发布首份ESG报告&#xff1a;为东南亚六国创造约110万经济机会 报告提出&#xff0c;Lazada在区域赋能方面、…

BGP进阶:BGP 综合实验二

实验拓扑及说明 设备编号及互联线路如图所示&#xff1b;所有设备的互联地址段采用10.1.xy.0/24&#xff0c;其中xy为设备编号&#xff0c;x为编号较小的设备&#xff0c;y为编号较大的设备。例如R2及R3之间的直连链路&#xff0c;网段为10.1.23.0/24&#xff0c;这条链路上R2的…

2023年系统规划与设计管理师-第一章信息的综合知识

1. 思维导图 2.信息补充 2.1 信息的传输模型 2.2 信息质量的七大属性 2.3 信息化的基本内涵 2.4 电子商务类型 2.5 电子商务类型 2.6 电子商务的特征 2.7 电子商务的基础设施 2.8 加快商务发展的基本原则 2.9 企业信息化 2.10 信息系统的组成部分 2.11 信息系统的生命周期 2.12…

世界杯 | 中国首次承建世界杯主赛场,基建狂魔用BIM征服世界杯

hi&#xff0c;家人们&#xff0c;我是建模助手。 呐&#xff0c;一如既往地&#xff0c;这次世界杯中国除了球队&#xff0c;其他基本都去了卡塔尔&#xff0c;我可不是在搞幽默&#xff0c;本次世界杯可真是中国元素满满—— 包括但不限于Made in China的纯电大巴、无人驾驶地…

技术分享 | 无人驾驶汽车的眼睛

根据智能化程度的不同&#xff0c;自动驾驶被分为5个等级&#xff1a;L1辅助驾驶、L2部分自动驾驶、L3有条件自动驾驶、L4高度自动驾驶、L5完全自动驾驶&#xff0c;即真正的无人驾驶。 日渐活跃于公众视野的“无人驾驶”概念&#xff0c;往往是指L3及以上级别的自动驾驶。目前…

深度解析为什么做深度学习,都用python,而不用java或者c++

前言 Python是解释语言&#xff0c;这让写程序方便不只一点。举例来说&#xff0c;在C等编译语言里写一个矩阵乘法&#xff0c;需要自己分配操作数&#xff08;矩阵&#xff09;的、分配结果的内存、手动对BLAS接口调用gemm、最后如果没用smart pointer还得手动回收内存空间。P…

看完这篇SpringBoot让我在阿里成功涨薪40%,感谢

前言&#xff1a; SpringBoot的好处是把Java2EE的各项技术的整合变得非常的简单&#xff0c;但是也有它的缺点&#xff0c;它的封装性太强&#xff0c;如果你想了解SpringBoot底层的原理&#xff0c;你必须对SpringMvc、Spring注解等比较了解&#xff0c;你才能更好的去了解Sp…

Jenkins项目中有中文文件出错处理

jenkins build的时候报 ... Malformed input or input contains unmappable characters... 提示是由于项目中有中文文件名&#xff0c;乱码处理不了 ERROR: Build step failed with exception java.nio.file.InvalidPathException: Malformed input or input contains unmappab…

Java学习之继承二细节(学习重点)

目录 继承细节 第一条 父类代码 子类代码 测试代码 运行结果 第二条 第三条 第三条-1 第三条-2 第四条 一、调用父类Base的无参构造器 二、一个参数的构造器 三、两个参数的构造器 第五条 第六条 第七条 第八条 第九条 第十条 继承细节 第一条 子类继承了父类所有的…

用DIV+CSS技术设计的美食主题网站(web前端网页制作课作业)美食餐饮网站设计与实现(HTML+CSS+JavaScript)

&#x1f468;‍&#x1f393;静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计&#x1f469;‍&#x1f393;,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等&#xff0c;用的最多的还是DW&#xff0c;当然不同软件写出的…