SpringMVC介绍
- SpringMVC介绍
- SpringMVC的运行原理
- SpringMVC的使用
- 1、依赖jar包
- 2、在web.xml中配置前端控制器
- 3、创建SpringMVC的配置文件
- 4、编写controller层
- 5、编写jsp页面
- 日志分析
- 1、日志依赖
- 2、日志配置文件
- 3、日志打印
- 数据插入示例
- mapper.java接口文件
- mapper.xml文件
- 删除数据示例
- 修改数据示例
- mapper.xml配置文件
SpringMVC介绍
SpringMVC是属于是spring中web模块的支持一部分
实现的了WEB MVC的设计模式,进行web层的职责解耦
请求驱动类型的web框架:请求-响应的模型
SpringMVC的运行原理
组件:
前端控制器:控制中心,组件间解耦合(无需开发/配置即可)
处理器映射器:匹配URL是否存在(无需开发/配置即可)
处理器适配器:适配查找具体处理器(无需开发/配置即可)
处理器:不同URL处理逻辑不同(需要开发 后端java)
视图解析器:查找View实例对象(无需开发/配置即可)
视图:web页面(jsp、freemark、pdf等类型视图)(需要开发/网页)
SpringMVC的使用
web项目需要放在容器里执行(Tomcat/jetty)
本文用的是jetty
1、依赖jar包
springMVC中web依赖:
<!--web依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<!--Spring 基本核心jar包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<!--log4j日志-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--注解相关jar包-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
2、在web.xml中配置前端控制器
<?xml version="1.0" encoding="UTF-8"?>
<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/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!--配置前端控制器-->
<servlet>
<servlet-name>springmvc-gysx</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springmvc-gysx</servlet-name>
<url-pattern>/</url-pattern>
<!--http://www.baidu.com/index-->
</servlet-mapping>
</web-app>
注意:前端控制器需要使用org.springframework.web.servlet.DispatcherServlet会拦截指定格式的URL到DispatcherServlet
3、创建SpringMVC的配置文件
创建一个spring-mvc.xml文件,放在资源文件路径下resource下,配置映射器,适配器和解析器
<?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">
<!--配置SpringMVC的需要扫描的包路径-->
<context:component-scan base-package="com.tulun.gysx.controller"/>
<!--配置映射器、适配器:使用默认的处理器处理,不用显性配置映射器、适配器-->
<mvc:annotation-driven/>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
</beans>
注意:将spring-mvc.xml配置文件加载到web.xml配置文件中,方便加载
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
4、编写controller层
@Controller
public class TestController {
@RequestMapping("/gysx")
public String gysx() {
//返回页面
return "index.jsp";
}
}
5、编写jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>success</title>
</head>
<body>
<h1>你好,同学们!</h1>
</body>
</html>
日志分析
1、日志依赖
<!--log4j日志文件-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2、日志配置文件
创建log4j.properties文件
## debug 级别
log4j.rootLogger=DEBUG,Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{yyyy-MM-dd-HH\:mm\:ss,SSS} [%t] [%c] [%p] - %m%n
log4j.logger.com.mybatis=DEBUG /
##输出sql 语句
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
3、日志打印
2021-07-02-10:31:27,929 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction] [DEBUG] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@dc24521]
2021-07-02-10:31:27,931 [main] [com.tulun.mapper.StudentMapperGY.selectStudentById] [DEBUG] - ==> Preparing: select * from student where SID = ?
2021-07-02-10:31:28,036 [main] [com.tulun.mapper.StudentMapperGY.selectStudentById] [DEBUG] - ==> Parameters: 3(Integer)
2021-07-02-10:31:28,196 [main] [com.tulun.mapper.StudentMapperGY.selectStudentById] [DEBUG] - <== Total: 1
{"SID":3,"Sname":"sunfen","Ssex":"nan","Sage":21}
数据插入示例
insert into student (XXX) values():
mapper.java接口文件
//插入数据
int insertStudent(Student student);
mapper.xml文件
<!--插入数据-->
<insert id="insertStudent" parameterType="com.tulun.bean.StudentGY">
insert into student (SID,Sname,Sage,Ssex) values (#{SID},#{Sname},#{Sage},#{Ssex})
</insert>
执行代码:
//指定mybatis的全局配置文件
String fileName= "mybatis-config.xml";
//通过流的形式来读取配置文件
InputStream inputStream = Resources.getResourceAsStream(fileName);
//创建会话工厂
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
//获取会话
SqlSession sqlSession = sqlSessionFactory.openSession();
//通过动态代理获取一个代理对象
StudentMapperGY studentMapperGY = sqlSession.getMapper(StudentMapperGY.class);
// 插入操作
StudentGY studentGY = new StudentGY();
studentGY.setSID(21);
studentGY.setSname("GYSX");
studentGY.setSage(21);
studentGY.setSsex("nan");
studentMapperGY.insertStudent(studentGY);
sqlSession.commit();
删除数据示例
mapper.java接口文件
//删除数据
int delStudentById(Integer id);
mapper.xml配置文件
<!--删除数据-->
<delete id="delStudentById" parameterType="int">
delete from student where SID = #{id}
</delete>
修改数据示例
mapper.java接口文件
//修改数据
int updateNameById(StudentGY studentGY);
mapper.xml配置文件
<!--修改数据-->
<update id="updateNameById" parameterType="com.tulun.bean.StudentGY">
update student set Sname = #{Sname} where SID = #{SID}
</update>