精通Spring 4.x企业应用开发实战(第二章 Spring快速入门)——读书笔记

本文是《精通Spring 4.x企业应用开发实战》第二章的读书笔记,涵盖Spring环境准备,包括Mysql数据库和Maven的使用。详细介绍了项目快速搭建的步骤,如实体类创建、Dao层、Service层的配置,以及Spring MVC框架的配置和单元测试。此外,还讨论了Spring事务配置中的`proxy-target-class`属性和常见错误处理。
摘要由CSDN通过智能技术生成

 

根据个人学习情况,筛选出特别关注的信息,完整内容请看原版,仅仅是个人学习笔记。

目录

目录

 

一、环境准备

1.数据库

2.构建工具Maven

二、项目快速搭建

2-1 根据数据库表结构,在domain创建实体类

2-2 pom.xml文件配置

2-3 创建数据处理的Dao层

2-4 创建业务层Service

2-5 [重点] 在Spring中装配DAO层、Service业务层(使注解的类自动转化为Bean,同时完成注入)

2-6 单元测试

2-7 前端展示层页面

2-8 配置Spring MVC框架

2-9 添加控制层

2-10 Spring MVC配置文件

2-11 使用jetty运行web运用,当然也可以在IDE工具中配置Web应用服务器,比如tomcat

三、重点回顾

3-1、proxy-target-class="true/false"事务配置说明

四、报错回顾

3-1 java.lang.NoSuchMethodError: org.springframework.core.io.ResourceEditor错误

3-2 idea解决maven的依赖包版本不一致的问题


一、环境准备

1.数据库

建议采用Mysql5.X数据库

MySQL 4.1.0以前的版本不支持事务,4.1.0本身也只对事务提供有限的支持。Spring的各种声明式事务需要底层数据库的支持。

MySQL5.0增加存储过程、视图、游标、触发器、XA事务。

MySQL5.1增加事件调度器、分区、可插拔的存储引擎API、行复制、全局动态查询日志修改。

MySQL5.5默认存储引擎更改为InnoDB,提高了默认线程并发数,后台输入/输出线程控制,主线程输入/输出速率控制,操作系统内存分配程序使用控制,适应性散列索引控制,恢复组提交,多缓冲池实例,半同步复制,中继日志自动恢复,建立快速索引,高效的数据压缩等特性。

MySQL5.6中InnoDB性能加强,InnoDB死锁信息可以记录到错误日志,支持主从延时复制,增强行级复制功能,基于CRC32校验的复制事件等。

-------------示例用到的数据库表创建语法---------------

create database sampled DEFAULT CHARACTER SET utf8;

/* 创建用户信息表 */

create table t_user (

            user_id INT AUTO_INCREAMENT PRIMARY KEY,

            user_name VARCHAR(30),

            credits INT,

            password VARCHAR(30),

            last_vist datetime,

            last_ip varchar(30)

)ENGINE=InnoDB;

/* 创建用户登录日志表 */

create table t_login_log (

            login_login_id INT AUTO_INCREAMENT PRIMARY KEY,

            user_id INT,

            ip VARCHAR(30),

            login_datetime datetime

)ENGINE=InnoDB;

 

2.构建工具Maven

Repository:即放置Artifact的地方,有中央仓库、公共仓库、私有仓库及本地仓库之分。一般情况下,公司或开发者组织都需要部署一个私有仓库,可使用Nexus(http://www.sonatype.org/nexus)创建Maven私有仓库。

3.建立工程(IntelliJ IDEA)

设置源文件和配置文件都使用UTF-8编码格式

File—Settings—File Encodings—UTF-8

分别设置IDE Encoding、Project Encoding、 Default encoding for properties files

二、项目快速搭建

该示例只是简单实现用户登录的验证,成功则跳转至main页面,失败则重定向到loginCheck页面提示错误信息。主要讲解怎么搭建一个简单的Spring 项目

首先,看下项目结构的目录

2-1 根据数据库表结构,在domain创建实体类

直接贴代码,这边可以看到都实现了Serializable接口,以便可以序列化

public class LoginLog implements Serializable {
    private int loginLogId;
    private int userId;
    private String ip;
    private Date loginDate;

    省略get和set....
}
public class User implements Serializable {
    private int userId;
    private String userName;
    private String password;
    private int credits;
    private String lastIp;
    private Date lastVisit; 

    省略get和set.... 
}

2-2 pom.xml文件配置

各个配置内容已有注释描述,这里不再一一说明

2-3 创建数据处理的Dao层

package com.javahx.dao;

import com.javahx.domain.User;
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 java.sql.ResultSet;
import java.sql.SQLException;

@Repository
public class UserDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    private  final static String MATCH_COUNT_SQL = " SELECT count(*) FROM t_user  " +
            " WHERE user_name =? and password=? ";
    private  final static String UPDATE_LOGIN_INFO_SQL = " UPDATE t_user SET " +
            " last_visit=?,last_ip=?,credits=?  WHERE user_id =?";

    /**
     * 根据用户输入信息查询用户是否存在
     * @param userName 用户名
     * @param password 密码
     * @return
     */
    public int getMatchCount(String userName, String password) {
        return jdbcTemplate.queryForObject(MATCH_COUNT_SQL, new Object[]{userName, password}, Integer.class );
    }

    public User findUserByUserName(final String userName) {
        final User user = new User();
        String sqlStr = " SELECT user_id,user_name,credits "
                + " FROM t_user WHERE user_name =? ";
        jdbcTemplate.query(sqlStr, new Object[]{userName},
                //匿名类方式实现的回调函数
                //processRow(ResultSet resultSet)负责将查询的结果从ResultSet装载到类似于领域对象的对象实例中
                new RowCallbackHandler() {
                    @Override
                    public voi
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值