发表于: 2017-09-04 23:41:04
1 1819
一、今日完成
1.新建REST接口的SSM框架项目:
2.在src\main\java\com.jnshu\mapper目录下创建PersonMapper.java
@Component
public interface PersonMapper {
void insertOne(Person one);
void updateOne(Person one);
Person selectOne(long id);
void deleteOne (long id);
List<Person> selectAll();
}
3.在src\main\resource\mapping下创建PersonMapper.xml,针对Mapper类中定义的抽象方法,通过<insert> <update>等元素声明分别映射相应的SQL语句;
4.在src\main\java\com.jnshu\service目录下创建PersonService接口和它的实现类
public interface PersonService {
void insertOne(Person one);
void updateOne(Person one);
Person selectOne(long id);
void deleteOne(long id);
List<Person> showAll();
}
4.在src\main\java\com.jnshu\controller使用注解配置controller,将web请求映射到
这些处理方法上
@Controller
@RequestMapping("/rest")
public class PersonController {
private static final Log logger = LogFactory.getLog(PersonController.class);
@Autowired
private PersonService oneService;
@RequestMapping(value = "/insertARow",method = RequestMethod.POST)
public void insertARow(Person sb){
oneService.insertOne(sb);
}
@RequestMapping(value = "/updateARow", method = RequestMethod.PUT)
public void updateARow(Person sb){
oneService.updateOne(sb);
}
@RequestMapping(value ="/selectARow",method = RequestMethod.GET )
public Person selectARow(long id){
return oneService.selectOne(id);
}
@RequestMapping(value = "/deleteARow", method = RequestMethod.DELETE)
public void deleteARow (long id){
oneService.deleteOne(id);
}
@RequestMapping(value = "/showRows", method = RequestMethod.GET)
public String shoeAll(Model model){
List<Person> alll_list = oneService.showAll();
model.addAttribute("all_list", alll_list);
return "showRows";
}
}
5.src\main\resource目录下依次创建 jdbc.properties 、springmvc-config.xml、 spring-mybatis-config.xml等XML配置文件
driverClasss=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/task01?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
username=root
password=20110814Gl
#定义初始连接数
initialSize=0
#定义最大连接数
maxActive=20
#定义最大空闲
maxIdle=20
#定义最小空闲
minIdle=1
#定义最长等待时间
maxWait=60000
<!-- 自动扫描 @Controller-->
<context:component-scan base-package="com.jnshu"/>
<!--避免IE执行AJAX时,返回JSON出现下载文件 -->
<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="mappingJacksonHttpMessageConverter"/> <!-- JSON转换器 -->
</list>
</property>
</bean>
<!-- 定义跳转的文件的前后缀 ,视图模式配置 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp"/>
</bean>
<!-- 文件上传配置 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 默认编码 -->
<property name="defaultEncoding" value="UTF-8"/>
<!-- 上传文件大小限制为31M,31*1024*1024 -->
<property name="maxUploadSize" value="32505856"/>
<!-- 内存中的最大值 -->
<property name="maxInMemorySize" value="4096"/>
</bean>
</beans>
<!-- 自动扫描 -->
<context:component-scan base-package="com.jnshu"/>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties"/>
</bean>
<!--配置数据源-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driverClasss}"/>
<property name="url" value="${jdbcUrl}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
<!-- 初始化连接大小 -->
<property name="initialSize" value="${initialSize}"></property>
<!-- 连接池最大数量 -->
<property name="maxActive" value="${maxActive}"></property>
<!-- 连接池最大空闲 -->
<property name="maxIdle" value="${maxIdle}"></property>
<!-- 连接池最小空闲 -->
<property name="minIdle" value="${minIdle}"></property>
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="${maxWait}"></property>
</bean>
<!-- mybatis和spring完美整合,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- 自动扫描mapping.xml文件 -->
<property name="mapperLocations" value="classpath:mapping/*.xml"></property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.jnshu.mapper"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
6.src\main\webapp\WEB-INF目录下创建web.xml文件
<display-name>Archetype Created Web Application</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mybatis-config.xml</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<!-- 编码过滤器 -->
<filter>
<filter-name>encodingFilter</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>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- spring监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 防止spring内存溢出监听器,比如quartz -->
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<!-- spring mvc servlet-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- 此处也可以配置成 *.do 形式 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
<!-- session配置 -->
<session-config>
<session-timeout>15</session-timeout>
</session-config>
</web-app>
6.src\main\webapp\WEB-INF\content目录下创建实现插入一条记录的jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=0.8">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>SpringMVC 添加用户</title>
<!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css">
<!--[if lt IE 9]>
<script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="from-group">
<h1 style="text-align: center">添加记录</h1>
<hr/>
<form:form action="/rest/insertARow" method="post" commandName="sb" reole="form">
<div class="form-group">
<label for="name">姓名:</label>
<input type="text" class="form-control" id="name" name="name" placeholder="输入姓名"/>
</div>
<div class="form-group">
<label for="gender">性别:</label>
<input type="text" class="form-control" id="gender" name="gender" placeholder="输入性别"/>
</div>
<div class="form-group">
<label for="birth_date">出生日期:</label>
<input type="text" class="form-control" id="birth_date" name="birth_date" placeholder="输入出生日期"/>
</div><div class="form-group">
<label for="country">国籍:</label>
<input type="text" class="form-control" id="country" name="country" placeholder="输入国籍"/>
</div>
<div class="form-group">
<button type="submit" class="btn btn-sm btn-success">提交</button>
</div>
</form:form>
</div>
<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>
</html>
7.然后,执行mvn clean install命令生成war,把本项目部署到Tomcat,报错
Error creating bean with name 'personMapper' defined in file [D:\Program Files\Apache Software Foundation\apache-tomcat-9.0.0.M26\webapps\ROOT\WEB-INF\classes\com\jnshu\mapper\PersonMapper.class]: Cannot resolve reference to bean 'sqlSessionFactory' while setting bean property 'sqlSessionFactory';
一直核对代码,始终没找出问题
二、明日计划
解决BUG,把代码跑通,提交任务2.
三、遇到的问题
在IDEA中新建maven web项目,包路径不宜超过两级,例如写成com.jnshu.task格式,IDEA会不断提示无法识别这个包路径;改写成com.jnshu即可。
评论