# my-project
**Repository Path**: monkeyshow/my-project
## Basic Information
- **Project Name**: my-project
- **Description**: 这是我的第一个git仓库
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-07-13
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Eclipse基础环境配置
1. 修改workspace的文件字符编码为UTF-8

2. 将所有JSP文件的编码方式,改成UTF-8

3. 禁用Eclipse的Validation验证功能

# 0. Eclipse中修改Maven类型的JavaWeb项目,生成web.xml
> (1)创建Maven项目,选择war类型
>
> (2)修改项目配置信息,生成web.xml
>
> 
# 1. 添加Maven依赖(pom.xml)
```xml
UTF-8
5.2.7.RELEASE
3.5.5
2.0.5
5.1.49
1.1.23
1.7.30
4.13
1.2
3.1.0
2.1
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-test
${spring.version}
test
org.springframework
spring-jdbc
${spring.version}
org.mybatis
mybatis
${mybatis.version}
org.mybatis
mybatis-spring
${mybatis-spring.version}
mysql
mysql-connector-java
${mysql.version}
com.alibaba
druid
${druid.version}
org.slf4j
slf4j-log4j12
${slf4j.version}
junit
junit
${junit.version}
test
javax.servlet
jstl
${jstl.version}
javax.servlet
javax.servlet-api
${servlet-api.version}
provided
javax.servlet.jsp
jsp-api
${jsp-api.version}
provided
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
UTF-8
/mvc
4567
```
# 2. 配置web.xml
```xml
contextConfigLocation
classpath:spring/spring-mybatis.xml
org.springframework.web.context.ContextLoaderListener
mvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring/spring-mvc.xml
mvc
/
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
forceRequestEncoding
true
forceResponseEncoding
true
CharacterEncodingFilter
/*
```
# 3. SpringMVC配置文件(spring-mvc.xml)
```xml
```
# 4. Spring与MyBatis集成配置(spring-mybatis.xml)
```xml
classpath:mybatis/mapper/*.xml
```
# 5. 添加测试框架支持(可选)
可以自动百度/谷歌(SpringMVC 测试),以前想要对web项目进行测试,必须发布到tomcat,启动tomcat,打开浏览器,输入url,输入数据,提交到服务器进行验证。
> 添加依赖 Junit和Spring-test
编写测试用例代码
> MVC测试代码
```java
// 静态导入
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpSession;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.context.WebApplicationContext;
//使用junit4进行测试
@RunWith(SpringJUnit4ClassRunner.class)
//加载spring相关的配置文件
@ContextConfiguration(locations = { "classpath:spring/spring-mvc.xml","classpath:spring/spring-mybatis.xml" })
//设置web项目的环境,如果是Web项目,必须配置该属性,否则无法获取 web 容器相关的信息(request、context 等信息)
//此注解指定web资源的位置,默认为src/main/webapp
@WebAppConfiguration("src/main/webapp")
public class MvcTest {
MockMvc mockMvc; // 模拟MVC对象
//Spring核心 IoC-->要求类属性private修饰,提供public的setXxx方法进行注入。
//Spring提供 Autowired注解: 省略setXxx方法,自动注入对应属性
//自动从BeanFactory查找类型和当前属性类型匹配的Bean,然后注入进来
@Autowired
private WebApplicationContext wac; // 注入WebApplicationContext
@Autowired
private MockHttpSession session; // 注入模拟的http session
@Autowired
private MockHttpServletRequest request; // 模拟request
@Before // 测试开始前的初始化工作
public void setup() {
mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}
@Test
public void testGet() throws Exception {
mockMvc.perform(get("/hello/world")) // 8 模拟GET /hello/world
.andExpect(status().isOk())// 9 预期返回状态为200
.andExpect(view().name("success"))// 10 预期view的名称
.andExpect(forwardedUrl("/WEB-INF/views/success.jsp"));// 11 预期页面转向的真正路径
// .andExpect(model().attribute("msg", "exp_str"));// 12 预期model里的值
}
@Test
public void testPost() throws Exception {
MultiValueMap params = new LinkedMultiValueMap();
params.add("uname", "张三");
params.add("pwd", "123");
mockMvc.perform(post("/hello/login").params(params))
.andExpect(status().isOk())
.andExpect(view().name("success"))
// .andExpect(forwardedUrl("/WEB-INF/jsp/succ.jsp"))
// .andExpect(model().attribute("name", "创建"))
.andDo(print());// 打印请求和响应的详细信息
}
}
```
> 普通的Java类,如Mapper测试
```java
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MapperTest {
//获得spring容器
static ApplicationContext context = new ClassPathXmlApplicationContext("spring/spring-mybatis.xml");
@Test
public void testMapper1() {
System.out.println("测试Mapper");
}
}
```
# 6. 将空项目提交到码云(gitee)
项目结构
> com.zenq.ssm.entity --> 放置实体类 User.java
>
> com.zenq.ssm.mapper --> 放置Mapper映射器 UserMapper.java
>
> com.zenq.ssm.service --> 业务逻辑代码编写 UserService.java
>
> com.zenq.ssm.utils --> 通用常用工具类 CommonUtils.java
>
> com.zenq.ssm.web.ctrl --> MVC控制器类 UserController.java
