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>
            密&nbsp;&nbsp;&nbsp;码: <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变量的时候要注意空格还有’,’ 问题,这就是所谓的细节决定成败!!!

发布了69 篇原创文章 · 获赞 25 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_40985788/article/details/82717208