java基础80 JSP基础知识点(网页知识)
1、jsp的引入
Servlet的作用:用java语言开发动态资源技术!!!
Jsp的作用:用java语言(+html语言)开发的动态资源技术!!! Jsp就是servlet
问题:为什么jsp就是servlet?
因为:Jsp翻译成java文件
public final class hello_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent
即:
org.apache.jasper.runtime.HttpJspBase类:extends org.apache.jasper.runtime.HttpServlet implemets javax.servlet.jsp.HttpjspPage
结论:jsp就是一个servlet程序,Servlet的技术可以用在jsp中,Jsp技术并不是全部使用于servlet
2、jsp的特点
1)jsp的运行必须交给tomcat服务器。 Tomcat的work目录:tomcat服务器存放jsp运行时的临时文件
2)jsp页面既可以写html代码,也可以java代码。 (html页面不能写java代码,而jsp页面是可以写java代码)
3、jsp的执行过程
1、访问hello.jsp页面,tomcat扫描jsp文件,apache-tomcat-7.0.73\work把jsp文件翻译成java源文件:hello.jsp ----> hello_jsp.java(翻译)
2、tomcat服务器把java源文件编译成class字节码文件:hello_jsp.java ---> hello_jsp.class(编译)
3、tomcat服务器构造hello_jsp类的对象
4、tomcat服务器调用hello_jsp类里面的方法,返回内容显示到浏览器
<%@ page language="java" import="java.util.*,java.text.*" pageEncoding="utf-8" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'hello.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>
<%
//这里写的都是java代码
//获取当前时间
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String curTime=format.format(new Date());
//输出内容到浏览器(下面两个效果是一样的)
response.getWriter().write(curTime);
//out.write(curTime);
%>
</body>
</html>
注意:jsp文件被修改或者jsp临时文件被删除了,重新走编译1和编译2的过程
4、Jsp的生命周期
Jsp的生命周期 | Servlet的生命周期 |
1、翻译:jsp-java文件 2、编译:java文件-class文件(servlet程序 3、构造方法(第一次方法) 4、Init方法(第一次访问):jspinit() 5、Service方法:jspService() 6、Destroy方法:jspDestory(); |
1、构造方法(第一次访问) 2、Init方法(第一次访问) 3、Service方法 4、Destroy方法 |
5、jsp的语法
5.1、jsp的表达式
语法:<%=变量或表达式%>
作用:向浏览器输出变量值或者表达式计算的结果
注意:
1)表达式的原理就是翻译成了out.print(“变量”);通过该方法向浏览器写出内容
2)表达式后面不需要带分号结束
5.2、jsp的脚本
语法:<%java代码%>
作用:执行java代码
注意:原理把脚本中的java代码原封不动拷贝到jspService方法中执行
5.3、jsp的声明
语法:<%!变量或方法%>
作用:声明jsp的变量或方法
注意:变量翻译成成员变量,方法翻译成成员方法.
5.4、jsp的注释
语法:<%-- jsp注释--%>
注意:html注释会被翻译和执行,而jsp的注释不能被翻译和执行
6、jsp中的三大指令
6.1、include指令
作用:在当前页面用于包含其他页面
语法:%@include file=”common/header.jsp”%
注意:
1、原理是把被包含的页面(header.jsp)的内容翻译到包含页面(index.jsp),合并翻译成一个java源文件,再编译运行,这种包含叫静态包含(源码包含)
2、如果使用静态包含,被包含的页面不需要出现全局的html标签(源码包含)
6.2、page指令
<%@ page language="java" import="java.util.*,java.text.*" pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>
解析:
language="java" //告诉我们的服务使用什么语言来翻译jsp文件
import="java.util.*,java.text.*" //告诉服务器java文件使用什么包,导入包,多个包之间用逗号分割
pageEncoding="utf-8" //告诉服务器使用什么编码翻译jsp文件(成java文件)
contentType="text/html; charset=utf-8" //服务器发送浏览器的数据类型和内容编码
Errorpage=”error.page” //错误页面
IsErrorpage=”fasle”; //判断是不是错误页面
Buffer=”8kb” //页面缓冲区的大小
Session=”true” //是否能够使用session
IsElIgnored=”false” //是否忽略EL表达式
6.3、taglib指令
附录1
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'script.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>
<!--jsp表达式-->
<%
//变量
String name="jack";
int a=10;
int b=20;
//System.out.println(name);
%>
<%=name %>
<br/>
<%=(a-b) %>
<br/> <!--jsp脚本-->
<%
//生成随机数
Random ran=new Random();
float num=ran.nextFloat();
%>
<%=num %>
<hr/> <!--练习:使用脚本和html代码显示99乘法表-->
<%
String[] color={"red","green","blue"};
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
out.print("<span style='color:"+color[i%3]+"'>"+j+"*"+i+"="+(i*j)+" </span>");
%>
<%=i%> x <%=j%>=<%=(i*j)%> <!-- 这行代码和上面的out.print();是一样的,都是向页面输出 -->
<%
}
%>
<br/>
<%
}
%> <!--html的注释方式-->
<%--jsp的注释--%>
<%!
//变量
String name="rose"; /*
jsp声明中不能重复定义翻译一些方法
public void _jspInit() {}
*/
%>
</body>
</html>
附录2
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" buffer="1kb" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'MyJsp.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>
<%
//方法1:顶部设置缓冲区的大小为1Kb(buffer="1kb")
for(int i=1;i<=500;i++){
out.write("123");
}
//查看缓冲区大小
System.out.println("当前缓冲区的大小:"+out.getBufferSize());
//查看缓冲区剩余大小
System.out.println("剩余缓冲区大小:"+out.getRemaining());
//方法2:刷新缓存
//out.flush(); response.getWriter().write("a"); //解析:方法1或2,都能让123先输出来,最后输出a;如果两者都去掉,那么先输出a,后输出123.
%>
</body>
</html>
附录3
web.xml 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<error-page>
<error-code>500</error-code>
<location>/common/500.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/common/404.html</location>
</error-page>
</web-app>
用户当前访问的页面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'page.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>
<%
String name=null;
name.charAt(1); //这里是一个错误; charAt:这是一个字符串,括号里填1(整形)的话 就错了
%>
</body>
</html>
用户访问后,处理错误信息的页面(显示给用户看的页面)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"
isErrorPage="true" <!-- 这里要声明为错误页面 -->
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>错误页面500.jsp</title>
</head> <body>
亲:系统发送小小的错误,请耐心等待,管理员正在拼命维修中....
错误的原理:<%=exception.getMessage() %>
</body>
</html>
原创作者:DSHORE 作者主页:http://www.cnblogs.com/dshore123/ 原文出自:https://www.cnblogs.com/dshore123/p/9623946.html 欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!) |
java基础80 JSP基础知识点(网页知识)的更多相关文章
- Java Web基础:JSP基础概念
JSP介绍 JSP全称是Java Server Pages,它和Servlet都是Sun公司定义的用于开发动态Web资源的技术,它解决了Servlet输出流排版复杂和难以维护的问题.JSP完美融合了H ...
- java基础75 xpth技术(网页知识)
1.xpth技术 1.1.xpath的作用 主要用于快速获取所需的节点对象. list<Node> selectNodes("xpath"); 查询多个节点对象 ...
- Java学习-033-JavaWeb_002 -- 网页标记语言JSP基础知识
JSP 是 Sun 公司提倡的一门网页技术标准.在 HTML 文件中,加入 Java 代码就构成了 JSP 网页,当 Web 服务器访问 JSP 请求的时候,首先执行其中的 Java 程序源码,然后以 ...
- Java基础83 JSP标签及jsp自定义标签(网页知识)
1.JSP标签 替代jsp脚本,用于jsp中执行java代码1.1.内置标签: <jsp:forward></jsp:forward> 相当于:request.getReu ...
- [Java面试三]JavaWeb基础知识总结.
1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供外界访问的Web资源分为: • 静 ...
- JSP基础--JAVA遇见HTML
1.手工编写第一个WEB应用程序 2.默认访问服务器网页首页欢迎界面是 index.jsp,就是网页链接访问其所在的文件夹目录,不访问这个文件,也会自动访问的.如果这个文件夹目录下没有index.js ...
- JAVAWeb入门之JSP基础知识
也是到了考试周,很多课都结了,准备去学点新东西.随后就开始自学JAVAWeb. 要学习JAVAWeb,首先需下面的知识: a) HTML/CSS/JS(前端页面),XML,JSON,vue ...
- java jsp基础介绍
1 Jsp基础 1.1 Jsp介绍 JSP(全称Java Server Pages)是一种web动态网页开发技术,通过标签和指令完成用户界面开发和交互操作.它使用J ...
- JavaEE系列之(一)JSP基础知识详解
一.JSP基础语法 1.JSP简介 JSP(Java Server Pages),其根本是一个简化的Servlet设计,它实现了在Java中使用HTML标签.JSP是一种动态网页 ...
随机推荐
- 如何使用android design support library
Android应用Design Support Library完全使用实例 - OPEN 开发经验库http://www.open-open.com/lib/view/open143338585611 ...
- python小专题——urllib2模块
Python 标准库中有很多实用的工具类,但是在具体使用时,标准库文档上对使用细节描述的并不清楚,比如 urllib2 这个 HTTP 客户端库.这里总结了一些 urllib2 库的使用细节. 1 P ...
- python的filter函数的使用方法详解以及使用案例,是否以什么结尾,是否大于什么(判断是True,则留下来)
1.总共有3个人看电影,有2个人看电影经常说话,我们把他们两个过滤出去 move_people=["gouguoqi","beiye_sb","xiu ...
- P2831 愤怒的小鸟
P2831 愤怒的小鸟 从 \((0, 0)\) 发射一只鸟, 轨迹满足抛物线, 问最少几只鸟可以打完 \(n <= 18\) 只猪 错误日志: 处理抛物线数组没有初始化 Solution 数据 ...
- MySQL数据库语法-多表查询练习一
MySQL数据库语法-多表查询练习一 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要介绍的多表查询的外键约束,以及如何使用外链接和内连接查询数据信息. 一.数据表和测试 ...
- Ubuntu14.04 Tab键自动补全
Unbuntu14.04 终端中使用Tab键不能自动补全 解决方案 1.利用vi编辑器打开 /etc/bash.bashrc文件(需要root权限) sudo vi /etc/bash.bashrc ...
- codevs 3369 膜拜(线型)
3369 膜拜 http://codevs.cn/problem/3369/ 题目描述 Description 神牛有很多…当然…每个同学都有自己衷心膜拜的神牛.某学校有两位神牛,神牛甲和神牛乙.新入 ...
- codevs 3152 装箱问题3
装箱问题3 http://codevs.cn/problem/3152/ 题目描述 Description 设有n种物品,记作A1.A2.….An,对应于每个Ai(1<=i<=n)都有一个 ...
- HDU 5928 DP 凸包graham
给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也 ...
- Writing your first academic paper
Writing your first academic paper If you are working in academics (and you are if you are working wi ...