新建web工程spring-netcross
1.导入spring文件夹里的七个jar包,另外还要导入jdbc-lib的四个jar包,ojdbc.jar,commoms-pool,commons-dbcp-1.2.1.jar,commons-collections4-4.0.jar

2.复制springmvc02下的spring-mvc.xml文件,新建com.tarena.oss包

3.com.tarena.oss包下新建entity包,新建Admin这个实体类,属性get/set方法,以及toString方法(方便测试输出)

package com.tarena.oss.entity;

import java.io.Serializable;
import java.sql.Timestamp;

public class Admin implements Serializable{
private Integer adminId;
private String adminCode;
private String password;
private String name;
private String telephone;
private String email;
private Timestamp enrolldate;
public Integer getAdminId() {
return adminId;
}
public void setAdminId(Integer adminId) {
this.adminId = adminId;
}
public String getAdminCode() {
return adminCode;
}
public void setAdminCode(String adminCode) {
this.adminCode = adminCode;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Timestamp getEnrolldate() {
return enrolldate;
}
public void setEnrolldate(Timestamp enrolldate) {
this.enrolldate = enrolldate;
}
@Override
public String toString() {
return "Admin [adminId=" + adminId + ", adminCode=" + adminCode
+ ", password=" + password + ", name=" + name + ", telephone="
+ telephone + ", email=" + email + ", enrolldate=" + enrolldate
+ "]";
}

}

4.com.tarena.oss包下新建dao包,新建AdminDAO接口,添加findByAdminCode方法,再新建dao包下的jdbc包,新建AdminDAOImpl实现接口

AdminDAO接口:

package com.tarena.oss.dao;

import com.tarena.oss.entity.Admin;

public interface AdminDAO {
public Admin findByAdminCode(String adminCode);
}

AdminDAOImpl实现接口:

package com.tarena.oss.dao.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.annotation.Resource;
import javax.sql.DataSource;

import org.springframework.stereotype.Repository;

import com.tarena.oss.dao.AdminDAO;
import com.tarena.oss.entity.Admin;

@Repository("adminDAO")
public class AdminDAOImpl implements AdminDAO{

/*数据源与连接池的关系
*
* 数据源负责管理连接池*/

@Resource(name="ds")
private DataSource ds;

public Admin findByAdminCode(String adminCode) {
if(adminCode==null){
return null;
}
Connection conn = null;
try {
conn = ds.getConnection();
String sql = "select * from admin_info_lch where admin_code=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, adminCode);
ResultSet rs = ps.executeQuery();

if(rs.next()){
Admin admin = new Admin();
admin.setAdminId(rs.getInt("admin_id"));
admin.setAdminCode(rs.getString("admin_code"));
admin.setPassword(rs.getString("password"));
admin.setName(rs.getString("name"));
admin.setTelephone(rs.getString("telephone"));
admin.setEmail(rs.getString("email"));
admin.setEnrolldate(rs.getTimestamp("enrolldate"));

return admin;
}
} catch (Exception e) {

e.printStackTrace();
throw new RuntimeException("根据编码查询管理员失败");
}finally{
try {
conn.close();
} catch (SQLException e) {

e.printStackTrace();
}
}
return null;
}

}

5.复制netctoss项目下的db.properties文件,到该项目下的src下

driver=oracle.jdbc.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:xe
user=system
pwd=1234

6.修改spring-mvc.xml文件,使用集合的方式读取db.properties文件的内容

<!-- 配置组件扫描 -->
<context:component-scan base-package="com.tarena.oss" />

<!-- 配置spring mvc注解扫描 -->
<mvc:annotation-driven/>

<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
</bean>

<!-- 读取db.properties文件的内容 -->
<util:properties id="jdbc" location="classpath:db.properties">
</util:properties>

7.新建test包,新建测试类test1用于测试读取db.properties文件的内容是否成功。

@Test //测试db.properties文件是否正确读取
public void test1(){
ApplicationContext ac =
new ClassPathXmlApplicationContext("spring-mvc.xml");
System.out.println(ac.getBean("jdbc"));
}

8.在AdminDAOImpl添加成员变量数据源DadaSource ds,并且使用@Resource(name="ds")注入该属性。同时,在AdminDAOImpl这个类前面添加@Repository("adminDAO")。

9.在findByAdminCode方法中添加代码,根据管理员账号查询管理员。

10.在spring-xml中添加ds的参数配置。bean的id为ds是根据@Resource(name="ds")命名为ds的。然后根据db.properties为ds配置相关参数。

xml中修改代码如下:

<!-- 配置组件扫描 -->
<context:component-scan base-package="com.tarena.oss" />

<!-- 配置spring mvc注解扫描 -->
<mvc:annotation-driven/>

<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"/>
<property name="suffix" value=".jsp"/>
</bean>

<!-- 读取db.properties文件的内容 -->
<util:properties id="jdbc" location="classpath:db.properties">
</util:properties>

<bean id="ds"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="url" value="#{jdbc.url}"/>
<property name="driverClassName" value="#{jdbc.driver}"/>
<property name="username" value="#{jdbc.user}"/>
<property name="password" value="#{jdbc.pwd}"/>
</bean>

11.组件扫描中检查包名是否为com.tarena.oss,然后对AdminDAOImpl这个类中的方法进行测试。因为此时还没有涉及到springMVC模式(无controller类),故spring-mvc.xml不会自动读取,我们需要在测试代码中写上开启容器的代码。

@Test
public void test2(){
ApplicationContext ac =
new ClassPathXmlApplicationContext("spring-mvc.xml");
AdminDAO dao =
ac.getBean("adminDAO",AdminDAO.class);
Admin admin = dao.findByAdminCode("caocao");
System.out.println(admin);
}

12..com.tarena.oss包下新建Service包,在新建LoginService接口,添加checkLogin方法。再新建LoginServiceImpl实现类,实现该方法。首先添加注解@Service("loginService"),再在类中添加dao成员变量,并使用@Resource(name="daminDAO")注解,name是参考AdminDAOImpl类,它最开始就被注解为@Repository("adminDAO")。调用dao的方法,如果管理员为空或者密码错误,则抛出自定义异常,否则返回该admin。所以,此时,在Service包下新建spring包,再新建ApplicationException类。

LoginService 接口:

package com.tarena.oss.Service;

import com.tarena.oss.Service.spring.ApplicationException;
import com.tarena.oss.entity.Admin;
import com.tarena.oss.entity.ResultData;

/*
* 业务层接口
* */
public interface LoginService {

public Admin checkLogin(String adminCode,String pwd) throws ApplicationException;

}

LoginServiceImpl实现类:

package com.tarena.oss.Service;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.tarena.oss.Service.spring.ApplicationException;
import com.tarena.oss.dao.AdminDAO;
import com.tarena.oss.entity.Admin;
import com.tarena.oss.entity.ResultData;

/*
* 业务层的实现
* */
@Service("loginService")
public class LoginServiceImpl implements LoginService {

@Resource(name="adminDAO")
private AdminDAO dao;

public Admin checkLogin(String adminCode, String pwd) throws ApplicationException{

System.out.println("checkLogin方法");
//保持好习惯,先定义为null,再初始化。
Admin admin = null;

admin = dao.findByAdminCode(adminCode);
try{
if(admin==null){
throw new ApplicationException("账号不存在");
}
if(!admin.getPassword().equals(pwd)){
throw new ApplicationException("密码错误");
}
}catch(Exception e){
e.printStackTrace();

}
return admin;
}
}

13.在测试中写test3,测试loginService

@Test
public void test3(){
ApplicationContext ac =
new ClassPathXmlApplicationContext("spring-mvc.xml");
LoginService service =
ac.getBean("loginService",LoginService.class);
Admin admin = null;
try {
admin = service.checkLogin("caocao", "123");
} catch (ApplicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(admin);
}

14.复制netctoss中的styles文件夹,复制styles文件夹到WebRoot下。

15.在WebRoot/WEB-INF下新建login.jsp(拷贝原来netctoss项目做相应修改),添加<form></form>,修改<input>中的name,修改其代码提交表单时采用js脚本。

springday05-go1的更多相关文章

  1. Go1.7改善了编译速度并且会生成更快的代码

    Go1.7的开发周期正在接近它的下一个里程碑,Go的提交者Dave Cheney报告了子即将发布的版本中,团队成员在语言工具链上的努力. Cheney称,基于当前的开发状态,Go1.7将会很容易就成为 ...

  2. python2.7 与 go1.2简单性能比较

    过完年刚上班,项目还没有开始,对于即将到来的项目,想尝试是否可以找到一个开发效率接近python,运行效率接近静态语言的编程语言,选择基本就是scala和go,公司的技术组成基本都是c派的,scala ...

  3. go1.8之安装配置具体步骤

    操作系统: CentOS 6.9_x64 go语言版本: 1.8.3 安装go 这里直接安装二进制,其它方式请自行搜索. 1.下载并安装go 命令如下: ? 1 2 3 wget https://st ...

  4. go1.8之安装配置

    说明: 之前学习过go语言(大概是0.9版本),后来更新太快,也没怎么使用,就荒废掉了,今年有项目需要用go开发,重新捡起. 这是我在学习go语言过程中整理的内容,这里记录下,也方便我以后查阅. 操作 ...

  5. Ubuntu16.04 LTS上安装Go1.10

    原因 Ubuntu资源库上默认使用的是Go1.6.2版本,给最新版本代码编译带来了不少问题.本文就记录下在Ubuntu下直接安装Go最新版1.10的步骤. 准备工作 1.卸载已有版本 # 卸载已经安装 ...

  6. GO1.6语言学习笔记2-安装配置及代码组织

    一.关于GO开发环境的安装和配置        在linux环境中安装编译好的go安装包,参考官方指南的步骤一步步走下来就可以了.需要注意的是以下几个环境变量的配置:        GOROOT - ...

  7. Go程序开发---Go环境配置:CentOS6.5+Go1.8标准包安装

    1.Go安装 1.1Go的三种安装方式 Go有多种安装方式,可以选择自己习惯的方式进行,这里介绍三种安装方式: 1)Go源码安装 2)Go标准包安装 3)第三方工具安装 这里主要介绍下Go标准包在Ce ...

  8. 【linux】【Go】Centos7安装go1.13环境

    前言     Go(又称Golang)是Google开发的一种静态强类型.编译型.并发型,并具有垃圾回收功能的编程语言. 罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pi ...

  9. go1.13 mod 实践和常见问题

    实践建议 0,go mod 要求所有依赖的 import path 的path 以域名开头,如果现有项目转1.13的go mod 模式,且不是以域名开头则需要修改. eg: code.be.mingb ...

  10. Go1.13 标准库的 http 包爆出重大 bug,你的项目中招了吗? 原创: 王亚楼 Go语言中文网 今天

    Go1.13 标准库的 http 包爆出重大 bug,你的项目中招了吗? 原创: 王亚楼 Go语言中文网 今天

随机推荐

  1. Bluetooth HFP介绍

    目录 1. 介绍 1.1 目的 1.2 使用场景 1.3 依赖关系 1.4 协议栈 1.5 角色 2. 应用层 3. 空白章节 4. 互操作性要求 4.1 介绍 4.2 Service Level C ...

  2. MyBatis-Generator 最佳实践

    为数据库中的表A生成A.java, A.java, A.xml 由于该插件生成的A.java, A.xml会带有example, 不希望生成example 数据库中的字段写有注释, 希望注释能自动生成 ...

  3. yum安装node.js

    1.安装EPEL库 yum install epel-release 2.安装Node.js yum install nodejs 3.安装nodejs中常用的npm软件包管理器 yum instal ...

  4. Round and Round We Go

    http://acm.hdu.edu.cn/showproblem.php?pid=1313 考查大整数与小整数相乘 #include<iostream> #include<cstd ...

  5. postgresql 将查询结果导出到文件

    方法1:进入查询终端,输入\o  aa.out 查询结果将输出到当前目录的aa.out 文件 方法2: 将查询语句写a.sql中, alias sql2="export PGPASSWORD ...

  6. Java学习-022-Properties 文件数据写入

    Properties 配置文件写入主要通过 Properties.setProperty 和 Properties.store 两个方法,此文以一个简单的 properties 文件写入源码做示例. ...

  7. 在CentOS6.5上安装Tomcat7

    Tomcat大本营地址:http://tomcat.apache.org/ 本文使用到的Tomcat7下载地址:http://apache.opencas.org/tomcat/tomcat-7/v7 ...

  8. line-block代替float布局;

    line-block代替float布局: 我们先看看float的一些特性(特征) 当我们改变浏览器的大小会出现这样的效果: 或则这样: 有时候,我们希望,以第一排最高的元素为换行基准时,我们就可以使用 ...

  9. table tricks

  10. [MySQL] 变量(参数)的查看和设置

    类似于Oracle的参数文件,MySQL的选项文件(如my.cnf)用于配置MySQL服务器,但和Oracle叫法不一样,在MySQL里, 官方叫变量(Varialbes),但其实叫参数也是可以的,只 ...