jsp与java的关系_jsp教程中:jsp与servlet的区别和关系
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的区别和关系相关推荐
- jsp获取java处理结果_JSP Cookie 处理
Cookie是存储在客户机的文本文件,它们保存了大量轨迹信息.在servlet技术基础上,JSP显然能够提供对HTTP cookie的支持. 通常有三个步骤来识别回头客: 服务器脚本发送一系列cook ...
- java jsp公共异常页面_实际应用中JSP页面的异常处理
打开浏览器,访问一个链接或者输入url,"咚"的敲下回车... 哗啦啦,一大堆看不懂的异常信息一下×××出来,塞满整个页面,我勒个去,吓死人了... 在实际开发中,用户访问网站的时 ...
- 关于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 ...
- eclipejsp与java跳转_JSP跳转方式与Servlet跳转方式的区别
JSP中的五种跳转方式: 1. RequestDispatcher.forward() 是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servle ...
- java iter是否存在_Java中ListIterator和Iterator的区别以及ListIterator的应用
Java中ListIterator和Iterator详解与辨析 在使用java集合的时候,都需要使用Iterator.但是java集合中还有一个迭代器ListIterator,在使用List.Arra ...
- java堆和客栈_java中堆和栈的区别分析
堆和栈是java数据结构里非常重要的概念,本文较为详细的分析了二者之间的区别.供大家参考.具体如下: Java的堆是一个运行时数据区,类的(对象从中分配空间.这些对象通过new.newarray.an ...
- Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法
LDAP身份验证是全球范围内最流行的企业应用程序身份验证机制之一,而Active Directory (Microsoft针对Windows的LDAP实现)是另一种广泛使用的LDAP服务器. 在许多项 ...
- mysql在jsp的导包语句_JSP+MYSQL中如何正确使用JDBC包?
展开全部 将JDBC驱动复制到CLASSPATH所指向32313133353236313431303231363533e58685e5aeb931333337626165的目录就可以使用了 JDK/L ...
- jsp里table边框线_jsp页面中Table边框使用总结
一.表格的常用属性基本属性有:width(宽度).height(高度).border(边框值).cellspacing(表格的内宽,即表格与tr之间的间隔). cellpadding(表格内元素的间隔 ...
最新文章
- python爬虫新手项目-Python爬虫实战之取电影天堂,,新手练手项目
- POI读入excel文件到Java中
- C# IntPtr 与 string互转
- C++中结构体、联合体、枚举的区别
- 超适合小白的python新手教程
- 《电子元器件的可靠性》——第1章概述
- HCIE-Security Day6:5个实验深入浅出理解源NAT
- postman的基础使用
- 几款流行的开源后台管理框架
- 计算机体系结构量化研究方法——学习(一)
- 如何透过表象直达本质
- 域名服务器有什么作用?怎么查询域名服务器地址?
- Amazon ParallelCluster 3 集成 ANSYS CFD 计算
- 【MES】聚酯,纺丝,假捻的工艺路线
- UT斯达康MC8638S-高安-S905-河北联通-破解刷机线刷固件包
- Vue.js基础(极简、自用)
- 菁搜FTP搜索引擎总体框架
- 色彩大全 Android 颜色值
- 《统计学习方法》极简笔记P2:感知机数学推导
- 期权基础篇 | 什么是期权
热门文章
- 嵌入式传感器是智能移动增长的关键
- CPU消耗,跟踪定位理论与实践
- SOLOv 2:实例分割(动态、更快、更强)
- 同向逆向、多车道线检测
- 客快物流大数据项目(十六):使用脚本创建镜像
- python 字典 的pop 方法
- failed to load external entity file:/C:/Users/fmm/.AndroidStudio3.4/config/options/updates.xml
- No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
- Java的类,对象以及字段和方法
- Android studio怎么找到当前文件在电脑路径位置