Servlet及JDBC、dao简单运用
来源:互联网 发布:web网络考勤管理系统 编辑:程序博客网 时间:2024/05/29 18:59
Servlet
在服务器上运行以处理客户端请求并作出响应的程序。
init() . service() . destroy()
主要使用的是HttpServlet ,(主要处理HTTP协议的请求和响应)
doGet() 以get请求调用时使用
doPost() 以post请求调用时使用
JDBC
Jdbc是java数据库连接技术的简称
Jdbc API:和数据库建立连接、执行SQL语句、处理结果。
查询用executeQuery()
增删改要用executeUpdate()
DAO:数据存取对象
分层模式:是一种结构模式(表示层、业务逻辑层、数据库访问层)
表示层依赖业务逻辑层,业务逻辑层依赖数据库访问层
上层依赖下一层,下层不能调用上层。(不能跨层)
例子:
1.首先建一个dao包 ,然后创建一个类--BaseDao.java (里面放入与数据库相连接的代码等)
package second.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
public class BaseDao {
private final String URL="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
private final String USER="*****";
private final String PWD="******";
private Connection conn;
private PreparedStatement pstmt;
private ResultSet rs;
static{
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private Connection getConnection(){
Connection conn=null;
try {
conn=DriverManager.getConnection(URL,USER,PWD);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public int executeUpdate(String sql,List<Object> params){
int count=0;
//数据库连接
conn=getConnection();
try {
pstmt=conn.prepareStatement(sql);
//设置参数
if(params!=null){
for(int i=0;i<params.size();i++){
pstmt.setObject(i+1, params.get(i));
}
}
count=pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
closeAll();
}
return count;
}
public ResultSet executeQuery(String sql,List<Object> params){
conn=getConnection();
try {
pstmt=conn.prepareStatement(sql);
if(params!=null){
for(int i=0;i<params.size();i++){
pstmt.setObject(i+1, params.get(i));
}
}
rs= pstmt.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs;
}
public void closeAll(){
try {
if(rs!=null){
rs.close();
rs=null;
}
if(pstmt!=null){
pstmt.close();
pstmt=null;
}
if(conn!=null){
conn.close();
conn=null;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2.数据库中含有相应的表(user)及类User , servlet中的内容
package second.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import second.entity.Cusinfo;
import second.entity.User;
import second.service.CusinfoService;
import second.service.LoginBiz;
import second.service.impl.CusinfoServiceImpl;
import second.service.impl.LoginBizImpl;
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String name=req.getParameter("username");
String pwd=req.getParameter("userpwd");
LoginBiz loginBiz= new LoginBizImpl();
User user=loginBiz.login(name, pwd);
if(user!=null){
req.setAttribute("cusinfos", list);
//转发
RequestDispatcher rd = req.getRequestDispatcher("/login/dilogin_success.jsp");
rd.forward(req, resp);
}else{
//重定向
resp.sendRedirect(req.getContextPath()+"/login/login_fail.jsp");
}
}
}
package second.entity;
public class User {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
private String name;
private String pwd;
}
3.相应的接口及其实现
①
import second.entity.User;
public interface LoginBiz {
public User login(String name,String pwd);
}
②
import second.dao.AccountDao;
import second.dao.impl.AccountDaoImpl;
import second.entity.User;
import second.service.LoginBiz;
public class LoginBizImpl implements LoginBiz {
private AccountDao accountDao =new AccountDaoImpl() ;
@Override
public User login(String name, String pwd) {
User user = accountDao.findUserByName(name);
if(user!=null && user.getPwd().equals(pwd)){
return user;
}
return null;
}
}
③
package second.dao;
import second.entity.User;
public interface AccountDao {
public User findUserByName(String name);
}
④
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import second.dao.AccountDao;
import second.dao.BaseDao;
import second.entity.User;
public class AccountDaoImpl extends BaseDao implements AccountDao{
public User findUserByName(String name){
User user = null;
String select ="select uname,pwd from accounts where uname=?";
List<Object> params = new ArrayList<Object>();
params.add(name);
ResultSet rs= this.executeQuery(select,params);
try {
if(rs.next()){
user = new User();
user.setName(rs.getString("uname"));
user.setPwd(rs.getString("pwd"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.closeAll();
}
return user;
}
}
4.jsp中的内容,有相应的验证
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>登录页面</title>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery-1.10.2.js"></script>
<script type="text/javascript">
$(function(){
$("#myname").blur(function(){
var uname=$("#myname").val();
if(uname==""){
$("#nameTip").html("用户名不能为空!!");
//alert("用户名不能为空!!");
return;
}else{
$("#nameTip").html(" ");
}
});
$("#mypwd").blur(function(){
var upwd=$("#mypwd").val();
if(upwd==""){
$("#pwdTip").html("密码不能为空!!!");
return;
}else{
$("pwdTip").html(" ");
}
});
});
</script>
</head>
<body>
<form action="<%=request.getContextPath()%>/loginServlet.action" method="post" >
<table>
<tr>
<td>用户名:</td>
<td>
<input type="text" name="username" id="myname"><span id="nameTip"></span>
</td>
</tr>
<tr>
<td>密码:</td>
<td>
<input type="password" name="userpwd" id="mypwd"><span id="pwdTip"></span>
</td>
</tr>
<tr>
<td>
<input type="submit" value="登录" >
</td>
<td>
<input type="reset" value="重置">
</td>
</tr>
</table>
</form>
</body>
</html>
- Servlet及JDBC、dao简单运用
- 简单jdbc泛型dao
- 【设计模式】:Dao设计模式详解及一个简单的项目(AJAX+JSP+Servlet)
- 简单学习 JDBC的DAO模式
- 简单Servlet/JDBC/JSP实例
- jdbc-dao
- JDBC DAO
- jsp,javaBean,DAO之间的简单混合运用实例
- JDBC及简单封装
- ACE_Task简单示例及运用
- JDBC运用
- servlet+jsp+jdbc简单登录系统
- Servlet+JDBC+MySQL简单web练习
- 简单的jdbc封装+servlet的封装
- jdbc+servlet+jsp+mysql简单的例子
- JAVA-JDBC: (4) DAO设计思想及骨架搭建
- DAO运用实例
- DAO运用实例
- Dao对数据库的操作进行封装
- 终于编译好了qt的oracle驱动QOCI,连接driver not loaded解决方法
- Ubuntu关闭防火墙
- android bitmap 内存使用分析:
- HDU4911:Inversion
- Servlet及JDBC、dao简单运用
- struts1源码学习7,action处理核心ComposableRequestProcessor
- ubuntu安装sqlite及出错处理
- 人见人爱A^B
- 多例模式(升级单例模式)
- KVM虚拟机的创建、管理与迁移
- 实现图片验证码,其实就是简单的验证码实现,记录一下
- [HDOJ 4899] Hero meet devil [动态规划+状态压缩]
- sql中 in 、not in 、exists、not exists 用法和差别