jsp教程上:我们一定学了servlet,也学习了jsp,那么jsp与servlet的区别是什么呢,jsp与servlet又有什么关系呢?下面我们先创建一个demo.jsp的页面,然后tomcat运行,看看jsp编译之后是怎么样的呢?

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

">

jsp演示代码

SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

out.write("输出当前时间:"+sf.format(new Date()));

%>

demo.jsp代码运行的结果是:输出当前时间:2017-02-08 22:09:10

上面的代码已经运行之后,我们再到tomcat服务器的work\Catalina文件夹里面去查看编译后生成的demo_jsp.java这个文件,看看demo.jsp文件被编译之后变成java文件之后是什么样子的。package org.apache.jsp;

import javax.servlet.*;

import javax.servlet.http.*;

import javax.servlet.jsp.*;

import java.text.SimpleDateFormat;

import java.util.*;

public final class demo_jsp extends org.apache.jasper.runtime.HttpJspBase

implements org.apache.jasper.runtime.JspSourceDependent {

//删除了部分代码

public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)

throws java.io.IOException, javax.servlet.ServletException {

final javax.servlet.jsp.PageContext pageContext;

javax.servlet.http.HttpSession session = null;

final javax.servlet.ServletContext application;

final javax.servlet.ServletConfig config;

javax.servlet.jsp.JspWriter out = null;

final java.lang.Object page = this;

javax.servlet.jsp.JspWriter _jspx_out = null;

javax.servlet.jsp.PageContext _jspx_page_context = null;

try {

response.setContentType("text/html;charset=utf-8");

pageContext = _jspxFactory.getPageContext(this, request, response,

null, true, 8192, true);

_jspx_page_context = pageContext;

application = pageContext.getServletContext();

config = pageContext.getServletConfig();

session = pageContext.getSession();

out = pageContext.getOut();

_jspx_out = out;

out.write("\r\n");

out.write("\r\n");

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

out.write("\r\n");

out.write("HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");

out.write("\r\n");

out.write("

\r\n");

out.write("

out.print(basePath);

out.write("\">\r\n");

out.write("    \r\n");

out.write("

jsp演示代码\r\n");

out.write("  \r\n");

out.write("

\r\n");

out.write("    ");

SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

out.write("输出当前时间:"+sf.format(new Date()));

out.write("\r\n");

out.write("  \r\n");

out.write("\r\n");

} catch (java.lang.Throwable t) {

if (!(t instanceof javax.servlet.jsp.SkipPageException)){

out = _jspx_out;

if (out != null && out.getBufferSize() != 0)

try {

if (response.isCommitted()) {

out.flush();

} else {

out.clearBuffer();

}

} catch (java.io.IOException e) {}

if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);

else throw new ServletException(t);

}

} finally {

_jspxFactory.releasePageContext(_jspx_page_context);

}

}

}

你会发现上面的demo.jsp文件被编译成了servlet的代码,其实jsp和servlet的区别就是表现形式不一样,本质却是一样的,servlet是完全可以替代这个demo.jsp来输出这个页面,但是为什么又需要jsp呢?

这是因为在实际项目中,jsp有网页标签,适合做网页界面的设计,如果所有的js和css都通过servlet来write输出的话,代码会变得非常繁琐,所以实际项目中servlet主要负责网站后台逻辑的实现,jsp主要负责的是页面的布局和后台数据的获取。

jsp和servlet的关系实际上就是一种互补的关系,只是职责不一样,完整学习jsp教程,请看下一篇:10分钟学会使用jsp内置对象域对象及el表达式

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/javaweb/63.html

jsp与java的关系_jsp教程中:jsp与servlet的区别和关系相关推荐

  1. jsp获取java处理结果_JSP Cookie 处理

    Cookie是存储在客户机的文本文件,它们保存了大量轨迹信息.在servlet技术基础上,JSP显然能够提供对HTTP cookie的支持. 通常有三个步骤来识别回头客: 服务器脚本发送一系列cook ...

  2. java jsp公共异常页面_实际应用中JSP页面的异常处理

    打开浏览器,访问一个链接或者输入url,"咚"的敲下回车... 哗啦啦,一大堆看不懂的异常信息一下×××出来,塞满整个页面,我勒个去,吓死人了... 在实际开发中,用户访问网站的时 ...

  3. 关于jsp web项目,jsp页面与servlet数据不同步的解决办法(报错404、405等)即访问.jsp和访问web.xml中注册的/servlet/的区别

    报错信息: Type Status Report Message HTTP method GET is not supported by this URL Description The method ...

  4. eclipejsp与java跳转_JSP跳转方式与Servlet跳转方式的区别

    JSP中的五种跳转方式: 1. RequestDispatcher.forward() 是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servle ...

  5. java iter是否存在_Java中ListIterator和Iterator的区别以及ListIterator的应用

    Java中ListIterator和Iterator详解与辨析 在使用java集合的时候,都需要使用Iterator.但是java集合中还有一个迭代器ListIterator,在使用List.Arra ...

  6. java堆和客栈_java中堆和栈的区别分析

    堆和栈是java数据结构里非常重要的概念,本文较为详细的分析了二者之间的区别.供大家参考.具体如下: Java的堆是一个运行时数据区,类的(对象从中分配空间.这些对象通过new.newarray.an ...

  7. Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法

    LDAP身份验证是全球范围内最流行的企业应用程序身份验证机制之一,而Active Directory (Microsoft针对Windows的LDAP实现)是另一种广泛使用的LDAP服务器. 在许多项 ...

  8. mysql在jsp的导包语句_JSP+MYSQL中如何正确使用JDBC包?

    展开全部 将JDBC驱动复制到CLASSPATH所指向32313133353236313431303231363533e58685e5aeb931333337626165的目录就可以使用了 JDK/L ...

  9. jsp里table边框线_jsp页面中Table边框使用总结

    一.表格的常用属性基本属性有:width(宽度).height(高度).border(边框值).cellspacing(表格的内宽,即表格与tr之间的间隔). cellpadding(表格内元素的间隔 ...

最新文章

  1. python爬虫新手项目-Python爬虫实战之取电影天堂,,新手练手项目
  2. POI读入excel文件到Java中
  3. C# IntPtr 与 string互转
  4. C++中结构体、联合体、枚举的区别
  5. 超适合小白的python新手教程
  6. 《电子元器件的可靠性》——第1章概述
  7. HCIE-Security Day6:5个实验深入浅出理解源NAT
  8. postman的基础使用
  9. 几款流行的开源后台管理框架
  10. 计算机体系结构量化研究方法——学习(一)
  11. 如何透过表象直达本质
  12. 域名服务器有什么作用?怎么查询域名服务器地址?
  13. Amazon ParallelCluster 3 集成 ANSYS CFD 计算
  14. 【MES】聚酯,纺丝,假捻的工艺路线
  15. UT斯达康MC8638S-高安-S905-河北联通-破解刷机线刷固件包
  16. Vue.js基础(极简、自用)
  17. 菁搜FTP搜索引擎总体框架
  18. 色彩大全 Android 颜色值
  19. 《统计学习方法》极简笔记P2:感知机数学推导
  20. 期权基础篇 | 什么是期权

热门文章

  1. 嵌入式传感器是智能移动增长的关键
  2. CPU消耗,跟踪定位理论与实践
  3. SOLOv 2:实例分割(动态、更快、更强)
  4. 同向逆向、多车道线检测
  5. 客快物流大数据项目(十六):使用脚本创建镜像
  6. python 字典 的pop 方法
  7. failed to load external entity file:/C:/Users/fmm/.AndroidStudio3.4/config/options/updates.xml
  8. No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
  9. Java的类,对象以及字段和方法
  10. Android studio怎么找到当前文件在电脑路径位置