我会把所有步骤全部记录下来。好记性不如烂笔头。光看感觉没啥感觉。还是手动来一遍记录吧。奥利给。
1.创建项目
创建项目 都是用的maven最基本的创建方式
修改成web项目[ POM.xml ]
打包方式
<!-- 打包 -->
<packaging>war</packaging>
项目编码
<!-- 设置编码 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
依赖库
根据具体情况来
<!-- 依赖 -->
<dependencies>
<!-- Servlet + JSP -->
<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>
<!-- Log -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<!-- Spring + SpringMVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.6</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.9.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.0</version>
</dependency>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
</dependencies>
项目结构 核心配置文件[web.xml]
因为在 pom.xml 中配置了打包方式 war 所有已经是web项目啦
按快捷键 进入 项目配置中
初始界面
添加 web.xml (修改路径哦)
src/main/webapp
创建目录
效果
2.启动web
创建index.jsp
在webapp下面创建 index.jsp
配置tomact
配置 Application Context
启动小虫子 debug
3.业务创建
创建domain
Skill 类
private Integer id;
private Date createdTime;
private String name;
private Integer level;
创建dao层
创建 接口 interface 接口 因为用mybatis
boolean save(Skill skill);
boolean update(Skill skill);
boolean remove(Integer id);
@Select("SELECT * FROM skill")
List<Skill> list();
@Select("SELECT * FROM skill WHERE id = #{id}")
Skill get(Integer id);
创建 xml 在 resources 下面创建 mappers文件夹 创建文件 skill.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="com.mj.dao.SkillDao">
<insert id="save" parameterType="com.mj.domain.Skill">
INSERT INTO skill(name, level) VALUES (#{name}, #{level})
</insert>
<update id="update" parameterType="com.mj.domain.Skill">
UPDATE skill SET name = #{name}, level = #{level} WHERE id = #{id}
</update>
<delete id="remove" parameterType="int">
DELETE FROM skill WHERE id = #{id}
</delete>
</mapper>
创建applicationContext.xml
mybatis的的 SqlSessionFatoryBean
- 引入一个配置文件用于数据库方面的驱动
# jdbc
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/xr
jdbc.username=root
jdbc.password=root
- applicationContext.xml添加
<!-- 数据源(Druid) -->
<context:property-placeholder location="classpath:main.properties"/>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:mappers/*.xml"/>
</bean>
<bean id="configurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<property name="basePackage" value="com.mj.dao"/>
</bean>
Test测试一波
4.返回json
先把service、controller层代码搞好
记得注入哦
创建 dispatcherServlet.xml
把自定义注意的包 记得扫描一下 在 applicationContext.xml 添加
<context:component-scan base-package="com.mj.service"/>
在 dispatcherServlet.xml 添加
<context:component-scan base-package="com.mj.controller"/>
web.xml 配置 DispatcherServlet (父子容器)
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<!--默认会加载 /WEB-INF/${servlet-name}-servlet.xml-->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--主动读取配置xml文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 子容器 -->
<param-value>classpath:dispatcherServlet.xml</param-value>
</init-param>
<!--项目一部署到web容易中,就创建servlet,去初始化IoC容器-->
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<!--拦截所有请求-->
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 父容器 -->
<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>
ContextLoaderListener 的作用就是启动Web容器时,自动装配 ApplicationContenxt.xml 的配置信息。因为它实现了ServletContextLister 这个接口,在 web.xml 配置这个监听器,启动容器时,就会默认执行它实现的方法。
web.xml 配置 POST请求乱码
<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>
dispatcherServlet.xml 配置响应数据乱码
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="defaultCharset" value="UTF-8"/>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="defaultCharset" value="UTF-8"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
MyBatis 补充
如果将 Mapper 文件跟 dao 放在相同目录下,且文件名跟dao 一样
- 那么 通过MapperScannerConfigurer 就可以找到 Mapper文件
- 不需要再配置 SqlSessionFactoryBean 的 mapperLocations 属性
方案: 名字保持一致
创建 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>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
配置 configLocation
<!-- <property name="mapperLocations" value="classpath:mappers/*.xml"/>-->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
Maven 补充 (配合 Mabatis 补充)
默认情况下,Maven并不会讲源代码文件夹中的配置文件打包 所以要配置
- 配合Dao层的xml放在和dao层一个文件夹中问题
<build>
<!-- 说明资源的位置(哪些东西算是资源) -->
<resources>
<!-- 第一个位置 -->
<resource>
<directory>src/main/resources</directory>
</resource>
<!-- 第二个位置 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
解决问题
xml中属性报红
一般druid 的属性也有问题 解决方案是
这样解决不了问题 我重新新建项目了 可以了 并且提示了 是不是网问题呢