jsp与servlet 02

JSP

01.JSP(Java Server Pages )基础

1.引入

Servlet:是使用Java开发动态资源的技术

JSP:使用Java(+HTML)开发动态资源的技术

JSP(继承了HttpJspBase->HttpServlet)其实本质就是servlet

2.特点

  • jsp也需要交给服务器去运行
  • jsp中不仅仅可以写html代码也可以编写java代码

3.jsp之helloworld ,通过jsp在页面输出当前时间

<%--JSP的脚本:编写java代码--%>
    <%
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dStr = sdf.format(date);
    %>

    <%--JSP的表达式:向页面输出内容--%>
    <%=dStr%>

4.分析(了解)

tomcat home

-> work jsp翻译后的文件

hello.jsp 翻译成 hello_jsp.java

http://localhost:8088/myweb/hello.jsp

流程:

1.根据localhost找到对应的主机

2.根据8088找到主机上该端口对应的服务(tomcat)

3.myweb在tomcat的webapps中找到myweb这个目录

4.hello.jsp 将hello.jsp先翻译成hello_jsp.java源文件,再将该hello_jsp.java编译成字节码文件(.class)

创建该对象并执行相对应的生命周期的方法(构造 init service destory)

servlet生命周期:构造 init service destory

Jsp生命周期:翻译 编译 构造 init service destory

02.JSP语法

1.JSP脚本

通过jsp脚本,可以在jsp中编写java代码

<%    
jsp脚本
%>

<%
    int a = 12;
    String str = "hello world";
    System.out.println(a);
    System.out.println(str);
%>

在翻译成java源代码的时候,内容会被原封不动的拷贝到service方法中,变量是一个局部变量

2.JSP表达式

用于向页面输入内容

<%=表达式(可以是任意表达式、变量名)%>

<%--通过表达式向页面输出变量str的值--%>
<%=str%>

<%=6+8%>

3.JSP声明

可以在jsp声明中,声明变量或者函数

<%! 声明 %>
<%! int b = 24;
    String s = "hello igeekhome";
    public void test(){
        System.out.println("test method...");
    }

%>

会将声明中的变量作为实例变量(全局变量),方法会作为实例方法

4.JSP注释

<%-- 注释内容 --%>

不能使用HTML注释,因为jsp的注释不会被翻译并运行,而HTML注释会被翻译并运行

03.JSP的三大指令

1.include指令

主要用于当前页面包含其他的页面

语法规则:

<%@include file="footer.jsp"%>
file:需要包含的页面

是将包含页面与被包含页面翻译到了一个java文件中(包含页面中可以不需要写html以及body等标签了,直接写内容)–静态包含

2.page指令

作用:告诉服务器如何翻译jsp文件

语法规则:

<%@ page 
contentType="text/html;charset=UTF-8"  -- 告诉客户端以何种方式显示当前页面内容
language="java"                        -- 告诉服务端以何种语言翻译当前jsp文件
import="java.util.Date,java.text.SimpleDateFormat"  -- 导入包(需要在jsp中编写java代码)
isELIgnored="false"                     -- 是否忽略EL表达式(默认值false 不忽略)
isErrorPage="false"                     -- 当前页是否是错误处理页面,默认是false
errorPage=""                            -- 指定当前页的错误处理页
pageEncoding="UTF-8"                    -- 指定当前jsp文件的编码格式(如果设置了contentType该配置可以省略)
session="true"  %>                      -- 是否开启session功能(后面讲)

补充:全局异常处理页面(web.xml)

<!--配置全局错误处理页-->
    <error-page>
        <!--错误代码-->
        <error-code>404</error-code>
        <!--c错误处理页-->
        <location>/4xx.jsp</location>
    </error-page>

    <error-page>
        <error-code>500</error-code>
        <location>/5xx.jsp</location>
    </error-page>

3.taglib指令

用于引入外部的标签库(类似于添加第三方jar包)

04.JSP九大内置对象

内置对象?

在jsp中不需要创建就能够使用的对象(在jsp翻译之后产生的java源代码中service方法中已经给我们创建好了这些对象)

jsp的四个域对象:设置值、获取值,用于不同资源间数据共享

域对象的范围:由小到大

pageContext page的上下文对象,page域,只有在当前页面有效

pageContext.setAttribute("name","value");
pageContext.setAttribute(String name, Object value, int scope)  指定在哪个域中设值
eg:pageContext.setAttribute("name","张三",pageContext.REQUEST_SCOPE); 可以替换成下面一句
request.setAttribute("name","张三");

pageContext.getAttribute("name") 默认在page域中获取值(PAGE_SCOPE)
pageContext.getAttribute(String name, int scope) 在指定域中获取值 (REQUEST_SCOPE SESSION_SCOPE APPLICATION_SCOPE)
pageContext.findAttribute(String name) ;在page request session application四个域对象中查找值,分别从前往后找,找到为止,如果都不存在,则返回null

可以通过pageContext获取其他八个内置对象
abstract  JspWriter getOut() 
          The current value of the out object (a JspWriter). 
abstract  Exception getException() 
          The current value of the exception object (an Exception). 
abstract  Object getPage() 
          The current value of the page object (In a Servlet environment, this is an instance of javax.servlet.Servlet). 
abstract  ServletRequest getRequest() 
          The current value of the request object (a ServletRequest). 
abstract  ServletResponse getResponse() 
          The current value of the response object (a ServletResponse). 
abstract  ServletConfig getServletConfig() 
          The ServletConfig instance. 
abstract  ServletContext getServletContext() 
          The ServletContext instance. 
abstract  HttpSession getSession()  


request HttpServletRequest request域,必须是同一个请求(转发)

session HttpSession session域 ,只要是同一个会话,就能共享数据

application ServeltContext application域 整个应用共享这一个对象

response

out 类似response.getWriter().write("") 向页面输出内容

exception 异常对象 前提必须声明当前jsp的isErrorPage=“true”

page 当前的页面对象

config 配置对象

05. 动作标签

sun规范:建议尽量在jsp中少写甚至不写java代码

所以需要使用一些标签替换java代码

1.jsp:include标签

动态包含

<jsp:include page="sub.jsp"></jsp:include>

包含页面与被包含页面会被分别翻译成两个不同的java文件,是在运行时再组合成一个页面

2.jsp:forward标签 转发标签

<jsp:forward page="01.语法-jsp脚本.jsp"></jsp:forward>

EL+JSTL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值