上一篇只是一个简单的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. WPF DataGrid 性能加载大数据

    WPF(Windows Presentation Foundation)应用程序在没有图形加速设备的机器上运行速度很慢是个公开的秘密,给用户的感觉是它太吃资源了,WPF程序的性能和硬件确实有很大的关系 ...

  2. Angular2 组件通信

    1. 组件通信 我们知道Angular2应用程序实际上是有很多父子组价组成的组件树,因此,了解组件之间如何通信,特别是父子组件之间,对编写Angular2应用程序具有十分重要的意义,通常来讲,组件之间 ...

  3. web端小知识点--持续更新

    1.弹性滚动overflow:auto; -webkit-overflow-scrolling: touch; -mo-overflow-scrolling: touch; overflow-scro ...

  4. [转]VS2012 快捷键

    Ctrl+E,D ----格式化全部代码       Ctrl+A+K+F Ctrl+E,F ----格式化选中的代码     Ctrl+K+F CTRL + SHIFT + B生成解决方案   Al ...

  5. (转载)org.springframework.web.context.ContextLoaderListener

    http://www.yihaomen.com/article/java/471.htm 刚才手贱乱点了下,然后好像jar包不见了还是什么的,出现了这个错误,按照帖子说的,手动添加maven进去就好了

  6. Arcgis与CityEngine安装破解

    Arcgis与CityEngine共存,实现同时破解 作为一个GIS背景的技术人员,以前安装了无数次的Arcgis DeskTop,到了新公司后,今天主管让我学习下CityEngine,学渣的我之前没 ...

  7. 用.net 发送邮件

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...

  8. C#中的隐式类型var——详细示例解析

    从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型var.隐式类型可以替代任何类型,它的具体类型由编译器根据上下文推断而出. 下面就让我来总结下隐式类型的一些特点: 1.va ...

  9. Pugixml一种快速解析XML文件的开源解析库

    Pugixml是一个轻量级的C++ XML开源解析库,DOM形式的解析器.接口和丰富的遍历和修改操作,快速的解析,此外支持XPath1.0实现数据查询,支持unicode编码: 使用Pugixml可通 ...

  10. Laravel5路由/home页面无法访问

    报错信息: Not Found The requested URL /laravel5/public/home was not found on this server. 解决方法: 1.编辑apac ...