jsp页面显示超链接的时候关于路径得问题——"jsp无法实现页面跳转问题" 总结
今天在做一个网页项目的时候还真的遇到一个问题,可能是由于自己还是新手吧,没有什么经验,或者说是自己得只是还没与学到家还是一只菜鸟,不多说废话,看项目。
要做的是一个用户登陆界面,并在上面实现页之间得跳转功能。该项目总共分为三个子页面。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变量的时候要注意空格还有’,’ 问题,这就是所谓的细节决定成败!!!
