JSP基础--JSP入门
1 JSP概述
1.1 什么是JSP
JSP(Java Server Pages)是JavaWeb服务器端的动态资源。它与html页面的作用是相同的,显示数据和获取数据。
1.2 JSP的组成
JSP = html + Java脚本(代码片段) + JSP动态标签
1. jsp的作用:
* Servlet:
> 缺点:不适合设置html响应体,需要大量的response.getWriter().print("<html>")
> 优点:动态资源,可以编程。
* html:
> 缺点:html是静态页面,不能包含动态信息
> 优点:不用为输出html标签而发愁
* jsp(java server pages):
> 优点:在原有html的基础上添加java脚本,构成jsp页面。 2. jsp和Servlet的分工:
* JSP:
> 作为请求发起页面,例如显示表单、超链接。
> 作为请求结束页面,例如显示数据。
* Servlet:
> 作为请求中处理数据的环节。
2 JSP语法
2.1 JSP脚本
JSP脚本就是Java代码片段,它分为三种:
* <% ... %>:代码段,Java语句
java代码片段(常用),用于定义0~N条Java语句!方法内能写什么,它就可以放什么!
* <%= ... %>:表达式,只是表达式!表达式的值会被输出到客户端
用于输出(常用),用于输出一条表达式(或变量)的结果。response.getWriter().print( ... );这里能放什么,它就可以放什么!
* <%! ... %>:定义,定义成员!例如例如成员变量,方法等
用来创建类的成员变量和成员方法(基本不用,但容易被考到),类体中可以放什么,它就可以放什么!
|
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSP演示</title> </head> <body> <h1>JSP演示</h1> <% // Java语句 String s1 = "hello jsp"; // 不会输出到客户端,而是在服务器端的控制台打印 System.out.println(s1); %> <!-- 输出到客户端浏览器上 --> 输出变量:<%=s1 %><br/> 输出int类型常量:<%=100 %><br/> 输出String类型常量:<%="你好" %><br/> <br/> 使用表达式输出常量是很傻的一件事,因为可以直接使用html即可,下面是输出上面的常量:<br/> 100<br/> 你好 </body> </html> |
<!-- 它是jsp指令,也是一种特殊的标签! -->
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!-- java代码的片段 -->
<%
String path = request.getContextPath();//获取项目名
/*
http://localhost:8080/day11_1/
*/
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<!-- 向页面输出basePath -->
<base href="<%=basePath%>">
<title>My JSP 'a.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
<%-- 你傻不傻啊 --%> <table border="1" align="center" width="60%">
<tr>
<td>姓名</td>
<td>年龄</td>
</tr>
<%
for(int i = 0; i < 10; i++) {
%>
<tr>
<td>张三</td>
<td>29</td>
</tr>
<%
}
%>
</table> </body>
</html>
3 JSP的原理
3.1 JSP是特殊的Servlet
JSP是一种特殊的Servlet,当JSP页面首次被访问时,容器(Tomcat)会先把JSP编译成Servlet,然后再去执行Servlet。所以JSP其实就是一个Servlet!


3.2 JSP真身存放目录
JSP生成的Servlet存放在${CATALANA}/work目录下,我经常开玩笑的说,它是JSP的“真身”。我们打开看看其中的内容,了解一下JSP的“真身”。
你会发现,在JSP中的静态信息(例如<html>等)在“真身”中都是使用out.write()完成打印!这些静态信息都是作为字符串输出给了客户端。
JSP的整篇内容都会放到名为_jspService的方法中!你可能会说<@page>不在“真身”中,<%@page>我们明天再讲。
a_jsp.java的_jspService()方法:
|
public void _jspService(final javax.servlet.http.HttpServletRequest request[崔1] , final javax.servlet.http.HttpServletResponse response[崔2] ) throws java.io.IOException, javax.servlet.ServletException { final javax.servlet.jsp.PageContext pageContext[崔3] ; javax.servlet.http.HttpSession session [崔4] = null; final javax.servlet.ServletContext application[崔5] ; final javax.servlet.ServletConfig config[崔6] ; javax.servlet.jsp.JspWriter out [崔7] = null; final java.lang.Object page [崔8] = 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; …[崔9] } |
[崔1]在<%=%>和<%%>中不用创建即可使用的对象!
[崔2]在<%=%>和<%%>中不用创建即可使用的对象!
[崔3]在<%=%>和<%%>中不用创建即可使用的对象!
[崔4]在<%=%>和<%%>中不用创建即可使用的对象!
[崔5]在<%=%>和<%%>中不用创建即可使用的对象!
[崔6]在<%=%>和<%%>中不用创建即可使用的对象!
[崔7]在<%=%>和<%%>中不用创建即可使用的对象!
[崔8]在<%=%>和<%%>中不用创建即可使用的对象!
[崔9]JSP页面中的内容都会在这个位置出现!这时上面所说的对象已经创建完了,所以在JSP页面中是可以使用的。
4 再论JSP脚本
JSP脚本一共三种形式:
l <%...%>:内容会直接放到“真身”中;
l <%=…%>:内容会放到out.print()中,作为out.print()的参数;
l <%!…%>:内容会放到_jspService()方法之外,被类直接包含;
前面已经讲解了<%...%>和<%=…%>,但还没有讲解<%!...%>的作用!
现在我们已经知道了,JSP其实就是一个类,一个Servlet类。<%!...%>的作用是在类中添加方法或成员的,所以<%!...%>中的内容不会出现在_jspService()中。
|
<%! private String name; public String hello() { return "hello JSP!"; } %> |
5 JSP注释
我们现在已经知道JSP是需要先编译成.java,再编译成.class的。其中<%-- ... --%>中的内容在JSP编译成.java时会被忽略的,即JSP注释。
也可以在JSP页面中使用html注释:<!-- … -->,但这个注释在JSP编译成的.java中是存在的,它不会被忽略,而且会被发送到客户端浏览器。但是在浏览器显示服务器发送过来的html时,因为<!-- … -->是html的注释,所以浏览器是不会显示它的。

JSP基础--JSP入门的更多相关文章
- 新手学Html之JSP基础语法——入门(二)
JSP基础语法 JSP注释 comment.jsp <%@ page language="java" contentType="text/html; charset ...
- JSP | 基础 | JSP状态管理 | Cookie
Cookie : 是web服务器保存在客户端的一系列文本信息. Cookie的作用: 1.对特定的对象的追踪 2. 3. JSP中创建Cookie以及使用 创建Cookie对象 写入Cookie对象 ...
- JSP | 基础 | JSP行为 | incline && forward
语法 描述 jsp:include 用于在当前页面中包含静态或动态资源 jsp:forward 从一个JSP文件向另一个文件传递一个包含用户请求的request对象 index.jsp <%@ ...
- JSP基础与提高(一).md
JSP基础 JSP的由来 1.1. 为什么有JSP规范 Servlet技术产生以后,在使用过程中存在一个很大的问题,即为了表现页面的效果而需要输出大量的HTML标签,这些标签在Servlet中表现为一 ...
- JAVAWeb入门之JSP基础知识
也是到了考试周,很多课都结了,准备去学点新东西.随后就开始自学JAVAWeb. 要学习JAVAWeb,首先需下面的知识: a) HTML/CSS/JS(前端页面),XML,JSON,vue ...
- 01.JSP基础语法
本章主要讲解Java Web与JSP的入门内容,适合有JSP或Java Web基础的读者学习. 1.Web应用与web.xml文件 (1)Java Web应用程序的结构 Java We ...
- JSP基础--JAVA遇见HTML
1.手工编写第一个WEB应用程序 2.默认访问服务器网页首页欢迎界面是 index.jsp,就是网页链接访问其所在的文件夹目录,不访问这个文件,也会自动访问的.如果这个文件夹目录下没有index.js ...
- JavaWeb学习----JSP简介及入门(含Eclipse for Java EE及Tomcat的配置)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- Java学习-033-JavaWeb_002 -- 网页标记语言JSP基础知识
JSP 是 Sun 公司提倡的一门网页技术标准.在 HTML 文件中,加入 Java 代码就构成了 JSP 网页,当 Web 服务器访问 JSP 请求的时候,首先执行其中的 Java 程序源码,然后以 ...
随机推荐
- js去掉输入框的前后空格及一些常用正则表达式
去掉TextBox输入框两头的前后空格:onblur="this.value=this.value.replace(/^\s+|\s+$/g,'');" str为要去除空格的字符串 ...
- asp.net 获取表单中控件的值
原文:https://blog.csdn.net/happymagic/article/details/8480235 C# 后台获取前台 input 文本框值.(都是以控件的Name来获取) s ...
- idea 创建java web项目ssm-gradle
环境准备:jdk1.8+tomcat8+idea+gradle 1.创建项目SSM 使用gradle创建项目,按照提示如下 image.png 输入项目名称,组名 image.png im ...
- Apache Mesos1.0.1 编译安装部署教程(ubuntu)
参考资料 官方文档:http://mesos.apache.org/documentation 中文翻译:http://mesos.mydoc.io/ GitHub:https://github.co ...
- Rsync+inotify 实时数据同步 inotify master 端的配置
强大的,细致的,异步的文件系统事件监控机制.Linux 内科从 2.6.13 起支持 inotify Inotify 实现的几款软件:Inotify,sersync,lsyncd ※Inotify 实 ...
- Centos7搭建日志服务器rsyslog+loganalyzer
一.系统环境 Rsyslog Server OS:CentOS 7 Rsyslog Server IP:172.28.194.118 Rsyslog Version: rsyslog-7.4.7-12 ...
- 随笔3 HashMap<K,V>
equals.hashcode和==的区别 在介绍HashMap之前,我想先阐述一下我对这三者的理解,equals这个方法呢,就是在判断是否为同一对象(注意,这里的同一对象和相同的内存地址是不同的), ...
- Linux 性能测试工具 sysbench 的安装与简单使用
文章目录 Linux 性能测试工具 sysbench 的安装与简单使用 一 背景 二 实验环境 2.1 操作系统 2.2 其他配 ...
- CSS3选择器 ::before和::after
:before和:after伪元素的用法 :before和:after伪元素的用法十分简单:下面的代码样例中, :before 和 :after 将会在 blockquote 元素之前和之后插入新内容 ...
- flask之jinjia2模板
一:渲染模板 app.run(debug=True) 开启debug模式,flask框架自动提示错误提示的页面显示. 视图函数 from flask import Flask from flask ...