• jsp访问数据库Javabean实现


    4.JSP访问数据库

    JSP就是在html中嵌套的java代码,因此 java代码可以写在jsp中(<% … %>)

    导包操作:

    • java项目 :1 Jar复制到工程中 2.右键该Jar :build path ->add to build Path
    • Web项目:jar复制到WEB-INF/lib

    核心:就是将 java中的JDBC代码,复制到 JSP中的<% … %>

    注意:如果jsp出现错误:The import Xxx cannot be resolved

    尝试解决步骤:
    a.(可能是Jdk、tomcat版本问题) 右键项目->build path,将其中 报错的 libary或Lib 删除后 重新导入
    b.清空各种缓存:右键项目->Clean tomcat… clean (Project -clean或者 进tomcat目录 删除里面work的子目录)
    c.删除之前的tomcat,重新解压缩、配置tomcat,重启计算机
    d.如果类之前没有包,则将该类加入包中

    5.JavaBean
    刚才我们将 jsp中 登录操作的代码 转移到了LoginDao.java;其中LoginDao类 就称之为JavaBean。
    JavaBean的作用:a.减轻的jsp复杂度 b.提高代码复用(以后任何地方的 登录操作,都可以通过调用LoginDao实现)

    JavaBean(就是一个Java类)的定义:满足一下2点 ,就可以称为JavaBean
    a.public 修饰的类 ,public 无参构造
    b.所有属性(如果有) 都是private,并且提供set/get (如果boolean 则get 可以替换成is)

    使用层面,Java分为2大类:
    a.封装业务逻辑的JavaBean (LoginDao.java封装了登录逻辑) 逻辑
    可以将jsp中的JDBC代码,封装到Login.java类中 (Login.java)

    b.封装数据的JavaBean (实体类,Student.java Person.java ) 数据
    对应于数据库中的一张表
    Login login = new Login(uname,upwd) ;//即用Login对象 封装了2个数据(用户名 和密码)

    封装数据的JavaBean 对应于数据库中的一张表 (Login(name,pwd))
    封装业务逻辑的JavaBean 用于操作 一个封装数据的JavaBean

    可以发现,JavaBean可以简化 代码(jsp->jsp+java)、提供代码复用(LoginDao.java)

    public void sleep(String name,String place, int time)
    {

    }

    public void sleep(Person per)
    {
    per.getName()
    per.getPlace()

    }

    在这里插入图片描述
    案例:判断登录用户信息,使用javabean,
    实体类中Login.java采用Javabean中的数据原理,LoginDao使用了Javabean中的逻辑原理

    实体类
    com.xdr.entity-Login.java

    package com.xdr.entity;
    
    public class Login {
    	private int id ; 
    	private String name;
    	private String pwd ;
    	
    	public Login() {
    	}
    	public Login(int id, String name, String pwd) {
    		this.id = id;
    		this.name = name;
    		this.pwd = pwd;
    	}
    	public Login( String name, String pwd) {
    		this.name = name;
    		this.pwd = pwd;
    	}
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	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;
    	} 
    	
    }
    
    

    示例:com.xdr.entity-Person.java

    package com.xdr.entity;
    
    public class Person {//实体类
    	private int id ; 
    	private String name;
    	private boolean isChina ;
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public boolean isChina() {//boolean类型的属性  isXxx()等价于 getXxx();
    		return isChina;
    	}
    	public void setChina(boolean isChina) {
    		this.isChina = isChina;
    	}
    	
    }
    
    

    com.xdr.dao-Login.java

    package com.xdr.dao;
    import com.xdr.entity.*;
    import java.sql.*;
    
    
    public class LoginDao {
    //	public int login(String name,String pwd)//1:登录成功   0:登录失败(用户名或密码有误)  -1:系统异常
    	public int login(Login login)//1:登录成功   0:登录失败(用户名或密码有误)  -1:系统异常
    	{
    		String URL = "jdbc:mysql://localhost:3306/login";
    		String USERNAME = "root";
    		String PWD = "123456";
    		Connection connection = null;
    		Statement stmt = null;
    		ResultSet rs = null ; 
    		try {
    			// a.导入驱动,加载具体的驱动类
    			Class.forName("com.mysql.jdbc.Driver");// 加载具体的驱动类
    			// b.与数据库建立连接
    			connection = DriverManager.getConnection(URL, USERNAME, PWD);
    			// c.发送sql,执行(【查】)
    			stmt = connection.createStatement();
    			
    		//	String name = request.getParameter("uname") ;
    		//	String pwd = request.getParameter("upwd") ;
    			
    			String sql = "select count(*) from login where uname='"+login.getName()+"' and upwd ='"+login.getPwd()+"' " ;
    			rs = stmt.executeQuery(sql); // 返回值表示 增删改 几条数据
    			// d.处理结果
    			int count = -1;
    			if(rs.next()) {
    				count = rs.getInt(1) ;
    			}
    //			if(count>0) {
    //				out.println("登陆成功!");
    //			}else {
    //				out.println("登陆失败!");
    //			}
    			return count ;
    
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    			return -1 ;
    		} catch (SQLException e) {
    			e.printStackTrace();
    			return -1 ;
    		} catch(Exception e) {
    			e.printStackTrace();
    			return -1 ;
    		}
    		finally {
    			try {
    				if(rs!=null) rs.close(); 
    				 if(stmt!=null) stmt.close();// 对象.方法
    				 if(connection!=null)connection.close();
    			}catch(SQLException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    }
    
    

    index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<form action="check.jsp" method="post">
    		用户名:<input type="text" name="uname" /><br/>
    		密码:<input type="password" name="upwd" /><br/>
    		<input type="submit"  value="登录" /><br/>
    	</form>
    </body>
    </html>
    

    check.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="com.xdr.dao.LoginDao" %>
    <%@ page import="com.xdr.entity.*" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<%
    		String name = request.getParameter("uname");
    		String pwd = request.getParameter("upwd");
    		Login login = new Login(name,pwd) ;
    		
    		
    		LoginDao dao = new LoginDao();
    		int result = dao.login(login);
    		if(result>0){
    			out.print("登陆成功");
    		}
    		else if(result==0){
    			out.print("用户名或密码错误");
    		}else{
    			out.print("系统异常!");
    		}
    	%>
    </body>
    </html>
    

    表中原数据:
    在这里插入图片描述
    在这里插入图片描述
    登录页面,输入正确的信息
    在这里插入图片描述
    在这里插入图片描述
    输入错误的信息:
    在这里插入图片描述

  • 相关阅读:
    php函数名后冒号(:)+数据类型(返回值类型限制/php新特性)
    qBittorrent 任务数
    TDDFT软件 octopus 编译
    visual studio code, latex workshop, setting.json
    Tex插入图片/插入tikz流程图
    记录一下讨厌的东西,就当黑名单了
    安装mingw-w64
    win7 和 win10窗口的小区别
    lattice, reciprocal lattice, OUTCAR
    v_sim 个人用户编译 无root权限
  • 原文地址:https://www.cnblogs.com/xdr630/p/15255101.html
Copyright © 2020-2023  润新知