今天在做一个网页项目的时候还真的遇到一个问题,可能是由于自己还是新手吧,没有什么经验,或者说是自己得只是还没与学到家还是一只菜鸟,不多说废话,看项目。
要做的是一个用户登陆界面,并在上面实现页之间得跳转功能。该项目总共分为三个子页面。login.jsp的登陆界面。loginCl.jsp的登陆处理界面。wel.jsp的欢迎界面。
login.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>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="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>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>
<%
//接收用户名和密码,完成对用户身份的验证
String u = request.getParameter("username");
String p = request.getParameter("passwd");
// 到数据库中验证用户
1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
Connection ct = DriverManager.getConnection("jdbc:mysql://localhost:3306/spdb1", "root", "234567");
//3.创建Statement
Statement sm = ct.createStatement();
//4.查询密码
ResultSet rs = sm.executeQuery("select passwd from myusers where username= '" + u + "'");
//5. 根据结果判断
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");
}
//先不到数据库验证,就2简单验证一下
/* if (u.equals("chenya") && p.equals("123")) {
response.sendRedirect("wel.jsp?user=" + u);
//合法,跳转到wei.jsp页面
//如何将本页面loginCl.jsp得到的数据传给下一个页面
// 1. cookie 2. session 3.response.sendRedirect
} else
{
//不合法,跳转到login.jsp
response.sendRedirect("login.jsp");
} */
%>
</html>
wel.jsp
<%@ page language="java" import="java.util.*,java.sql.*"
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>My JSP 'loginCl.jsp' starting page</title>
<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>
登陆成功,恭喜!<%=request.getParameter("user")%>
<br>
<a href="login.jsp">返回重新登陆</a>
<%
String u = request.getContextPath();
String p = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%><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 && s_pageNow.length() != 0) {
//接收到pageNow
pageNow = Integer.parseInt(s_pageNow); //Integer就是把一个字符串转化成一个整数!
}
1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
Connection ct = DriverManager.getConnection("jdbc:mysql://localhost:3306/spdb1", "root", "234567");
//3.创建Statement
Statement sm = ct.createStatement();
//4.查询密码
ResultSet rs = sm.executeQuery("select count(*) from myusers ");
if (rs.next()) {
//一定要next 因为初始化的时候并没有直接指向列表的第一行
rowCount = rs.getInt(1);
}
//计算pageCount值.算法很多,不局限一种
if (rowCount % pageSize == 0) {
pageCount = rowCount / pageSize;
} else {
pageCount = rowCount / pageSize + 1;
}
//查询需要显示的记录
rs = sm.executeQuery(
"select * from myusers where userId limit " + ((pageNow - 1) * pageSize) + "," + pageSize);
//显示
%>
<table border="1">
<tr>
<td>用户id</td>
<td>用户名字</td>
<td>密码</td>
<td>电子邮件</td>
<td>用户级别</td>
</tr>
<%
while (rs.next()) {
%>
<tr>
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
<td><%=rs.getString(3)%></td>
<td><%=rs.getString(4)%></td>
<td><%=rs.getString(5)%></td>
</tr>
<%
}
%>
</table>
<%
//显示超链接
if(pageNow != 1){
out.println("<a href = wel.jsp?pageNow ="+(pageNow-1)+">上一页</a>");
}
for (int i = 1; i <= pageCount; 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>
现在大家注意看wel.jsp页面的显示超链接部分代码。
"<a href = wel.jsp?pageNow ="+(pageNow-1)+"
这部分代码,其中wel.jsp?pageNow ="+(pageNow-1)+
这里是不能有空格的,其实超链接其实就是一个地址,如果中间加了空格的话,这个链接的地址就是不对的,同理其他的上一页下一页的超链接地址也是不能有空格的。
如果有了空格的话。点击想要跳转的页面会是没有反应的。
这其实和安装jdk的时候有点相似,在配置path变量的时候要注意空格还有’,’ 问题,这就是所谓的细节决定成败!!!