JSP是Servlet的扩展,在没有JSP之前,就已经出现了Servlet技术。Servlet是利用输出流动态生成HTML页面,包括每一个HTML标签和每个在HTML页面中出现的内容。
由于包括大量的HTML标签、大量的静态文本及格式等,导致Servlet的开发效率极为低下。所有的表现逻辑,包括布局、色彩及图像等,都必须耦合在Java代码中,这的确让人不胜其烦。JSP的出现弥补了这种不足,JSP通过在标准的HTML页面中插入Java代码,其静态的部分无须Java程序控制,只有那些需要从数据库读取并根据程序动态生成信息时,才使用Java脚本控制。
从表面上看,JSP页面已经不再需要Java类,似乎完全脱离了Java面向对象的特征。事实上,JSP是Servlet的一种特殊形式,每个JSP页面就是一个Servlet实例——JSP页面由系统编译成Servlet,Servlet再负责响应用户请求。JSP其实也是Servlet的一种简化,使用JSP时,其实还是使用Servlet,因为Web应用中的每个JSP页面都会由Servlet容器生成对应的Servlet。对于Tomcat而言,JSP页面生成的Servlet放在work路径对应的Web应用下。
看下面一个简单的JSP页面:
<!-- 表明此为一个JSP页面 -->
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>第一个JSP页面</TITLE>
</HEAD>
<BODY>
<!-- 下面是Java脚本-->
<%for(int i = 0 ; i < 10; i++)
{
out.println(i);
%>
<br>
<%}%>
</BODY>
</HTML>
当启动Tomcat之后,可以在Tomcat的Catalina\localhost\jsptest\org\apache\jsp目录下找到如下文件(假如Web应用名为jsptest,上面JSP页的名为test1.jsp):test1_jsp.java和test1_jsp.class。这两个文件都是Tomcat生成的,Tomcat根据JSP页面生成对应Servlet的Java文件及class文件。
下面是test1_jsp.java文件的源代码,这是一个特殊的Java类,是一个Servlet类:
//JSP页面经过Tomcat编译后默认的包
package org.apache.jsp;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
//继承HttpJspBase类,该类其实是个Servlet的子类
public final class test1_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent
{
private static java.util.Vector _jspx_dependants;
public java.util.List getDependants() {
return _jspx_dependants;
}
//用于响应用户的方法
public void _jspService(HttpServletRequest request,
HttpServletResponse response)
throws java.io.IOException, ServletException
{
//获得页面输出流
JspFactory _jspxFactory = null;
PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
//获得页面输出流
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;
PageContext _jspx_page_context = null;
//开始生成响应
try
{
_jspxFactory = JspFactory.getDefaultFactory();
//设置输出的页面格式
response.setContentType("text/html; charset=gb2312");
pageContext = _jspxFactory.getPageContext(this, request,
response, null, true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
//页面输出流
分享到:
相关推荐
Servlet和JSP是Java Web开发中的两种核心技术,它们在生成动态网页方面有着密切的关系。Servlet是一种服务器端的Java应用程序,它被设计用来扩展Web服务器的功能,处理来自客户端(通常是浏览器)的请求,并向客户端...
在Servlet转发到JSP页面时,此时浏览器地址栏上显示的是Servlet的路径,而若JSP页面的超链接还是相对于该JSP页面的地址且该Servlet和该JSP页面不在同一个文件夹下时,则会出现路径混乱问题。 2. 绝对路径概念 相对于...
**JSP安全浅谈**,安全性是任何Web应用都需要重视的问题。对于JSP来说,主要的威胁包括跨站脚本攻击(XSS)、SQL注入、跨站请求伪造(CSRF)等。为了防御这些攻击,开发者应遵循最佳实践,例如:对用户输入进行严格...
JSP(JavaServer Pages)和Servlet都是Java Web开发中用于构建动态网页的技术,但它们各自承担的角色不同。JSP主要用于视图展示,而Servlet则主要处理应用的控制逻辑。在实际开发中,JSP和Servlet之间的数据传递是...
浅谈运用Java Web解决用户登录的安全问题 在开发项目时,系统的安全问题是必须要考虑的。在 Java Web 中,运用 JSP 和 Servlet 技术可以很好的解决用户登录系统的身份验证和授权的安全问题。 1. 用户登录系统的...
JSP(JavaServer Pages)和Servlet是Java Web开发中两个重要的技术,它们都用于构建动态Web页面,但各自有不同的特点和用途。以下是关于JSP和Servlet的区别与联系的知识点详细阐述: 1. JSP的基本概念和特点: - ...
它的核心目标是简化Java Servlet和JSP应用的开发,提高可维护性、可扩展性和组件的复用性。Struts框架在JSP Model2架构上建立,实现了MVC模式,使得业务逻辑、数据显示和用户交互得以有效分离。 **MVC模式详解** ...
Servlet需要在web.xml中进行配置或使用注解来声明URL模式与Servlet的映射关系。 在Servlet中,为了处理AJAX请求,通常会使用一个方法来接收请求,处理业务逻辑,然后将结果以JSON格式返回给前端。在处理JSON数据时...
Model-View-Controller模式是Sun公司在JSP早期制定的两种规范之一,Model 1将显示、业务逻辑和流程控制集成在JSP页面中,适合小型项目,但不利于扩展和维护。相比之下,Model 2基于MVC,将业务逻辑、视图和控制器...
此时我们使用一个容器,如tomcat、jetty、jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架如maven+spring+struct+hibernate、maven+spring+springmvc+mybatis;最后再选择一个数据库管理系统来存储数据...
- **Servlet与JSP**:了解Servlet的工作原理及生命周期,掌握JSP页面编写技巧。 - **MVC模式**:学习Struts框架实现MVC架构的方式。 - **ORM映射**:使用Hibernate框架进行对象关系映射。 - **依赖注入**:掌握...
7. config对象:类型为javax.servlet.ServletConfig,包含了当前JSP页面的初始化参数和servlet配置信息。config对象的作用域是Page。 8. page对象:类型为javax.lang.Object,代表当前的Servlet实例,基本上可以...
XML文件用于描述Web应用程序的配置信息,Web容器根据它来装载和配置Web应用程序,对于符合Servlet2.3规范的Servlet容器也都要支持规定的发布信息。XML文件还可以扩展置标语言,提供了一个标准,利用这个标准,可以...
而 **pageContext**(`javax.servlet.jsp.PageContext`)是`page`的上下文,它不仅持有`page`,还包含了`request`、`response`对象,以及`servletcontext`和`servletconfig`等。`pageContext`作为一个桥梁,允许...
在 JSP 中,我们可以使用 form 表单来传递数据,并在 servlet 中使用 doGet 方法来处理请求。 ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException...
Tomcat,作为Apache软件基金会的开源项目,是Java Servlet和JavaServer Pages(JSP)的容器,也是Java EE Web应用程序的标准实现。在实际开发和部署中,对Tomcat进行适当的配置能够极大地提升应用性能、安全性以及...