springday05-go1

新建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脚本。

时间: 2024-10-10 01:02:51

springday05-go1的相关文章

go1.8之安装配置

说明: 之前学习过go语言(大概是0.9版本),后来更新太快,也没怎么使用,就荒废掉了,今年有项目需要用go开发,重新捡起. 这是我在学习go语言过程中整理的内容,这里记录下,也方便我以后查阅. 操作系统: CentOS 6.9_x64 go语言版本: 1.8.3 安装go 这里直接安装二进制,其它方式请自行搜索. 1.下载并安装go 命令如下: wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz --no-

go1.6的vendor不生效原因

用go1.6时,把自己写的包放在vendor目录里,发现go编译时并不去找vendor目录里的包,在各种google之后也没找到原因.仔细观察官方的示例才发现,使用vendor功能时包都在$GOPATH/src下,测试了一下,果然是这样.只有在$GOPATH/src下的包,才能使用vendor目录存放依赖包. 现在go对不在$GOPATH/src下开发的项目限制越来越多,看来以后只能在$GOPATH/src下新创建项目了.

Install go1.5 for CentOS7

https://golang.org/doc/install 下载好后,通过FTPS,传递到Linux里去,放哪里随便你自己,因为被墙了,所以在Windows通过旋风下载了这个玩意儿. 你也可以: wget https://storage.googleapis.com/golang/go1.5.linux-amd64.tar.gz //将go解压到/opt,个人喜好罢了 [[email protected] ~]# tar -C /opt -xzf ./go1.5.linux-amd64.tar

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

一.关于GO开发环境的安装和配置 在linux环境中安装编译好的go安装包,参考官方指南的步骤一步步走下来就可以了.需要注意的是以下几个环境变量的配置: GOROOT - go编译库的目录,类似于java的JAVA_HOME PATH - 注意把$GOROOT/bin添加上去 GOPATH - go工作目录,类似于eclipse的workspace 以下是具体的安装步骤和环境配置        $ wget https://storage.googleapis.com/golang/go1.6.

ubuntu上安装Go1.5

下载golang1.5.1编译后的可执行文件包:go1.5.1.linux-amd64.tar.gz.(官方下载地址:http://www.golangtc.com/download) 部署如下: 1.解压: [email protected]:/usr/local# tar -xzvf go1.5.1.linux-amd64.tar.gz 2./etc/profile文件最后添加如下内容: export GOROOT=/usr/local/goexport GOPATH=/home/tjy/g

安装配置go1.4及eclipse的go开发环境

首先从网上下载 golang 1.4版本 官方:http://code.google.com/p/gomingw/downloads/list 第三方:http://www.golangtc.com/static/go/go1.4.windows-amd64.zip 安装配置go1.4 将解压的go目录放任意目录.默认C:\go 配置系统环境变量:GOROOT 和GOPATH. <1>我们可直接在系统环境变量path添加GOBIN的目录C:\go\bin即可(系统将默认GOROOT:C:\go

Go1.5 改进摘要

Go1.5 改进简介 纯Go(+少量汇编)实现 runtime 和 编译器 改进 垃圾回收器, 支持 并发 (有个指标好像是 停顿在 10 毫秒以内). GOMAXPROCS 默认值改为 CPU 核数 internal 限制规则推广到第三方包 (之前只有 std 包启用) 增加 vendor 支持, 基本解决 第三方库的依赖问题和版本问题 增加 trace 命令, 更友好的剖析程序运行状态 增加 go doc 命令 语法变化 增加 map 字面量. 以前的代码: m := map[Point]s

CentOS7.6安装Go-1.12.9

安装步骤 Go的官网:https://golang.google.cn 1. 下载压缩包 wget https://dl.google.com/go/go1.12.9.linux-amd64.tar.gz<说明> 如果出现SSL证书错误问题,加上--no-check-certificate选项. 2. 解压到指定目录下 tar -C /usr/local -xzvf go1.12.9.linux-amd64.tar.gz<说明> 解压成功后,会在/usr/local目录下生成go目

Linux下go1.8安装方法

之前迷上了神奇的Go语言,就在windows上装上了Go1.8,挺顺风顺水的,不过最近换上了Linux时,编译安装就炸了,各种报错.今天就留个记录,备个份! 编译安装Go1.8的主体思路: 从github中clone下来 确保linux系统安装较新的libc,gcc(apt,yum随便搞上) 切换库分支至1.4(刚clone下来的库),去到src目录,执行all.bash 把编译安装完的1.4目录cp到/root/,并更名为go1.4 将刚刚的编译安装的仓库恢复原状(git clean -dfx

go1.13 mod 实践和常见问题

实践建议 0,go mod 要求所有依赖的 import path 的path 以域名开头,如果现有项目转1.13的go mod 模式,且不是以域名开头则需要修改. eg: code.be.mingbai.com/tools/any_test_del_free 1, 既然已经更新到1.13了,建议直接设置GO111MODULE="on" ,即开启go mod 模式.因为这也是以后的主流,path会慢慢的消失. go env -w GO111MODULE=on 2,给go mod 设置代