一.写一个登陆页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
二.
编写java文件,具体如下:
第一个loginface:这是一个接口
package com.ccec.denglu;
import com.ccec.jdbc.user;
public interface loginface {
int login(user user);
//接口
}
第二个,这是一个实现接口界面:
package com.ccec.denglu;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.ccec.jdbc.connectionUtil;
import com.ccec.jdbc.user;
public class loginsqlvx implements loginface{//实现接口
Connection conn=null;
PreparedStatement prsm=null;
public int login(user user) {
conn=connectionUtil.conn();
ResultSet rs=null;
int flag=0;//这是重点,使用这个变量来做判断
String sql="select username,usernum from user_01 where username=?";//sql语句用来查询出用户名对应的密码
try {
prsm=conn.prepareStatement(sql);
prsm.setString(1, user.getUsername());//得到用户输入的用户名
rs=prsm.executeQuery();//用用户名查询
while(rs.next()){//得到查询结果
String unum=rs.getString("usernum");
if(unum.equals(user.getUsernum())){//判断密码是否相同
//都相同
flag=2;
}else{
//密码不同
flag=1;
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
connectionUtil.close(rs, prsm, conn);
}
return flag;//如果返回值为0则在数据库表中查询不到用户名,也就是用户名错误
}
}
另外,其中的connectionutil是我以前创建的通用的数据库调用的,这样就可以省很多时间不用每次都重新写,具体如下:
package com.ccec.jdbc;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class connectionUtil {
public static Connection conn(){
Connection conn=null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
try {
conn= DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:inspur","scott","tiger");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static void close(ResultSet rs,Statement st,Connection conn){
try {
if(rs!=null){
rs.close();}
if(st!=null){st.close();}
if(conn!=null){conn.close();}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}
public static void close(Statement st,Connection conn){
try {
if(st!=null){st.close();}
if(conn!=null){conn.close();}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}
}
再向下就是写JSP判断页面了:
我只摘取了其中的java代码部分
<%
String loginname=request.getParameter("loginname");//获取用户名
String loginpass=request.getParameter("loginpass");
user user=new user();//调用user类
user.setUsername(loginname);//使用user类中的set方法将用户输入的用户名和密码传入
user.setUsernum(loginpass);
loginface loginface=new loginsqlvx();
int flag=loginface.login(user);//user中有数据,将数据传入loginface类并获取其返回值
if(flag==2){//判断
session.setAttribute("loginname", loginname);//将loginname封装入session中,等待后面页面调用
response.sendRedirect(request.getContextPath()+"/index.jsp");//跳转页面,没啥好说
}else{ if(flag==1){
request.setAttribute("pwderror", "密码错误");
}else if(flag==0){
request.setAttribute("nameerror", "用户名错误");
}
request.getRequestDispatcher("login.jsp").forward(request, response);
}
%>
就这么多了,其实总体来说就是利用request和user将数据导入好能查询完成,如果查询完成就进行判断另一项是否相同,如果不能查询则直接就是用户名不匹配,直接可以判断用户名不正确,数据库中的user_01是我随便建的,大体就是creat table user_01(username varchar2(5),usernum number),主键外键哪个是哪个我也忘记了,但是应该不影响使用。