JSP技术基础

本文详细介绍了使用JSP进行动态网页开发的过程,包括用户注册与登录功能的实现,留言本应用的改造,以及访问控制和访问计数功能的添加。通过实例代码展示了JSP中内置对象的运用,以及数据库操作和页面跳转的逻辑处理。
摘要由CSDN通过智能技术生成

一、目的

1)理解JSP的基本工作原理及执行过程;
2)熟悉JSP中常用的页面元素,理解其基本用法;
3)熟悉JSP的主要内置对象,掌握5个重要内置对象的用法;
4)学会使用JSP技术开发动态网页,构建简单的Web应用

二、原理

1、JSP的基本工作原理及执行过程,JSP与Servlet之间的关系;
2、JSP中的常用页面元素及其用法;
3、JSP中的5个重要内置对象及其用法;

三、实现过程及步骤

1、创建用户注册页面,并使用JSP技术实现后台处理,将注册信息保存到数据库,在注册成功后自动跳转到登录页面;

(1)注册:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Register</title>
</head>
<body>
    <form action="registeract.jsp" method="post">
        Please enter your registration information:<br>
        Username:  <input type="text" name="username"><br>
        Password:  <input type="password" name="password"><br>
        Email   :  <input type="email" name="email"><br>
        <input type="submit" value="Register">
    </form>
</body>
</html>

(2)注册成功后自动跳转到登录页面:

<%@ page language="java"  pageEncoding="utf-8" %>
<%@ page import="java.sql.*" %>
<%@ page import="driver.Driver" %>
<%@ page import="javax.naming.NamingException" %>

<%
    request.setCharacterEncoding("UTF-8");
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    String email = request.getParameter("email");

    Connection conn = null;
    PreparedStatement stat = null;

    try {
        
        conn = Driver.getConnection();
        stat = conn.prepareStatement("INSERT into guestbook.user(username, password, email) values(?,?,?)");

        stat.setString(1,username);
        stat.setString(2,password);
        stat.setString(3,email);
        stat.executeUpdate();
        response.sendRedirect("login.jsp");

    } catch (SQLException e) {
        e.printStackTrace();
    } catch (NamingException e) {
        e.printStackTrace();
    } finally {
        Driver.close(stat,conn);
    }
%>

(3)运行结果:
首先输入注册信息:
在这里插入图片描述
自动跳转到登录页面:
在这里插入图片描述
注册的信息自动保存到数据库中:
在这里插入图片描述

2、创建用户登录页面,并使用JSP技术实现后台处理,查询数据库,验证用户名和密码,根据验证结果跳转到成功页面或失败页面;

(1)登录

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>login</title>
</head>
<body>
    <form action="loginact.jsp" method="post">
        Please enter you username and password to log in<br>
        Username:<input name="username" type="text"><br>
        Password:<input name="password" type="password"><br>
        <input type="submit" value="Login">
    </form>
</body>
</html>

(2)登录成功转到成功页面,登录失败转入失败页面:

<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="driver.Driver" %>
<%@ page import="java.io.PrintWriter" %>
<%@ page import="java.sql.SQLException" %>
<%@ page import="javax.naming.NamingException" %>
<%@ page import="VO.VO" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%
    Boolean state = false;
    String username = request.getParameter("username");
    String password = request.getParameter("password");

    ResultSet rs = null;
    PreparedStatement stat = null;
    Connection con = null;
    try {
        con = Driver.getConnection();
        stat = con.prepareStatement("SELECT * FROM user WHERE username = ?");
        stat.setString(1,username);

        rs = stat.executeQuery();
        rs.next();

        String Temp = rs.getString(2);
        if(Temp.equals(password))
        {
            response.sendRedirect("success.html");
        } else {
            response.setCharacterEncoding("GBK");
            RequestDispatcher rd = request.getServletContext().getRequestDispatcher("/login.jsp ");
            PrintWriter pw = response.getWriter();
            pw.println("<div style='color:red'>Incorrect username or password!</div>");
            rd.include(request,response);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (NamingException e) {
        e.printStackTrace();
    } finally {
        Driver.close(rs,stat,con);
    }
%>

(3)运行结果:
登录页面:
在这里插入图片描述
登录成功页面:
在这里插入图片描述
登录失败页面:
在这里插入图片描述

3.使用JSP技术改造留言本应用,用JSP实现添加留言、显示所有留言等核心处理功能;

(1)创建数据库,用于存放留言信息:

creat table guestbook.book (
   name varchar(20) NOT NULL,
   title varchar (45) NULL,
   content varchar (100) NULL,
 primary key KEY(name));

(2)添加留言页面:

<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="driver.Driver" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>WriteMessage</title>
</head>
<body>
    <form action="msgact.jsp" method="post">
        <h1>Message Book</h1><br>
        Name:
        <input name="name" type="text"><br>
        Title:
        <input name="title" type="text"><br>
        Content:
        <textarea name="content" id="content" cols="60" rows="5"></textarea><br>
        <input type="submit" name="submit" value="Submit" >
    </form>
    <a href="displaymeg.jsp">View all message</a>

(3)将留言存入数据库中:

<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="driver.Driver" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%
    request.setCharacterEncoding("UTF-8");
    String name = request.getParameter("name");
    String title = request.getParameter("title");
    String content = request.getParameter("content");

    PreparedStatement ps = null;
    Connection conn = null;

    conn = Driver.getConnection();
    ps = conn.prepareStatement("INSERT into guestbook.book(name, title, content) values(?,?,?)");
    ps.setString(1,name);
    ps.setString(2,title);
    ps.setString(3,content);
    ps.executeUpdate();
    response.sendRedirect("displaymeg.jsp");
    Driver.close(ps,conn);
%>

(4)显示所有留言:

<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="driver.Driver" %>
<%@ page import="VO.SVO" %>
<%@ page import="java.sql.SQLException" %>
<%@ page import="javax.naming.NamingException" %>
<%@ page import="java.io.PrintWriter" %>
<%@ page import="VO.VO" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Messages</title>
</head>
<body>
<a href="msg.jsp">Write Message</a>
<%
    int count = 0;
    Integer scount = (Integer)application.getAttribute("scount");
    if( scount != null )    count = scount.intValue( );
    count++;
    application.setAttribute("scount", new Integer(count));
%>
There are&nbsp;<%= count %>&nbsp;people visited this page<br><br>

<table border="1"width="50%">
    <%
        List<SVO> list = showAllMessage();
        VO userVO = (VO) session.getAttribute("JudgeLogin");
        if (userVO == null)
        {
            response.sendRedirect("login.jsp");
            PrintWriter printWriter = response.getWriter();
            printWriter.flush();
            printWriter.println("<div style='color:red'>Log in to view all message!</div>");
        }
    %>
    <tr>
        <th>name</th>
        <th>title</th>
        <th>content</th>
    </tr>
    <%
        for(int x = 0 ; x < list.size() ; x ++) {
    %>
    <tr>
        <td><% out.println(list.get(x).getName()); %></td>
        <td><% out.println(list.get(x).getTitle()); %></td>
        <td><% out.println(list.get(x).getContent()); %></td>
    </tr>
        <%
            }
        %>
</table>
<%!
    public ArrayList<SVO> showAllMessage() {
        List<SVO> list = new ArrayList<SVO>();
        SVO record = null;
        ResultSet rs = null;
        PreparedStatement ps = null;
        Connection conn = null;
        String showSql = "SELECT * FROM guestbook.book";

        try {
            conn = Driver.getConnection();
            ps = conn.prepareStatement(showSql);
            rs = ps.executeQuery();

            while (rs.next()) {
                record = new SVO(rs.getString(1), rs.getString(2), rs.getString(3));
                list.add(record);
            }
            Driver.close(rs, ps, conn);
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (NamingException e) {
            e.printStackTrace();
        }
        return (ArrayList<SVO>) list;
    }
%>
</body>
</html>

(5)运行结果:
添加留言页面:
在这里插入图片描述
显示所有留言页面:
在这里插入图片描述
book数据库中结果:
在这里插入图片描述

4、为留言本应用添加访问控制功能,只有登录用户才能查看留言;当未登录用户请求留言列表页面时,自动跳转到登录页面。

(1)当用户没有登录,查看所有留言时到登录页面login.jsp,当用户登录成功时显示留言内容。没有登录时跳转到login.jsp。
核心代码:

<%
    List<SVO> list = showAllMessage();
    VO userVO = (VO) session.getAttribute("JudgeLogin");
    if (userVO == null)
    {
        response.sendRedirect("login.jsp");
        PrintWriter printWriter = response.getWriter();
        printWriter.flush();
        printWriter.println("<div style='color:red'>Log in to view all message!</div>");
    }
%>

(2)运行结果:

如果没有登录点击查看所有留言,则跳转到如下登录页面:
在这里插入图片描述
输入用户名密码登录之后可查看留言:
在这里插入图片描述

5、为留言本应用增加访问计数功能,每当有用户访问留言列表页面时,为访问计数值加1,并在页面上显示到目前总共有多少次用户访问留言页面。

(1)设置计数器count,每当用户访问页面时,计数器count加1。
核心代码:

<%
    int count = 0;
    Integer scount = (Integer)application.getAttribute("scount");
    if( scount != null )    count = scount.intValue( );
    count++;
    application.setAttribute("scount", new Integer(count));
 %>
 There are&nbsp;<%= count %>&nbsp;people visited this page<br><br>

(2)运行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值