JSP系统开发学习之一用户登录系统(model1,纯jsp版)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/JCY1009015337/article/details/53637442

1、如何在jsp页面间跳转

示例:response.sendRedirect("wel.jsp?user="+u);

2、jsp如何操作数据库

//接收用户名和密码,完成对用户的验证
       String u=request.getParameter("username");
       String p=request.getParameter("passwd");
       
       //到数据库中验证
       Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
       //得到链接
       Connection ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=spdb","sa","123456");
       //创建Statement
       Statement sm=ct.createStatement();
       
       //查询数据库
       ResultSet rs=sm.executeQuery("select passwd from users where username='"+u+"'");
       
       //根据结果做判断
       if(rs.next()){
       		//说明用户名存在
       		if(rs.getString(1).equals(p)){
       			//一定合法
       			response.sendRedirect("wel.jsp?user="+u);
       		}else{
       			//密码错误
       			response.sendRedirect("login.jsp?errNo=1");
       		}
       }else{
       		//说明用户名都错了
       		response.sendRedirect("login.jsp?errNo=2");
       }

3、jsp中如何显示数据库,如何分页

需定义四个变量:

int pageSize:每页显示多少条记录   指定的

int pageNow:希望显示第几页   用户选择的

int pageCount:一共有多少页    计算得来的

int rowCount:一共有多少条记录  从表中查询得来的

比如用户希望显示第pageNow页,那么前面pageSize*(pageNow-1)就不应该显示,查询时把这些过滤掉。

具体代码在下面给出。


下面完整地给出用户登录系统的代码:

分别有三个界面,login.jsp(登录界面)、loginCl.jsp(登录处理验证界面,连接数据库并获取验证)、wel.jsp(显示界面,从数据库中获取)

login.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
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>My JSP 'login.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body bgcolor="pink"> 
  <center>
          用户登录<br>
    <hr>
    <form action="loginCl.jsp" method="post">
    	用户名:<input type="text" name="username"/><br>
    	密  码:<input type="password" name="passwd"/><br>
    	<input type="submit" value="登录"/>
    	<input type="reset" value="重置"/>
    </form>
   </center>
  </body>
</html>

效果图如下:



loginCl.jsp代码:

<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="gb2312"%>
<%
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>My JSP 'loginCl.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    <%
       //接收用户名和密码,完成对用户的验证
       String u=request.getParameter("username");
       String p=request.getParameter("passwd");
       
       //到数据库中验证
       Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
       //得到链接
       Connection ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=spdb","sa","123456");
       //创建Statement
       Statement sm=ct.createStatement();
       
       //查询数据库
       ResultSet rs=sm.executeQuery("select passwd from users where username='"+u+"'");
       
       //根据结果做判断
       if(rs.next()){
       		//说明用户名存在
       		if(rs.getString(1).equals(p)){
       			//一定合法
       			response.sendRedirect("wel.jsp?user="+u);
       		}else{
       			//密码错误
       			response.sendRedirect("login.jsp?errNo=1");
       		}
       }else{
       		//说明用户名都错了
       		response.sendRedirect("login.jsp?errNo=2");
       }
       //验证,先不去数据库验证,就简单验证
       /*
       if(u.equals("shunping")&&p.equals("123")){
       	  //合法的wel.jsp
       	  //如何将Logincl.jsp得到的数据传给下一个页面
       	  //1.cookie 2.session 3.reponse.sendRedirect
       	  response.sendRedirect("wel.jsp?user="+u);
       }else{
       	  //不合法,跳转到login.jsp
       	  response.sendRedirect("login.jsp");
       }*/
     %>
  </body>
</html>

wel.jsp界面代码:

<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="gb2312"%>
<%
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>My JSP 'wel.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body> 
    <br>登录成功!恭喜你!<%=request.getParameter("user") %>
    <a href="login.jsp">返回重新登录</a>
    <hr>
    <h1>用户信息列表</h1>
    <%
    	//定义四个分页会用到的变量
    	int pageSize=3;
    	int pageNow=1;//默认显示第一页
    	int rowCount=0;//该值从数据库查询
    	int pageCount=0;//该值是通过计算得来
    	
    	//接收用户希望显示的页数(pageNow)
    	String s_pageNow=request.getParameter("pageNow");
    	
    	//当用户是从初始登录进去的话就可能为空
    	if(s_pageNow!=null){
    		//确实接收到pageNow
    		pageNow=Integer.parseInt(s_pageNow);
    	}
    	
    	//查询到rowCount
    	 //到数据库中验证
       Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
       //得到链接
       Connection ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=spdb","sa","123456");
       //创建Statement
       Statement sm=ct.createStatement();
       
       //查询数据库
       ResultSet rs=sm.executeQuery("select count(*) from users");
       if(rs.next())//r.next()指向指标所指的记录
       {
          rowCount=rs.getInt(1);
       }
       //计算pageCount
       if(rowCount%pageSize==0){
       		pageCount=rowCount/pageSize;
       }else{
       		pageCount=rowCount/pageSize+1;
       }
       
       //查询出需要显示的记录
       rs=sm.executeQuery("select top "+pageSize+
       " * from users where userId not in (select top "
       +pageSize*(pageNow-1)+" userId from users)");
       %>
       <table border="1">
       		<tr><td>用户id</td><td>用户名字</td><td>密码</td><td>电邮</td><td>级别</td></tr>
       		<%
       			while(rs.next()){
       				%>
       				<tr>
       					<td><%=rs.getInt(1) %></td>
       					<td><%=rs.getString(2)%></td>
       					<td><%=rs.getString(3) %></td>
       					<td><%=rs.getString(4) %></td>
       					<td><%=rs.getInt(5) %></td>
       				</tr>
       				<%
       			}
       		 %>
       </table>
       <%
       //上一页
       if(pageNow!=1){
       		out.println("<a href=wel.jsp?pageNow="+(pageNow-1)+">上一页</a>");
       }
       //显示超链接
       for(int i=pageNow;i<=pageNow+4;i++){
       	  out.println("<a href=wel.jsp?pageNow="+i+">["+i+"]</a>");
       }
       //下一页
       if(pageNow!=pageCount)
       out.println("<a href=wel.jsp?pageNow="+(pageNow+1)+">下一页</a>");
     %>
  </body>
</html>

效果图显示如下:



彩蛋:默写java连接数据库代码

Class.forName("com.microsoft.jdbc.sqlserver,SQLServerDriver");

Connection ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=sqdb","sa","123456");

Statement s=ct.createStatement();

ResultSet rs=s.executeQuery("select * from users");

猜你喜欢

转载自blog.csdn.net/JCY1009015337/article/details/53637442