利用Spring-MVC访问数据库

2022-07-27 09:08:18

1、创建相关的项目。首先相关路径,在pom.xml中添加具有Spring-mvc、mysql、dbcp的三个包。

2、首先创建Admin类与数据库信息对应。

2.1、数据库:

2.2、 jdbc-properties(名称不可改变)   user是数据库名

url=jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf-8
driverClass=com.mysql.jdbc.Driver
user=root
password=123456
maxActive=1
initSize=1

2.3、Admin类

package com.zhiyou100.dao;
import java.io.Serializable;
public class  Admin implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String adminId;
	private String password;
	private String telephone;
	private String adminCode;
	private String name;
	
	public Admin(String adminId, String password, String telephone, String adminCode, String name) {
		super();
		this.adminId = adminId;
		this.password = password;
		this.telephone = telephone;
		this.adminCode = adminCode;
		this.name = name;
	}
	public Admin(String password, String telephone, String adminCode, String name) {
		super();
		this.password = password;
		this.telephone = telephone;
		this.adminCode = adminCode;
		this.name = name;
	}
	public Admin() {
		super();
	}
	public String getAdminId() {
		return adminId;
	}
	public void setAdminId(String adminId) {
		this.adminId = adminId;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getTelephone() {
		return telephone;
	}
	public void setTelephone(String telephone) {
		this.telephone = telephone;
	}
	public String getAdminCode() {
		return adminCode;
	}
	public void setAdminCode(String adminCode) {
		this.adminCode = adminCode;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
 
}

3.创建AdminDao接口,为通过findByCode方法,实现与数据库连接、查询操作。

package com.zhiyou100.dao;

public interface AdminDao {
Admin findByCode(String adminCode);
}

4、创建AdminDaoImp类实现AdminDao接口的方法

package com.zhiyou100.dao;

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

import javax.annotation.Resource;

import org.apache.tomcat.dbcp.dbcp.BasicDataSource;
import org.springframework.stereotype.Repository;
import java.sql.PreparedStatement;

@Repository
public class AdminDaoImp implements AdminDao {
	//注入数据源
	@Resource
	private BasicDataSource ds;
	public Admin findByCode(String adminCode) {
		if(adminCode==null) {
			return null;
		}
		Connection  conn=null;
		try {
			conn=ds.getConnection();
			String sql="select *from user where adminCode=?";
			PreparedStatement ps = conn.prepareStatement(sql);
			ps.setString(1, adminCode);
			ResultSet rSet=ps.executeQuery();
			if(rSet.next()) {
				Admin admin=new Admin();
				admin.setAdminCode(rSet.getString("adminCode"));
				admin.setAdminId(rSet.getString("adminId"));
				admin.setName(rSet.getString("name"));
				admin.setPassword(rSet.getString("password"));
				admin.setTelephone(rSet.getString("telephone"));
				return admin;
			}
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return null;
	}
}

5、创建LoginService,利用LoginService逻辑判断是否登录成功

package com.zhiyou100.service;
import com.zhiyou100.dao.Admin;
//利用LoginService逻辑判断是否登录成功
public interface LoginService {
   Admin checkAdmin(String adminCode,String password);
}

6、创建LoginServiceImpl的类实现LoginService,判断是否登录成功

package com.zhiyou100.service;

import javax.annotation.Resource;
import org.omg.CORBA.PRIVATE_MEMBER;
import org.omg.CORBA.PUBLIC_MEMBER;
import org.springframework.stereotype.Service;
import com.zhiyou100.Exception.AdminCodeException;
import com.zhiyou100.Exception.PasswordException;
import com.zhiyou100.dao.Admin;
import com.zhiyou100.dao.AdminDao;

@Service
public class LoginServiceImpl implements LoginService {
	@Resource
	private AdminDao adminDao;

	public Admin checkAdmin(String adminCode, String password) 
			throws PasswordException, AdminCodeException {
		Admin admin = adminDao.findByCode(adminCode);
		if (admin == null) {
			throw new AdminCodeException("账号出错");
		} else if (!admin.getPassword().equals(password)) {
			throw new PasswordException("密码出错");
		} else {
			return admin;
		}
	}
}

7.在运行过程中会有异常的出现,所以处理异常

AdminCodeException异常

package com.zhiyou100.Exception;

/**
 * @author Administrator
 *
 */
public class AdminCodeException extends RuntimeException{
	public AdminCodeException(String message) {
		super(message);
	}
}

PasswordException异常

/**
 * 
 */
package com.zhiyou100.Exception;

/**
 * @author Administrator
 *
 */
public class PasswordException extends RuntimeException{
  public PasswordException(String message) {
	  super(message);
  }
}

8.创建LoginContrller类,约定方法可以返回一个ModelAndView对象,封装了处理结果数据和视图名称信息。

package com.zhiyou100.etity;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.apache.tomcat.dbcp.dbcp.BasicDataSource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

import com.zhiyou100.Exception.AdminCodeException;
import com.zhiyou100.Exception.PasswordException;
import com.zhiyou100.dao.Admin;
import com.zhiyou100.service.LoginService;

@Controller
@RequestMapping("/login")
public class LoginContrller {
	@Resource
	private LoginService loginService;
	@RequestMapping("/toLogin.do")
	public String toLogin() {
		return "main/login";
	}
	@RequestMapping("/toIndex.do")
	public String toIndex() {
		return "main/index";
	}
	@RequestMapping("/checkLogin.do")
	public String checkLogin(HttpSession session,
			String adminCode,
			String password,
			ModelMap model) {
		try {
			Admin admin=loginService.checkAdmin(adminCode, password);
			  //登录成功后,把用户信息放进Session中
			session.setAttribute("admin",admin);
		} catch (AdminCodeException e) {
			// TODO: handle exception
		model.addAttribute("message",e.getMessage());
		model.addAttribute("adminCode", adminCode);
		model.addAttribute("password", password);
		return "main/login";
		}
		catch (PasswordException e) {
			// TODO: handle exception
		model.addAttribute("message",e.getMessage());
		model.addAttribute("adminCode", adminCode);
		model.addAttribute("password", password);
		return "main/login";
		}
		//登录成功后重定向到主界面
		return "redirect:toIndex.do";
//		BasicDataSource
	}
}

9.在WEB-INF 下建立对应的jsp.

在运行后,输入相应的网址eg:login/toLogin.do ,login/toIndex.do,login/checkLogin会跳转到相对的jsp.

刚开始写博客,有错误的地方,欢迎指出!

不喜勿喷!!!

  • 作者:小飞猪小肥猪
  • 原文链接:https://blog.csdn.net/abcdefghwelcome/article/details/82631845
    更新时间:2022-07-27 09:08:18