jsp

一.jsp语法
1.表达式:是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。

jsp表达式:用于将程序数据输出到客户端,它将要输出的变量或者表达式直接封装以"<%="开头和以"%>"结尾的标记中
<%=expression %>

2.语法

 <% 
 int x = 3;
 out.println(x);
 %>

3.jsp 的脚本片段
是指嵌套在<% 和 %>之中的一条或多条Java程序代码,需严格遵守Java规范

 <% for(int i=0;i<3;i++){%>
    <%=i+1 %>(表达式)
<%}%>

4.jsp的声明:在 JSP 页面中 , 可以声明一个或者多个合法的变量和
方法 , 声明后的变量和方法可以在本JSP 页面的任何位置使用 , 并将在 JSP 页面初始化时被初始化

为什么声明:当jsp页面被翻译成servlet程序时jsp中包含的,脚本片段,表达式,模板元素都将转换成servlet中的_jspService()方法的程序代码,它们都将成为_jspService()方法的局部变量,脚本片段中定义的方法,会出现方法中定义方法,这样的语法是错误的。

声明方式:<%! %>

   <%!
   java a代码 
   %>

此时jsp中定义的都是成员方法,变量....

5.注释:<%-- --%>

6.jsp指令
page指令:对页面的某些特性进行描述

格式:<%@page 属性名="属性值" %>

page属性的常用指令

 1.language            指明采用的语言
 2.extends             继承那个类
 3.session             是否内置session对象(true,false)
 4.autoFlush           指明是否运行缓存
 5.buffer              指定缓存大小autoFlush 设为true时有效(none,数字+KB)
 6.errorPage           指定一个错误页面
 7.contentType         根据属性判断文档类型
 8.import              导入的包或类
 注意:在这些常见属性中除了import外其他属性只能出现一次,否则编译会失败

7.errorPage属性指定错误页面

指定页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="error.jsp"%><html>
<head>
<title>Insert title here</title>
</head>
<body>
<% 
int a=1/0;//编译期间会报错  错误原因 java.lang.ArithmeticException: / by zero
%>
</body>
</html>

处理页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
           异常正在处理....
</body>
</html>

8.web.xml文件配置通用的错误页面

<error-page>
  <error-code>404</error-code>
  <location>/404.jsp</location>
</error-page>

9.include指令:静态包含一个文件

<%@include file="relativeURL" %>
  1. <%@ taglib ... %> 引入标签库的定义,可以是自定义标签

11.jsp隐式对象(因为这些对象需频繁使用每次创建对象很麻烦,所以jsp提供了9个隐式对象,可以直接拿来用)

对象名称 类型 描述
out javax.servlet.jsp.JspWriter 用于页面输出
request javax.servlet.http.HttpServletRequest 得到用户请求
response javax.servlet.http.HttpServletResponse 响应请求信息
config javax.servlet.ServletConfig 服务器配置
session javax.servlet.http.HttpSession 用来保存用户信息
application javax.servlet.ServletContext 所有用户共享信息
page java.lang.Object 指当前页面转换后的Servlet类的实例
pageContext javax.servlet.jsp.PageContext jsp的页面容器
exception Java.lang.Throwable jsp页面发生异常错误页面中才起作用

out对象
Servlet引擎<----pesponse缓冲区<-----JspWriter对象的缓冲区<----调用out隐式对象

可以看出out隐式对象直接调用的  没有response.getWriter的"快"

只有调用了ServletResponse.getWriter()方法缓冲区的数据才能写入到servlet引擎所提供的的缓冲区中

  希望out对象可以直接写入Servlet引擎提供的缓冲区,这是可以通过page指令中的buffer属性来实现(buffer=0KB)

pageContext对象:可以用它获取JSP的隐式对象如:

  HttpServletRequest req = (HttpServletRequest)pageContext.getRequest();

还提供了存储数据功能

setAttribute(String name ,Object value,int scope)
getAttribute(String name ,int scope)scope可以不写

范围如下

    pageContext.PAGE_SCOPE
    pageContext.REQUEST_SCOPE
    pageContext.SESSION_SCOPE
    pageContext.APPLICATION_SCOPE

12.jsp标签
<jsp:include>标签表示包含一个静态的或者动态的文件。
语法:

<jsp:include page="path" flush="true" /> 
or 
<jsp:include page="path" flush="true"> 
<jsp:param name="paramName" value="paramValue" /> 
</jsp:include> 

注:
1、page="path" 为相对路径,或者代表相对路径的表达式。
2、flush="true" 必须使用flush为true,它默认值是false。
3、<jsp:param>子句能让你传递一个或多个参数给动态文件,也可在一个页面中 使用多个<jsp:param> 来传递多个参数给动态文件。

<jsp:forward>标签表示重定向一个静态html/jsp的文件,或者是一个程序段。
语法:

<jsp:forward page="path"} /> 
or 
<jsp:forward page="path"} > 
<jsp:param name="paramName" value="paramValue" />…… 
</jsp:forward> 

注:
1、page="path" 为一个表达式,或者一个字符串。
2、<jsp:param> name 指定参数名,value指定参数值。参数被发送到一个动态
文件,参数可以是一个或多个值,而这个文件却必须是动态文件。要传递多个参
数,则可以在一个 JSP文件中使用多个<jsp:param>将多个参数发送到一个动态
文件中。

13.静态包含和动态包含
动态包含:<jsp:include page="地址(xxx.jsp)"></jsp:include>包含的页面是独立包含,即主页面与子页面互不影响

静态包含:<%@include file="地址(xxx.jsp)"%>
包含的页面是父页面的子页面作为父页面的一部分来调用会共享父页面的变量
路径会有重复需删除子页面的路径

14.四大域对象

实际开发中:存放数据的。

PageContext:页面范围。最小。开发中很少用。演示代码。
ServletRequest:请求范围。不同的资源,只有用转发。
HttpSession:会话范围。多次请求共享数据,但不同的客户端不能共享。
ServletContext:应用范围。最大。尽量少用。用时要做同步处理。

15.JSP开发的最佳实践
Servlet:擅长写Java代码逻辑,不擅长输出html的内容。
开发中作为:控制器。
JSP:不擅长写Java代码逻辑,擅长显示结果。
开发中作为:视图(显示结果)

16.JavaBean的概念
1、JavaBean又称之为POJO(Plain Old Java Object)、VO(Value Object)、DO(Data Object)
2、JavaBean的书写规范

a、必须是public的
b、提供默认的构造方法
c、字段都是私有的: private String username;
d、提供公有的getter或setter方法:属性。
getUsername():读属性,属性名:username.
setUsername(String username):写属性,属性名:username。
e、一般需要实现java.io.Serializable接口。
 
结论:JavaBean在JavaEE开发中,主要担当封装数据用的。

17.JSP中使用JavaBean:导入JavaBean:用page指令的import

18.总结:

JSP+JavaBean,开发模型,Model1(模型1)
Servlet+JSP+JavaBean,开发模型,Model2(模型2)

Mvc:Model-view-controller
1.model--->javabean要求表单数属性名,bean中属性名和字段名要统一
2.view--->jsp即视图
3.Controller--->servlet即控制器
4.model一般的命名规范:entity,model,pojo,dto
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容

  • JSP总结(经典) day1 JSP 定义: 1)Java Server Page, Java EE 组件,本...
    java日记阅读 3,431评论 0 13
  • 前面讲了servlet入门实践现在开始介绍jsp入门实践,开发环境的搭建请参考我前面的tomcat的文章,jsp入...
    伊豚wall阅读 3,368评论 2 56
  • 下面是我整理下来的JSP知识点: 图上的知识点都可以在我其他的文章内找到相应内容。 JSP常见面试题 jsp静态包...
    Java3y阅读 1,308评论 0 4
  • 什么是jsp? 很久之前,我们的网页都是静态的,就是我们所看到的页面在编写好之后总是唯一的。后来有人便提出动态页面...
    ezsync小智阅读 1,509评论 0 13
  • “浓缩即是精华”常常用来比喻身材矮小之人却能作出令人佩服的事。以前有人那它来形容拿破仑,后来有人拿它来形容潘长江,...
    放空自己92阅读 477评论 0 0