本文章都不讲基础知识,是从我写一个项目中摘录部分的代码来进行讲解,这里面的知识希望说能帮助到大家,然后也顺便可以给我复习一下
一、创建项目
1.1 maven
Maven是我们使用IDEA写项目导入依赖的时候的最好伙伴,创建项目最重要的工具
1.2 项目创建
1.选择Meavn
2.勾上Create from archetype,选择maven-archetype-webapp,记住不要选成上面那个cocoon-archetype-webapp(我第一次写的时候一直过不去就这个原因)
3.这里配置maven的配置
4.第一次加载可能有点慢,但是要记住上面必须有这几个包,不然就说明你网络不好或者maven没有配置好,网上教配置maven的文章很多,大家自己查阅
二、依赖导入
1.1 此处提供全部依赖,在后面的每个章节里面都会出现让大家认识
<dependencies>
<!-- Junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- Spring基本组件 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.11.RELEASE</version>
</dependency>
<!-- SpringMVC基本组件 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.11.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.1.11.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.6</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
<!-- Mybatis组件 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<!-- MySQL基本组件 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.11.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
<!-- Spring整合ORM -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>5.3.3</version>
</dependency>
<!-- 日志测试 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<!-- 偷懒神器lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
<!-- fastJSON -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.79</version>
</dependency>
</dependencies>
三、文件配置
此处提供整个项目需要的一些基础xml跟properties的配置文件,使用方法跟镜像配置都会在文章后面进行阐述
1.1 web.xml
此处需要修改的仅有<param-value>classpath:xxxxxxx</param-value>,根据实际的springmvc.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>
<display-name>Archetype Created Web Application</display-name>
<!-- 配置spring mvc的核心控制器 -->
<servlet>
<servlet-name>SpringMVCDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置初始化参数,用于读取SpringMVC的配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!-- 配置servlet的对象创建的时间点:应用加载时创建。
如果该元素的值为负数或者没有设置,则容器会当servlet被请求的时候加载。
如果值为正整数时或者0时,表示容器在应用启动时就加载并初始化这个servlet,值越小,servlet的优先级越高,越先被加载-->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 所有的请求都会执行对应的这个方法 -->
<servlet-mapping>
<servlet-name>SpringMVCDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
1.2 springmvc.xml
mvc的包同时包含了spring IOC的sring.xml的作用,也可以直接扫描包,然后根据注释添加成bean
<?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 http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
<!-- 配置创建 spring 容器要扫描的包 -->
<context:component-scan base-package="com.company"></context:component-scan>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
1.3 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>
<!-- mybatis环境 -->
<environments default="mysql">
<environment id="mysql">
<!-- 配置事务的类型 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源(连接池) -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/数据库名称?userSSL=false&serverTimezone=Asia/Shanghai"/>
<property name="username" value="帐号"/>
<property name="password" value="密码"/>
</dataSource>
</environment>
</environments>
<!-- mybatis映射配置位置 -->
<!-- 按模块映射不同的配置文件,让配置文件看起来更简洁 -->
<mappers>
<mapper resource="映射配置文件全路径"></mapper>
</mappers>
</configuration>
1.4 映射.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="dao接口全路径">
</mapper>
1.5 log4j.properties
### 设置###
log4j.rootLogger = debug,stdout,D,E
### 输出信息到控制抬 ###
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 = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=D://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = D://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=D://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =D://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
1.6 包配置
创建完整个项目的包如下,后续有补充会提到
四、Spring IOC介绍
偏向实际开发需要的一些东西,其他知识请搜索专门的博主应该有进行介绍,我这里直接通过注释,自动扫描包来进行容器的配置
1.1 依赖导入
<!-- Spring IOC容器 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.11.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.6</version>
</dependency>
1.2 Sring IOC作用介绍
主要是将所有的对象储存在统一的一个容器中进行管理,可以通过容器对一个对象进行获取跟修改,大大地将程序中地对象之间联系起来,增加了耦合性跟可维护性
1.3 注释
1.3.1 创建对象的注解
1. @Compoent
2. @Service
3. @Controller
4. @Repository
-
这四个注解是一样的作用,使我们的架构更加清晰
-
一般我们的实体层不用注入对象
-
@component用于控制层(controller)、持久层(dao)、业务逻辑层(service)之外的类
1.3.2 注入对象的注解
1. @Autowired
作用:按照类型自动注入对应对象的全部方法跟属性
@Repository
public class ClassDao1 extends ClassDao{}
@Repository
public class ClassDao2 extends ClassDao{}
@Autowired
private ClassDao classDao;
public void queryAll() {
dao.queryAll();
System.out.println(classDao);
}
2. @Qualifier
作用:在自动注入的前提下,根据不同的bean名称来指定哪一个对象的自动注入
@Autowired
@Qualifier("classDao1")
private ClassDao classDao;
public void queryAll() {
dao.queryAll();
System.out.println(classDao);
}
3. @Resource
直接根据bean的id进行注入
@Resource(name = "studentDao1")
StudentDao dao;
4. @Value
作用:直接对对象进行赋值
@Value("王五")
private String name;
5. @Scope
作用:指定Bean的作用范围(单例,多例,……)
@Scope("prototype")
1.3.3 其他注解
1. @Configuration
作用:用于指定当前类是一个spring配置类,当创建容器时会从该类上加载注解。获取容器时需要使用
@Configuration // 指定当前类是一个配置类
@ComponentScan("com.company") // 指定要扫描的包
public class SpringConfig {}
ApplicationContext ctx =new AnnotationConfigApplicationContext(有@Configuration注解的类.class)
2. @ComponentScan
作用:用于指定spring在初始化容器要扫描的包,作用和spring的xml配置文件中<context:component-scan base-package="包名">一样
属性:basePackages:用于指定要扫描的包,和该注解的value属性一样
3. @Import
作用:用于导入其他配置类,在引入其他配置类时,可以不用再写@Configuration注解,当然,写上也可以
属性:value,用于指定其他配置类的字节码
// 可以写多个 使用,隔开
@Import(SpringConfig.class,xxx)
public class SpringConfig2 {}
4. @PropertySource
作用:用于加载.properties文件中的配置。例如我们配置数据源时,可以把连续数据库信息写到properties配置文件中,就可以使用此注解指定properties配置文件的位置
属性:value,用于指定properties文件位置,如果是在类路径下,需要写上classpath
@PropertySource("classpath:配置文件.properties")
获取配置中的值
5. @Value("$(配置文件中的Key)")
这个在后面的springboot中配置对应的yml文件有所作用
@Component
@PropertySource("classpath:druid.properties")
public class JDBCUtil {
@Value("${driverClassName}")
private String driverClassName;
@Value("${username}")
private String username;
@Value("${password}")
private String password;
public void getConnection(){
System.out.println(driverClassName);
System.out.println(username);
System.out.println(password);
}
}
JDBCUtil jdbcUtil = ctx.getBean(JDBCUtil.class);
jdbcUtil.getConnection();
6. @Bean
作用:只能写在方法上,表明此方法创建一个对象,并且放入spring容器中
属性:name,给当前@Bean注解方法创建的对象指定一个名称(即Bean的id)。不写时,默认就是当前方法的名称。
五、Spring MVC介绍
1.1 依赖导入
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.11.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.11.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.1.11.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
1.2 Spring MVC作用介绍
代替JavaWeb中的servlet完成对应的任务,详细的去搜索对应的JavaWeb文章查找
1.3 注释
1.3.1 @RequestMapping
写在类的上面,声明一级路径,并且让tomcat进行对应的web操作
1.3.2 GET请求
@GetMapping("/路径“) Or @RequestMapping(value = "/路径" , method = RequestMethod.GET )
@RequestMapping(value = "/update", method = RequestMethod.GET)
public void update() {
System.out.println(getClass().getName() + " update");
}
@GetMapping("/delete")
1.3.3 POST请求,PUT请求,Delete请求
全部同上GET请求的用法,根据实际项目要求的对应接口,来进行不同的业务操作。
实际上不同的请求一般用于不同的业务需求,大致如下:
- GET: 获取指定资源的信息。
- POST: 向指定资源提交要被处理的数据或更新数据。
- PUT: 从客户端向服务器传送的数据取代指定文档的内容。
- DELETE: 删除指定资源。
六、Mybatis介绍
这里只有简单的介绍,主要是展示代码的使用。