# 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 ![image-20200716093404811](img/image-20200716093404811.png) 2. 将所有JSP文件的编码方式,改成UTF-8 ![image-20200716093638570](img/image-20200716093638570.png) 3. 禁用Eclipse的Validation验证功能 ![image-20200716093814063](img/image-20200716093814063.png) # 0. Eclipse中修改Maven类型的JavaWeb项目,生成web.xml > (1)创建Maven项目,选择war类型 > > (2)修改项目配置信息,生成web.xml > > ![image-20200716094425294](img/image-20200716094425294.png) # 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 ![image-20200716145626529](img/image-20200716145626529.png)