理解JSP:从Servlet问题到JSP基本概念

需积分: 9 1 下载量 27 浏览量 更新于2024-07-13 收藏 259KB PPT 举报
"Servlet遇到了问题-java JSP介绍" Java Server Pages (JSP) 是一种由Sun Microsystems(现已被Oracle收购)开发的动态网页技术,它允许开发者将静态HTML和动态Java代码结合起来,以创建能够根据用户请求生成动态内容的网页。JSP 文件通常以 .jsp 为扩展名,它们在服务器端执行,生成HTML或其他类型的文档,然后发送到客户端浏览器进行渲染。 JSP 运行模型: JSP 页面在服务器端被翻译成一个Servlet,这个Servlet负责处理客户端的请求。当用户首次请求一个JSP页面时,服务器会将其转换为Java源代码,编译成Servlet类,然后加载并执行。这个过程只在第一次请求时发生,后续的请求会直接调用已经编译好的Servlet,提高了性能。 JSP 基本语法: JSP 页面中可以包含HTML、XML或者其他标签语言的静态内容,同时也可以插入JSP元素,如指令(directives)、脚本(scriptlets)和动作(actions)。 1. **JSP 指令**:用于配置页面或者影响JSP编译过程。例如,`<%@page>`指令用于设置页面的编码、导入的包等属性。 2. **JSP 脚本**:包括脚本元素(scriptlets),它们是在服务端执行的Java代码,通常用于处理业务逻辑。例如: ```jsp <%! public void renderOrderInfo(HttpServletRequest request) { // ... } %> ``` 3. **JSP 内嵌变量**:可以直接在HTML标签中使用Java表达式来插入动态内容,如 `${expression}`。 4. **JSP 动作**:以 `<jsp:` 开头的标签,它们告诉JSP引擎执行特定的操作,例如创建、查找或操作JavaBeans。例如,`<jsp:useBean>` 用于在页面作用域中实例化或查找一个Bean。 JSP 标签: JSP支持自定义标签库,这些标签库通常以标签库描述符文件(TLD)的形式存在。例如,JSTL(JavaServer Pages Standard Tag Library)是一个标准的标签库,提供了许多用于处理流程控制、数据格式化等功能的标签。在上述示例中,`<c:choose>` 和 `<c:when>` 就是JSTL的一部分,它们用来实现条件判断。 在Servlet遇到问题时,比如在`OrderServlet`的例子中,虽然不是直接关于JSP,但可以看到Servlet是JSP的基础。Servlet是Java提供的一个接口,用于处理HTTP请求。在`doGet`方法中,Servlet响应客户端的GET请求,设置响应的MIME类型为HTML,然后通过`PrintWriter`输出HTML内容。在实际应用中,Servlet通常与JSP配合使用,Servlet处理业务逻辑,而JSP负责生成视图。 JSP提供了一种简单且强大的方式来构建动态Web应用程序,它结合了Java的强大功能和HTML的易读性,使得开发者可以更高效地创建交互式的网页。同时,Servlet作为JSP的后端支持,负责处理请求和响应,两者共同构成了Java Web开发的核心部分。

HTTP Status 500 – Internal Server Error Type Exception Report Message 在 [4] 行处理 [/index.jsp] 时发生异常 Description The server encountered an unexpected condition that prevented it from fulfilling the request. Exception org.apache.jasper.JasperException: 在 [4] 行处理 [/index.jsp] 时发生异常 1: <%@ page language="java" import="dbtaobao.connDb,java.util.*" contentType="text/html; charset=UTF-8" 2: pageEncoding="UTF-8"%> 3: <% 4: ArrayList<String[]> list = connDb.index(); 5: %> 6: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 7: <html> Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:605) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:498) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:383) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:331) javax.servlet.http.HttpServlet.service(HttpServlet.java:583) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) Root Cause java.lang.NullPointerException dbtaobao.connDb.index(connDb.java:55) org.apache.jsp.index_jsp._jspService(index_jsp.java:116) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:583) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:465) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:383) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:331) javax.servlet.http.HttpServlet.service(HttpServlet.java:583) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) Note The full stack trace of the root cause is available in the server logs. Apache Tomcat/8.5.89

2023-06-09 上传