springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试

包结构

所需要的jar包直接拷贝到lib目录下

然后选定 build path
之后开始写项目代码
配置文件
ApplicationContext.xml
<?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:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"> <!--扫描类包,标注spring注解的类自动转换成bean,同时完成bean的注入 (这样类中定义的spring注解 比如@repository @autowired等才能起作用) --> <context:component-scan base-package="com.bbs.dao" /> <!--扫描service包,应用spring注解配置 --> <context:component-scan base-package="com.bbs.service" /> <!--配置事务管理器 --> <bean id= "transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" p:dataSource-ref="dataSource" /> <!-- 通过AOP配置提供事务增强,让service包下所有的bean的所有方法拥有事务 --> <aop:config proxy-target-class="true"> <aop:pointcut id="serviceMethod" expression="execution(* com.bbs.service..*(..))" /> <aop:advisor pointcut-ref="serviceMethod" advice-ref="txAdvice"/> </aop:config> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="*" /> </tx:attributes> </tx:advice> <!-- 定义一个使用DBCP实现的数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close" p:driverClassName="com.mysql.jdbc.Driver" p:url="jdbc:mysql://localhost:3306/sampledb" p:username="root" p:password="123456"/> <!--定义jdbc模板bean --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" p:dataSource-ref="dataSource"/> </beans>
两个实体
User.java
package com.bbs.domain;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private int userId;
private String userName;
private String password;
private int credits;
private String lastIp;
private Date lastVisit;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getCredits() {
return credits;
}
public void setCredits(int credits) {
this.credits = credits;
}
public String getLastIp() {
return lastIp;
}
public void setLastIp(String lastIp) {
this.lastIp = lastIp;
}
public Date getLastVisit() {
return lastVisit;
}
public void setLastVisit(Date lastVisit) {
this.lastVisit = lastVisit;
}
}
LoginLog.java
package com.bbs.domain;
import java.io.Serializable;
import java.util.Date;
public class LoginLog implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private int loginLogId;
private int userId;
private String ip;
private Date loginDate;
public int getLoginLogId() {
return loginLogId;
}
public void setLoginLogId(int loginLogId) {
this.loginLogId = loginLogId;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public Date getLoginDate() {
return loginDate;
}
public void setLoginDate(Date loginDate) {
this.loginDate = loginDate;
}
}
两个dao(用的jdbcTemplate)
LoginLogDao.java
package com.bbs.dao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import com.bbs.domain.LoginLog;
@Repository
public class LoginLogDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public void insertLoginLog(LoginLog loginLog){
String sqlString ="INSERT INTO t_login_log(user_id,ip,login_datetime)"
+"VALUE(?,?,?)";
Object[] args={loginLog.getUserId(),loginLog.getIp(),loginLog.getLoginDate()};
jdbcTemplate.update(sqlString, args);
}
}
UserDao.java
package com.bbs.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.omg.CORBA.PUBLIC_MEMBER;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;
import org.springframework.stereotype.Repository;
import com.bbs.domain.User;
@Repository
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public int getMatchCount(String userName,String password){
String sqlString="SELECT count(*) FROM t_user "
+"WHERE user_name=? and password=?";
return jdbcTemplate.queryForObject(sqlString,new Object[]{ userName,password}, java.lang.Integer.class);
}
public User findUserByUserName(final String userName){
String sqlString ="SELECT user_id,user_name,credits "
+"FROM t_user WHERE user_name=?";
final User user = new User();
jdbcTemplate.query(sqlString, new Object[]{userName},
new RowCallbackHandler() {
@Override
public void processRow(ResultSet rs) throws SQLException {
// TODO Auto-generated method stub
user.setUserId(rs.getInt("user_id"));
user.setUserName(userName);
user.setCredits(rs.getInt("credits"));
}
});
return user;
}
public void updateLoginInfo(User user){
String sqlString="UPDATE t_user SET last_visit=?,last_ip=?,credits=?"
+"WHERE user_id=?";
jdbcTemplate.update(sqlString,new Object[]{user.getLastVisit(),user.getLastIp(),user.getCredits(),user.getUserId()});
}
}
还有一个service
UserService.java
package com.bbs.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.bbs.dao.LoginLogDao;
import com.bbs.dao.UserDao;
import com.bbs.domain.LoginLog;
import com.bbs.domain.User;
@Service
public class UserService {
@Autowired
private UserDao userDao;
@Autowired
private LoginLogDao loginLogDao;
public boolean hasMatchUser(String userName,String password){
int matchCount = userDao.getMatchCount(userName, password);
return matchCount > 0 ;
}
public User findUserByUserName(String userName){
return userDao.findUserByUserName(userName);
}
public void loginSucess(User user){
user.setCredits(5+user.getCredits());
LoginLog loginLog = new LoginLog();
loginLog.setUserId(user.getUserId());
loginLog.setIp(user.getLastIp());
loginLog.setLoginDate(user.getLastVisit());
userDao.updateLoginInfo(user);
loginLogDao.insertLoginLog(loginLog);
}
}
至此后台代码完毕
增加一个测试函数
TestUserService.java
package test.bbs.service;
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.bbs.domain.User;
import com.bbs.service.UserService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/applicationContext.xml"})
public class TestUserService {
@Autowired
private UserService userService;
@Test
public void hasMAtchUser(){
boolean b1 = userService.hasMatchUser("admin", "123456");
boolean b2 = userService.hasMatchUser("admin", "11111");
assertTrue(b1);
//assertTrue(b2);
}
@Test
public void findUserByUserName(){
User user = userService.findUserByUserName("admin");
assertEquals(user.getUserName(),"admin");
}
}
运行测试,run as JUnit test
测试成功
spring原理 实践解析-简单的helloworld
spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包
spring原理案例-基本项目搭建 02 spring jar包详解 spring jar包的用途
spring原理案例-基本项目搭建 03 创建工程运行测试 spring ioc原理实例示例
springmvc整合mybatis完整项目示例
springmvc 项目完整示例01 需求与数据库表设计 简单的springmvc应用实例 web项目
springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试
springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用
springmvc 项目完整示例05 日志 --log4j整合 配置 log4j属性设置 log4j 配置文件 log4j应用
springmvc 项目完整示例06 日志–log4j 参数详细解析 log4j如何配置
springmvc 项目完整示例07 设置配置整合springmvc springmvc所需jar包springmvc web.xml文件配置
springmvc 项目完整示例08 前台页面以及知识点总结
maven项目整合springmvc整合mybatis
eclipse 创建maven 项目 动态web工程完整示例
eclipse 创建maven 项目 动态web工程完整示例 maven 整合springmvc整合
springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试的更多相关文章
- Eclipse署动态web项目方法
和MyEclipse不一样,在Eclipse中做的Web项目默认是不支持将项目发布到Web服务器上的,会发布到工作空间的某个目录,因此无法在外部启动Tomcat来运行Web项目,只有打开Eclipse ...
- eclipse 配置动态web项目在servers中运行
第一步: window->preferences:Server->Runtime Environments窗口,add. 第二步: window->preferences:Proje ...
- springmvc 项目完整示例06 日志–log4j 参数详细解析 log4j如何配置
Log4j由三个重要的组件构成: 日志信息的优先级 日志信息的输出目的地 日志信息的输出格式 日志信息的优先级从高到低有ERROR.WARN. INFO.DEBUG,分别用来指定这条日志信息的重要程度 ...
- springmvc 项目完整示例01 需求与数据库表设计 简单的springmvc应用实例 web项目
一个简单的用户登录系统 用户有账号密码,登录ip,登录时间 打开登录页面,输入用户名密码 登录日志,可以记录登陆的时间,登陆的ip 成功登陆了的话,就更新用户的最后登入时间和ip,同时记录一条登录记录 ...
- springmvc 项目完整示例03 小结
利用spring 创建一个web项目 大致原理 利用spring的ioc 原理,例子中也就是体现在了配置文件中 设置了自动扫描注解 配置了数据库信息等 一般一个项目,主要有domain,dao,ser ...
- springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用
百度百科: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBat ...
- springmvc 项目完整示例05 日志 --log4j整合 配置 log4j属性设置 log4j 配置文件 log4j应用
log4j 就是log for java嘛,老外都喜欢这样子,比如那个I18n ---internationalization 不就是i和n之间有18个字母... http://logging.a ...
- springmvc 项目完整示例07 设置配置整合springmvc springmvc所需jar包springmvc web.xml文件配置
前面主要是后台代码,spring以及mybatis的整合 下面主要是springmvc用来处理请求转发,展现层的处理 之前所有做到的,完成了后台,业务层和持久层的开发完成了 接下来就是展现层了 有很多 ...
- springmvc 项目完整示例08 前台页面以及知识点总结
至此已经基本测试成功了,我们稍作完善,让它成为一个更加完整的项目 我们现在重新规划下逻辑 两个页面 一个登录页面 一个欢迎页面 登陆页面输入账号密码,登陆成功的话,跳转登陆成功 欢迎页面 并且,更新用 ...
随机推荐
- noi2018还没想好记
前面说点什么.. 没想到吧 嘴上说着不写的彩笔博主最后还是写了这篇东西.. Day -inf 在雅礼集训,打了四场模拟赛.. 真正说打得好的.. 也就那么一场 身体很差 心态很差 状态很差 虽然有书读 ...
- git 实际操作
1.把文件添加到版本库中. 所有的版本控制系统只能跟踪文本文件的改动 下面先看下demo如下演示: 我在版本库gittest目录下新建一个记事本文件 1.txt 内容如下:1111111 第一步:使用 ...
- S7 Connection 通讯
参考两个链接: http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=74626&cid=1029 https://su ...
- windows服务定时任务
其实定时任务时不时会碰到,只不过解决方案也不是只有一个,网上也有很多文章,但是没有一篇说得很清楚,尤其是安装环节,今天就着重说一下安装, 其他步骤带过,C#开发windows服务,开发,安装,调试 1 ...
- ajax源代码
//**********第一步, 获得一个xhr对象************* var xmlHttpReq = null; //声明一个空对象用来装入XMLHttpRequest if (windo ...
- nginx连接数优化
一.一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计 ...
- MapReduce的工作原理
MapReduce简介 MapReduce是一种并行可扩展计算模型,并且有较好的容错性,主要解决海量离线数据的批处理.实现下面目标 ★ 易于编程 ★ 良好的扩展性 ★ 高容错性 MapReduce ...
- Centos 搭建邮箱系统
总结 我实操的过程,2个邮箱都没有界面,都只是邮件系统.可能还需要再部署其他东西,暂止. sendmail 比较简单,主要是发邮件,使用 stmp.还需要解决收邮件的问题和管理界面的问题. postf ...
- Pyinstaller (python打包为exe文件)
需求分析: python脚本如果在没有安装python的机器上不能运行,所以将脚本打包成exe文件,降低脚本对环境的依赖性,同时运行更加迅速. 当然打包的脚本似乎不是在所有的win平台下都能使用,wi ...
- js 压缩
听到同事说没找到压缩js文件的,说软件压缩貌似有点问题,我自己就用nodejs练手般写了压缩文件的. 主要的思路就是,先通过前端上传js文件,然后服务器接收,然后引用uglifyjs 压缩,再返回文件 ...