JSP详解,看这一篇就够了(含示例)

JSP(JavaServer Pages)是Java技术的一部分,用于创建动态Web内容。JSP的主要功能是简化服务器端的Web开发,尤其是对于HTML、XML等页面内容的动态生成。

一、JSP的基础概念

  1. 什么是JSP

    • JSP是一种基于Java的技术,用于创建动态网页。
    • 它允许在HTML中嵌入Java代码,这些代码在服务器端执行。
  2. 工作原理

    • 当浏览器请求一个JSP页面时,服务器将JSP文件编译成一个Servlet(Java类)。
    • 这个Servlet生成HTML内容并发送回客户端(浏览器)。

二、JSP和Servlet的关系

 	JSP是Servlet的简化版,专注于页面显示。
 	Servlet适合处理复杂的逻辑和控制流程。
	JSP和Servlet可以相互调用,形成MVC(Model-View-Controller)模式。

三、JSP的生命周期

  1. 翻译阶段
    • JSP页面被翻译成Servlet类。
  2. 编译阶段
    • 翻译后的Servlet类被编译。
  3. 加载阶段
    • 编译后的Servlet类被加载到服务器内存中。
  4. 实例化阶段
    • 创建Servlet实例。
  5. 初始化阶段
    • 调用init方法进行初始化。
  6. 请求处理阶段
    • 对每个请求调用service方法,生成响应。
  7. 销毁阶段
    • 调用destroy方法,释放资源。

四、JSP的基本语法

  1. 脚本元素

    • 表达式<%= ... %> 用于输出表达式的值。
      Hello, the current time is: <%= new java.util.Date() %>
      
    • 脚本片段<% ... %> 包含任意Java代码,可以用来定义变量或编写控制结构。
      <% 
      String name = "John";
      int age = 30;
      %>
      
    • 声明<%! ... %> 用于定义类级别的变量和方法。
      <%! 
      private int count = 0;
      public int getCount() { 
          return ++count; 
      }
      %>
      
  2. 指令元素

    • 页面指令<%@ page ... %> 用于设置JSP页面属性。
      <%@ page language="java" contentType="text/html; charset=UTF-8" %>
      
    • 包含指令<%@ include file="..." %> 用于包含其他文件的内容。
      <%@ include file="header.jsp" %>
      
    • 标签库指令<%@ taglib uri="..." prefix="..." %> 用于引入自定义标签库(学习JSTL时会使用到)。
      <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
      
  3. 动作元素

    在JSP中,动作元素(也叫动作标签)用于执行特定的任务或操作,例如包含其他页面、转发请求、设置属性等。动作标签可以在JSP页面中以 XML 风格的标签形式使用,让开发者可以更方便地管理和控制页面的行为。下面让介绍几种常用的动作标签及其用法:

    ①. <jsp:include>

    <jsp:include> 标签用于在当前页面中包含其他页面的内容。被包含的页面可以是 JSP 页面、HTML 页面或者其他文本文件。

    示例:

    <jsp:include page="header.jsp" />
    

    这个示例会在当前页面中包含名为 “header.jsp” 的页面的内容。

    ②. <jsp:forward>

    <jsp:forward> 标签用于将请求转发到其他页面,通常用于实现请求的重定向。

    示例:

    <jsp:forward page="error.jsp" />
    

    这个示例会将请求转发到名为 “error.jsp” 的页面。

    ③. <jsp:useBean>

    <jsp:useBean> 标签用于在页面中创建或定位一个 JavaBean 实例,使得页面可以使用该 JavaBean 中的属性和方法。

    示例:

    <jsp:useBean id="user" class="com.example.User" scope="request" />
    

    这个示例会在 request 作用域中创建一个名为 “user” 的 JavaBean 实例,类为 com.example.User

    ④. <jsp:setProperty><jsp:getProperty>

    <jsp:setProperty> 标签用于设置 JavaBean 实例的属性值,<jsp:getProperty> 标签用于获取 JavaBean 实例的属性值。

    示例:

    <jsp:setProperty name="user" property="name" value="Alice" />
    <jsp:getProperty name="user" property="name" />
    

    这个示例会将名为 “user” 的 JavaBean 实例的 “name” 属性设置为 “Alice”,然后输出 “name” 属性的值。

    ⑤. <jsp:param>

    <jsp:param> 标签用于在包含其他页面或转发请求时,传递参数给被包含的页面或转发的目标页面。

    示例:

    <jsp:include page="header.jsp">
        <jsp:param name="section" value="home" />
    </jsp:include>
    

    这个示例会在包含名为 “header.jsp” 的页面时,将名为 “section” 的参数设置为 “home”。

    ⑥. <jsp:plugin>

    <jsp:plugin> 标签用于嵌入 Applet 或者其他对象到生成的页面中。

    示例:

    <jsp:plugin type="applet" code="MyApplet.class" width="300" height="200">
        <jsp:params>
            <jsp:param name="param1" value="value1" />
            <jsp:param name="param2" value="value2" />
        </jsp:params>
    </jsp:plugin>
    

    这个示例会嵌入一个名为 “MyApplet.class” 的 Applet 到页面中,并传递参数给 Applet。

    动作元素总结

    动作标签为开发者提供了一种方便的方式来控制和管理 JSP 页面的行为。通过使用动作标签,可以轻松地包含其他页面、转发请求、创建 JavaBean 实例、传递参数等,从而使得页面的逻辑更加清晰、易于维护。

五、JSP隐式对象

JSP隐式对象是JSP的重要组成部分之一。隐式对象提供了对各种Web应用程序资源的直接访问,这些对象在JSP页面中不需要显式地声明就可以使用。JSP提供了九个隐式对象,每个对象都有特定的用途。

  1. request:

    • 类型:javax.servlet.http.HttpServletRequest
    • 用途:表示客户端的请求,包含请求参数、头信息、请求方法等。
    • 常用方法:
      String param = request.getParameter("paramName");
      String header = request.getHeader("headerName");
      
  2. response:

    • 类型:javax.servlet.http.HttpServletResponse
    • 用途:表示服务器对客户端的响应,可以设置响应头、状态码和发送数据。
    • 常用方法:
      response.setContentType("text/html");
      response.setHeader("headerName", "headerValue");
      
  3. out:

    • 类型:javax.servlet.jsp.JspWriter
    • 用途:用于向客户端输出内容,类似于标准的Java PrintWriter
    • 常用方法:
      out.println("Hello, world!");
      out.flush();
      
  4. session:

    • 类型:javax.servlet.http.HttpSession
    • 用途:表示一个用户会话,用于在多个请求间保持用户数据。
    • 常用方法:
      session.setAttribute("username", "John");
      String user = (String) session.getAttribute("username");
      session.invalidate();
      
  5. application:

    • 类型:javax.servlet.ServletContext
    • 用途:表示Web应用程序的上下文,可以在整个应用中共享数据。
    • 常用方法:
      application.setAttribute("appName", "MyApp");
      String app = (String) application.getAttribute("appName");
      
  6. config:

    • 类型:javax.servlet.ServletConfig
    • 用途:表示JSP页面的配置对象,包含初始化参数和Servlet上下文。
    • 常用方法:
      String param = config.getInitParameter("paramName");
      ServletContext context = config.getServletContext();
      
  7. pageContext:

    • 类型:javax.servlet.jsp.PageContext
    • 用途:提供对各种范围对象(如page、request、session、application)的统一访问。
    • 常用方法:
      pageContext.setAttribute("key", "value", PageContext.SESSION_SCOPE);
      String value = (String) pageContext.getAttribute("key", PageContext.SESSION_SCOPE);
      
  8. page:

    • 类型:java.lang.Object
    • 用途:表示当前的JSP页面对象,等同于this关键字。
    • 常用方法:通常不直接使用,可以通过调用当前页面的方法或访问属性来使用。
  9. exception:

    • 类型:java.lang.Throwable
    • 用途:在JSP页面中处理未捕获的异常时使用,通常在错误页面中使用。
    • 常用方法:
      String message = exception.getMessage();
      

    示例使用隐式对象

    以下是一个使用上述隐式对象的简单JSP页面示例:

    <%@ page language="java" contentType="text/html; charset=UTF-8" %>
    <%@ page isErrorPage="true" %>
    <!DOCTYPE html>
    <html>
    <head>
        <title>Implicit Objects Example</title>
    </head>
    <body>
        <h2>Using JSP Implicit Objects</h2>
        <p>Request Parameter: <%= request.getParameter("name") %></p>
        <p>Session Attribute: <%= session.getAttribute("username") %></p>
        <p>Application Attribute: <%= application.getAttribute("appName") %></p>
        <p>Page Exception: <%= exception != null ? exception.getMessage() : "No Exception" %></p>
    </body>
    </html>
    

    在这个示例中,JSP页面演示了如何使用requestsessionapplicationexception隐式对象来访问不同范围的数据和处理异常。

    JSP隐式对象总结

    JSP隐式对象是JSP的重要组成部分,它们提供了对请求、响应、会话、应用上下文等各种Web资源的直接访问,极大地简化了Web应用程序的开发。了解和熟练使用这些隐式对象,是掌握JSP开发的重要一步。

六、JSP的使用示例

有一个简单的用户登录页面,通过JSP实现:

login.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <title>Login Page</title>
</head>
<body>
    <h2>Login</h2>
    <form action="loginServlet" method="post">
        Username: <input type="text" name="username"><br>
        Password: <input type="password" name="password"><br>
        <input type="submit" value="Login">
    </form>
</body>
</html>

LoginServlet.java:

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        
        // 简单的用户认证逻辑
        if ("admin".equals(username) && "password".equals(password)) {
            response.sendRedirect("welcome.jsp");
        } else {
            response.sendRedirect("error.jsp");
        }
    }
}

welcome.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
    <h2>Welcome, <%= request.getParameter("username") %>!</h2>
</body>
</html>

error.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <title>Error</title>
</head>
<body>
    <h2>Login failed. Please try again.</h2>
</body>
</html>

七、JSP的优势

  1. 简化开发:通过简化Java代码的嵌入,减少代码冗余。
  2. 分离显示和逻辑:可以将页面显示和业务逻辑分离,提高代码的可维护性。
  3. 强大的功能:继承Java的强大功能,支持面向对象编程、数据库连接等。

八、JSP总结

JSP是Java Web开发的重要组成部分,适用于创建动态网页。通过学习工作原理和与Servlet的关系、JSP的基本语法、JSP的隐式对象,可以有效地开发和维护Web应用程序。

希望通过上述介绍,大家能够对JSP有一个全面的了解。

  • 42
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
顺序如下: 1、多种字体大小显示 2、c:out标记输出 3、获取当前时间 4、include包语句 5、建立错误处理页面的范例程序 6、jsp:forward 7、简单计数器 8、设置页面属性 9、使用GB2312编码 10、使用Big5编码 11、c:catch的用法 12、<c:forEach> begin、end和step的用法 13 、 <c:forEach> 循环 14、<c:forEach> varStatus 的四种属性 15、<c:forEach> 的用法 16、从客户端传送数据至服务端 17、使用Unicode转义字符 18、使用朝鲜语字符集 19、JSP中最简单的国际化程序 20、错误检测 21、抛出异常 22、<c:if> 的用法 23、<c:set>和<c:remove> 的用法 24、<c:import> 的用法 25、jsp-include的用法 26、汉字处理 27、网页重定向 28、自动更新网页 29、存取session 30、<c:redirect> 的用法 31、单选型列表框 32、jsp文件中定义类 33、取得 JSP Container 版本 34、javax.servlet.jsp.JspWriter - out 对象 35、page 隐对象 36、application 对象 37、PageContext 对象 38、Page范围 - pageContext 39、测试要显示的中文 40、IF控制符的操作 41、HttpServletRequest 接口所提供的方法 42、 网上测验 43、HttpSession - session 对象 44、 多选型列表框 45、解决浏览器 cache 的问题 46、使用 EL、JSTL 处理表单数据 47、 EL隐对象 param、paramValues 48、EL隐对象 pageContext 49、EL算术运算符 50、EL关系运算符 51、EL的运算符 52、选择钮的使用 53、检查框的使用 54、群组检查框的使用 55、数字、货币、百分数格式化 56、日期格式化 57、JSTL设置语言地区 58、Cookie数据的存取 59、session有效时间的设置与取得 60、session时间与ID 61、Cookie有效时间的设置 62、利用隐藏字段传送数据 63、JSP 使用 JavaBean 的方法 64、JSP 使用 JavaBean 65、范围为 Page 的 JavaBean范例程序 66、范围为 Request的 JavaBean 67、范围为 Session 的 JavaBean 68、范围为 Application 的 JavaBean 69、删除 JavaBean 70、url重组 71、Switch语句 72、环境变量 73、forward重定向 74、文件的建立与删除 75、取得文件属性 76、取得目录中的文件 77、目录的建立与删除 78、自Cookie存取日期/时间数据 79、管理Session变量 80、数据库中的记录数与记录指针位置 81、利用absolute方法设置记录位置 82、使用jsp指令生成Word文档 83、JSP网页模板 84、判断是否空白文件 85、cookie 用户登录次数 86、获取用户的真实IP地址 87、获取用户的浏览器信息 88、在客户端进行数据检查 89、在JSP中获取当前绝对路径 90、读取表单中所有参数 91、分行写入数据 92、显示请求URL 93、判断session是否过期 94、参数式查询数据库 95、取得数据库中各栏名称 96、使用JavaBean、设置和获取Bean的属性 97、设置Bean的一个属性与输入参数关联 98、实现基于数据库的站内搜索 99、DOM读取XML文档 100、SAX读取XML文档
Tomcat是一款免费的Web服务器,专为Java Web应用程序而设计。它是一个开源项目,由Apache软件基金会开发和维护。Tomcat支持Java Servlet、JavaServer Pages(JSP)、Java Expression Language(EL)和Java WebSocket等技术。 Tomcat的最新版本是Tomcat 9,它是我们使用的最新Java Servlet API版本。Tomcat 9也支持HTTP/2协议和WebSocket 1.1规范。Tomcat 也有其他版本,比如Tomcat 8.5,它也是一个很常用的版本。 Tomcat的好处是它轻量级且易于使用。Tomcat虽然是一款Web服务器,但它可以作为嵌入式Web容器,使用Spring框架等等进行开发。由于Tomcat使用Java语言,因此Tomcat不仅适用于多个操作系统,如Windows、Linux和Mac OS X,而且还适用于多个开发平台,如Eclipse和NetBeans。 Tomcat也很容易配置。我们可以使用命令行界面轻松地配置服务器,在Tomcat的安装页面可以选择安装到什么目录,配置好后,我们可以通过在浏览器中输入localhost:8080,直接访问Tomcat Server并查看Tomcat欢迎页。接着,我们可以部署自己的Java Web应用程序,这些应用程序可以使用Java Servlet、JSP和其他Java Web技术。 总的来说,Tomcat是一款优秀的Java Web服务器,它可以快速安装和配置,适用于多个开发平台和操作系统,并且易于使用和集成。无论开发Java Web应用程序还是部署Java Web应用程序,Tomcat都是一个值得使用的工具。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值