📜  JSP 完整格式(1)

📅  最后修改于: 2023-12-03 15:32:25.738000             🧑  作者: Mango

JSP 完整格式

JSP(Java Server Pages)是一个用于在服务器上编写动态网页的技术。它允许我们在 HTML 页面中嵌入 Java 代码,以使其能够动态地生成响应。JSP 文件使用 ".jsp" 扩展名,并且源文件通常包含标准的 HTML 标记和 JSP 标记。

JSP 文件结构

一个 JSP 页面的结构如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>JSP 页面</title>
</head>
<body>
    <%-- 插入 Java 代码片段 --%>
    <%
        out.println("Hello, World!");
    %>

</body>
</html>

上面代码的各个部分的含义如下:

  • <%@...%>:指令是用来指导 JSP 引擎在翻译 JSP 页面时生成代码,它的 page 指令用于定义 JSP 页面权利,最常见的指令属性包括 languagecontentTypepageEncoding 等。
  • <!DOCTYPE html>:定义 HTML 文档类型。
  • <html>...</html>:定义 HTML 页面的结构。
  • <head>...</head>:定义 HTML 页面的 header。
  • <body>...</body>:定义 HTML 页面的 body。
  • <%--...--%>:表示注释的内容。
  • <%...%>:表示嵌入的 Java 代码片段,用于执行服务器端的动态处理。
JSP 四大内置对象

一个 JSP 页面可以通过四个内置对象实现与 JSP 引擎相互通信,这四个对象分别为:requestresponsesessionapplication

request

request 对象代表客户端的请求,它包含了客户端提交的所有请求信息,可以通过这个对象获取客户端提交的表单数据、HTTP 头信息、请求方法、请求 URL 等信息。下面是获取表单提交数据的示例:

<form method="post" action="page2.jsp">
    <input type="text" name="username"/>
    <input type="password" name="password"/>
    <input type="submit" value="登录"/>
</form>
<%
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    out.println("用户名:" + username + "<br/>");
    out.println("密码:" + password + "<br/>");
%>
response

response 对象代表服务器的响应,它可以通过该对象向客户端发送响应,例如发送一个 HTML 页面、重定向请求等,下面是一个向客户端发送 HTML 页面的示例:

<%
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    out.println("<html>");
    out.println("<head><title>Response Demo</title></head>");
    out.println("<body>");
    out.println("<h1>Hello, World!</h1>");
    out.println("</body>");
    out.println("</html>");
%>
session

session 对象代表服务器与客户端的会话,它可以保存客户端在同一次会话中的多个请求中共享数据,例如,用于保存登录用户的信息。下面是一个保存用户信息的示例:

String username = request.getParameter("username");
String password = request.getParameter("password");
if(username.equals("admin") && password.equals("123456")){
    HttpSession session = request.getSession();
    session.setAttribute("username", username);
    response.sendRedirect("page2.jsp");
}else{
    response.sendRedirect("page1.jsp");
}
<%
    HttpSession session = request.getSession();
    String username = (String) session.getAttribute("username");

    if (username != null) {
        out.println("欢迎 " + username + " 用户登录!");
    } else {
        out.println("您还未登录!");
    }
%>
application

application 对象代表整个 JSP 应用程序,主要用于在整个应用程序中共享数据,例如,保存系统配置信息等。下面是一个保存系统配置信息的示例:

<% 
    ServletContext application = getServletContext(); 
    application.setAttribute("var", "Variable Value");
%>
<%
    ServletContext application = getServletContext(); 
    String value = (String) application.getAttribute("var");
    out.println("Variable Value: " + value);
%>
JSP 标准动作

除了通过嵌入的 Java 代码实现动态处理外,JSP 也提供了一些标准动作,用于简化 JSP 页面的开发。常用的标准动作有:includeforwardsetPropertygetPropertyuseBean 等。

include

include 标准动作指令可以在一个 JSP 页面中包含另一个 JSP 页面,可以是解析同一个应用程序中的页面,也可以是解析网站的外部页面。

下面是一个包含外部页面的示例:

<%@ include file="header.jsp" %>
forward

forward 标准动作指令可以将请求转发到另一个 JSP 页面并且将当前页面的控制权移交给目标页面,使得目标页面将当前请求的响应发送给客户端。

下面是一个转发请求的示例:

<%
    RequestDispatcher dispatcher = request.getRequestDispatcher("page2.jsp");
    dispatcher.forward(request, response);
%>
setProperty 和 getProperty

setPropertygetProperty 标准动作指令用于在一个 JSP 页面中使用 JavaBean。

下面是一个使用 setProperty 的示例:

<jsp:useBean id="student" class="com.example.Student"/>
<jsp:setProperty name="student" property="name" value="${param.name}"/>
<jsp:setProperty name="student" property="age" value="${param.age}"/>

下面是一个使用 getProperty 的示例:

<jsp:useBean id="student" class="com.example.Student"/>
<jsp:getProperty name="student" property="name"/>
<jsp:getProperty name="student" property="age"/>
总结

通过本文的介绍,我们了解了 JSP 页面的基本结构和 JSP 四大内置对象,以及常见的 JSP 标准动作指令。JSP 技术是动态网络应用程序设计中的一种常见的方法,它使得在网页中混入 Java 代码成为可能。