编程自学指南:java程序设计开发,JSP 基础知识介绍
一、课程信息
课程主题
探索 JSP:Java Web 动态页面开发基础
目标学员
有 Java 基础,了解 Servlet 会话管理,熟悉 HTTP 协议与 Web 开发基本概念的初学者。
课程目标
- 理解 JSP 的概念、作用和优势。
- 掌握 JSP 的基本语法结构,包括指令、脚本元素和动作。
- 学会在 JSP 中使用内置对象进行数据处理和页面交互。
- 了解 JSP 与 Servlet 的关系和区别,能够结合二者进行简单的 Web 应用开发。
二、课程导入
生活实例引入
想象你去餐厅吃饭,菜单就像是静态网页,上面的菜品信息是固定的。但如果餐厅可以根据当天的食材供应情况、顾客的口味偏好等实时调整菜单内容,那这个动态变化的菜单就类似于 JSP 页面。JSP 能让网页根据不同的条件和数据动态生成内容,给用户带来更个性化、实时的体验。
提问引导
让学生分享在浏览网页时遇到的动态内容,如实时新闻更新、个性化推荐等,引导他们思考如何在 Java Web 开发中实现这些动态效果。
三、JSP 概述
什么是 JSP
JSP(JavaServer Pages)是一种用于创建动态 Web 页面的技术,它允许在 HTML 页面中嵌入 Java 代码。JSP 页面在服务器端被翻译成 Servlet,然后由 Servlet 容器(如 Tomcat)执行,最终生成 HTML 页面返回给客户端浏览器。
JSP 的作用
- 动态内容生成:根据用户的请求、数据库数据或其他条件动态生成网页内容。
- 简化开发:将 Java 代码与 HTML 代码分离,使页面设计和逻辑开发可以分工进行,提高开发效率。
- 提高可维护性:代码结构清晰,便于后续的维护和扩展。
JSP 的优势
- 跨平台性:基于 Java 语言,可在不同的操作系统和服务器上运行。
- 与 Java 生态系统集成:可以方便地使用 Java 的类库和框架。
- 广泛应用:在企业级 Web 开发中被广泛使用。
四、JSP 基本语法结构
JSP 指令
页面指令(<%@ page %>
)
用于定义 JSP 页面的全局属性,如页面的编码、导入的包等。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
包含指令(<%@ include %>
)
用于在 JSP 页面中包含另一个文件的内容。
<%@ include file="header.jsp" %>
标签库指令(<%@ taglib %>
)
用于引入自定义标签库。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
JSP 脚本元素
声明(<%! ... %>
)
用于声明变量和方法,这些变量和方法属于 Servlet 类的成员。
<%!
int count = 0;
public void increment() {
count++;
}
%>
脚本段(<% ... %>
)
用于编写 Java 代码,这些代码会在 JSP 页面被访问时执行。
<%
count++;
out.println("页面被访问了 " + count + " 次。");
%>
表达式(<%= ... %>
)
用于输出表达式的值,表达式的值会被转换为字符串并插入到 HTML 中。
当前时间:<%= new java.util.Date() %>
JSP 动作
<jsp:include>
动态包含另一个 JSP 页面或 Servlet 的输出。
<jsp:include page="footer.jsp" />
<jsp:forward>
将请求转发到另一个 JSP 页面或 Servlet。
<jsp:forward page="newPage.jsp" />
五、JSP 内置对象
概述
JSP 提供了 9 个内置对象,这些对象在 JSP 页面中可以直接使用,无需声明。它们封装了 Web 开发中常用的功能,如请求处理、会话管理、输出页面内容等。
常用内置对象及示例
request
(HttpServletRequest
)
用于获取客户端的请求信息,如请求参数、请求头、请求方法等。
<%
String username = request.getParameter("username");
out.println("用户名:" + username);
%>
response
(HttpServletResponse
)
用于向客户端发送响应信息,如设置响应头、输出响应内容等。
<%
response.setContentType("text/html; charset=UTF-8");
out.println("<h1>欢迎访问!</h1>");
%>
session
(HttpSession
)
用于管理用户的会话信息,如存储用户登录状态、购物车信息等。
<%
session.setAttribute("userRole", "guest");
out.println("用户角色已设置为:" + session.getAttribute("userRole"));
%>
out
(JspWriter
)
用于向客户端输出内容,类似于 PrintWriter
。
<%
out.print("这是输出的内容。");
%>
六、JSP 与Servlet 的关系和区别
关系
- JSP 本质上是 Servlet 的一种简化形式,JSP 页面在服务器端会被翻译成 Servlet 类,然后由 Servlet 容器执行。
- JSP 和 Servlet 都可以用于处理客户端请求和生成动态 Web 页面,它们可以相互调用和协作。
区别
比较项 | JSP | Servlet |
---|---|---|
代码结构 | 以 HTML 为主,嵌入 Java 代码 | 以 Java 代码为主,生成 HTML 代码 |
开发效率 | 适合页面设计人员,快速生成页面 | 适合逻辑开发人员,处理复杂业务逻辑 |
可维护性 | 页面和逻辑混合,维护较复杂 | 代码结构清晰,易于维护 |
七、JSP 实际案例
案例一:简单的计数器页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>计数器页面</title>
</head>
<body>
<%!
int counter = 0;
%>
<%
counter++;
%>
<h1>页面被访问了 <%= counter %> 次。</h1>
</body>
</html>
案例二:用户登录页面及处理
登录页面(login.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>用户登录</title>
</head>
<body>
<form action="loginProcess.jsp" method="post">
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required><br>
<label for="password">密码:</label>
<input type="password" id="password" name="password" required><br>
<input type="submit" value="登录">
</form>
</body>
</html>
登录处理页面(loginProcess.jsp)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>登录结果</title>
</head>
<body>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
if ("admin".equals(username) && "123456".equals(password)) {
session.setAttribute("username", username);
out.println("<h1>登录成功,欢迎 " + username + "!</h1>");
} else {
out.println("<h1>用户名或密码错误,请重新登录。</h1>");
}
%>
</body>
</html>
八、课堂练习
练习一
编写一个 JSP 页面,显示当前系统的日期和时间,并每隔 5 秒自动刷新页面。
练习二
在用户登录案例的基础上,添加一个注销功能,当用户点击注销按钮时,销毁会话并跳转到登录页面。
九、课程总结
知识回顾
- 回顾 JSP 的概念、作用和优势。
- 总结 JSP 的基本语法结构、内置对象的使用。
- 强调 JSP 与 Servlet 的关系和区别。
口诀总结
- “JSP 真奇妙,动态页面它来造。指令脚本和动作,语法规则要记牢。内置对象功能多,请求响应会话握。与 Servlet 互协作,Web 开发乐呵呵。”
十、课后作业
作业一
完善课堂上的用户登录系统,使用 JSP 内置对象和脚本元素,实现用户登录成功后显示欢迎信息,并在页面上显示用户的登录时间。
作业二
研究并尝试使用 JSP 结合数据库,实现一个简单的用户信息管理系统,包括用户信息的添加、查询、修改和删除功能。