上一篇只是一个简单的Spring MVC框架,接下来添加一些跟数据库的交互。

一、添加jdbc相关配置
 
在maven中添加相关依赖后,配置数据库访问参数及数据源。数据库参数使用配置文件,代码如下:
jdbc.properties
 jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/sampledb
jdbc.username=root
jdbc.password=123456
jdbc.initialSize=5
jdbc.maxActive=10
jdbc.minIdle=5
jdbc.maxIdle=10
jdbc.timeBetweenEvictionRunsMillis=3600000
jdbc.minEvictableIdleTimeMillis=3600000
jdbc.testOnBorrow=true
jdbc.validationQuery=SELECT 1 FROM DUAL
在app-servlet.xml中添加数据源配置和jdbcTemplate配置:
<bean id="jdbcConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:jdbc.properties</value>
</property>
</bean>
<bean id="databasesource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="maxActive" value="${jdbc.maxActive}"/>
<property name="initialSize" value="${jdbc.initialSize}"/>
<property name="maxIdle" value="${jdbc.maxIdle}"/>
<property name="minIdle" value="${jdbc.minIdle}"/>
<property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}"/>
<property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}"/>
<property name="testOnBorrow" value="${jdbc.testOnBorrow}"/>
<property name="validationQuery" value="${jdbc.validationQuery}"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="databasesource"/>
</bean>
二、实现一个使用用户名为super,密码为123456的用户登录过程
2.1 添加User实体类
User.java代码如下:
 public class User {
private Long id;
private String username;
private String email;
private String password;
private Long credit;
private Date lastVisitTime;
private String lastVisitIp;
//setter、getter
}
2.2 实现对数据库的访问操作
新建UserDao.java,在UserDao类上添加@Repository注解
首先在该类中装配JdbcTemplate,使用@Autowired注解
@Autowired
private JdbcTemplate jdbcTemplate;
然后在里面添加一个根据用户名和密码查询用户的方法:
 public User findUser(final String username, final String password) {
String sql = "select id,user_name, credit from t_user_info where user_name = ? and password = ?";
User user = null;
try {
RowMapper<User> rm = ParameterizedBeanPropertyRowMapper.newInstance(User.class);
user = (User) jdbcTemplate.queryForObject(sql, new Object[]{username, password}, rm);
}catch (Exception e){
e.printStackTrace();
}
return user;
}
2.3 添加UserService.java类,代码如下:
 @Service("userService")
public class UserService {
@Autowired
UserDao userDao;
public User findUser(String username,String password){
return userDao.findUser(username,password);
} public int findUserCount(String username,String password){
return userDao.findUserCount(username,password);
} public boolean insertUser(User user){
return userDao.insertUser(user);
}
}
2.4 修改UserController.java的userIndex方法:
 @RequestMapping(value = "/index.html", method = RequestMethod.POST)
public ModelAndView userIndex(String username, String password) {
if (StringUtil.isEmpty(username) || StringUtil.isEmpty(password)) {
logger.error("用户名或密码为空");
ModelAndView modelAndView = new ModelAndView("/index");
modelAndView.addObject("error", "用户名或密码为空!");
return modelAndView;
} // int count = userService.findUserCount(username,password);
User user = userService.findUser(username, password);
if (user == null) {
logger.info("用户名或密码错误");
ModelAndView modelAndView = new ModelAndView("/index");
modelAndView.addObject("username", username);
modelAndView.addObject("error", "用户:" + username + "不存在或用户密码错误!");
return modelAndView;
}
ModelAndView mav = new ModelAndView("success");
mav.addObject("username", username);
mav.addObject("password", password);
logger.info("username : " + username + ", password : " + password);
return mav;
}
这样就实现了登录的简单流程。

Spring MVC篇二、使用JdbcTemplate进行数据库操作的更多相关文章

  1. Spring MVC 项目搭建 -5- spring security 使用数据库进行验证

    Spring MVC 项目搭建 -5- spring security 使用数据库进行验证 1.创建数据表格(这里使用的是mysql) CREATE TABLE security_role ( id ...

  2. Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  3. Java框架之Spring MVC(二)

    一.Spring MVC 验证 JSR 303 是ajvaEE6 中的一项子规范 ,叫 Bean Validation 用于对javaBean中的字段进行校验. 官方的参考实现是: Hibernate ...

  4. Spring MVC篇一、搭建Spring MVC框架

    本项目旨在搭建一个简单的Spring MVC框架,了解Spring MVC的基础配置等内容. 一.项目结构 本项目使用idea intellij创建,配合maven管理.整体的目录结构如图: 其中ja ...

  5. Spring MVC(二)

    spring mvc工作流 1A)客户端发出http请求,只要请求形式符合web.xml 文件中配置的*.action的话,就由DispatcherServlet 来处理. 1B)Dispatcher ...

  6. dotNet程序员的Java爬坑之旅(三)之spring MVC篇一

    使用maven構建springMVC項目,開發工具為IDEA 一.構建Maven項目,模板為WebApp 二.在pom文件中配置SpringMvc配置(springMvc需要以來servlet ,如本 ...

  7. Java面试题(设计模式篇+Spring/Spring MVC篇)

    设计模式 88.说一下你熟悉的设计模式? 自行熟悉. 89.简单工厂和抽象工厂有什么区别? 简单理解简单工厂:对 一个对象的创建进行封装.抽象工厂:对 一组对象的创建进行封装. 比如生产 陶瓷马 和  ...

  8. Spring Mvc 笔记二之异常和文件上传

    spring mvc的异常与文件上传 1.异常: spring注解版的异常有局部异常和全局异常                1.局部异常对单个controller有效;(在controller类写一 ...

  9. 乐视开放平台技术架构-servlet和spring mvc篇

    在乐视风口浪尖的时候,敢于站出来说我是乐视的而不怕被打脸的,也就是我了.就算我以后不在乐视了,提起来在乐视工作过,我也还是挺骄傲的.因为这是一个有理想,敢拼敢干的公司.想起复仇者联盟里Fury指挥官的 ...

随机推荐

  1. Python 开源网上商城项目

    django-oscar  https://github.com/django-oscar/django-oscar#screenshots django-shop  https://github.c ...

  2. linux c system返回值问题总结

    先看例子 #include <stdio.h> #include <stdlib.h> #include <sys/wait.h> #include <sys ...

  3. 求两个数字的最大公约数-Python实现,三种方法效率比较,包含质数打印质数的方法

    今天面试,遇到面试官询求最大公约数.小学就学过的奥数题,居然忘了!只好回答分解质因数再求解! 回来果断复习下,常用方法辗转相除法和更相减损法,小学奥数都学过,很简单,就不细说了,忘了的话可以百度:ht ...

  4. java关键字extends(继承)、Supe(父类引用空间)、 This(方法调用者对象)、Instanceof(实例类型-判断对象是否属于某个类)、final(最终)、abstract(抽象) 、interface(接口)0

    java 继承使用关键字extends   继承的作用:减少代码量,优化代码 继承的使用注意点: 1子类不能继承父类的私有变量 2.子类不能继承父类的构造方法 3.子类在调用自己的构造方法时 会默认调 ...

  5. C++根据图片url下载图片

    需要使用到URLDownloadToFile()函数,该函数在头文件<urlmon.h>中声明. URLDownloadToFile()函数的定义如下: HRESULT URLDownlo ...

  6. html表单提交方式

    xml 表单提交方式: * 使用submit提交 <form> 要提交的数据 <input type="submit" /'> </form> ...

  7. 病毒四度升级:安天AVL Team揭露一例跨期两年的电信诈骗进化史

    自2014年9月起,安天AVL移动安全团队持续检测到一类基于Android移动平台的间谍类病毒,病毒样本大多伪装成名为"最高人民检察院"的应用.经过反编译逆向分析以及长期的跟踪调查 ...

  8. ppmoney

    build/config.js 改 8080端口 build/webpack.dev.conf.js 改路径简写 alias:{ 'vux-components':'vux/dist/componen ...

  9. Oracle获取干净的建表DDL语句,不含其它存储、表空间、段属性

    早上一个同事资讯怎么获取到建表语句而且是不带存储那种SQL.Oracle自己提供了一个函数DBMS_METADATA.GET_DDL,但是获取到的建表语句含有存储.表空间.以及一些其他段的属性.如图: ...

  10. svn: how to set the executable bit on a file?

    http://stackoverflow.com/questions/17846551/svn-how-to-set-the-executable-bit-on-a-file svn uses pro ...