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"%>

Insert title here


<% 
int a=1/0;//编译期间会报错  错误原因 java.lang.ArithmeticException: / by zero
%>



处理页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>




Insert title here


           异常正在处理....


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


  404
  /404.jsp

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标签
标签表示包含一个静态的或者动态的文件。
语法:

 
or 
 
 
 

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

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

 
or 
 
…… 
 

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

13.静态包含和动态包含
动态包含:包含的页面是独立包含,即主页面与子页面互不影响

静态包含:<%@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

你可能感兴趣的:(jsp)