WEB17JSP

1.jsp的简介( java服务器页面)

在开发动态web工程时,是在servlet中用java代码写得,但是这样写非常不方便,后来出现php在html中嵌入响应语言,之后java发明者效仿,在html中嵌入java代码,甚至把jsp代替了servlet技术,但是随着业务复杂性的增长,人们结合servlet和jsp。servlet擅长编写java代码,jsp擅长显示页面。jsp也是在服务器运行的代码,其根本就是一个简化的servlet设计,所以jsp本质就是一个servlet。 

2.jsp脚本和注释

  <% int i = 0; %>
  <%=i %>>
  <%! String s = "Wu han com on"; %>
  <%=s %>
  <%--这是jsp的注释 --%>

(1)jsp的三种脚本:<%java代码%> --会被翻译到service方法内部;<%! java%>会被翻译到servlet的成员中;<%=变量或者表达式%> 翻译到out.write()中

(2)注释:<%--   --%> 只在jsp源码中可见,翻译中没有; html的注释 显示在源码,翻译中,页面中;java注释在源码和翻译中可见。

讲述三种脚本的区别之前,先介绍一下jsp的运行过程:我们在运行完项目之后,打开项目上的work文件夹里面的翻译的jsp代码,我们可以看到这个源码,其实他就是一个servlet,我们写得jsp中的java代码被翻译过来。所以我们看到了三种脚本的区别,常用的也就是<% %> <%=%>, 访问hello.jsp----->找work文件中的hello_jsp.java  在编译。第一次访问的时候web容器会翻译成servlet,在执行。

3面试问题 jsp本质是servlet,或者是过程,第一次访问jsp文件的时候,去找work文件中有没有这个被翻译的.java文件,如果没有就翻译,在web.xml中可以查看到,jsp会被tomcat中的一个servlet翻译。

WEB17JSP_第1张图片

4jsp的指令(3个)

(1)page指令,属性最多的,在实际开发中选择默认就可以了。  

language:是jsp中可以嵌套的语言,

pageEncoding等同于设置文件的properties的编码格式。并且tomcat翻译成servlet代码response.setContentType("text/html;charset=utf-8");   

session:jsp在翻译的时候是否要自动创建session

import 导包

errorPage 当java代码报错的时候页面可以往哪里跳   isErrorPage 是否是错误页面

(2)include指令 包含其他jsp,作用,如果很多页面有共同的头和尾 就可以将共同的东西被页面包含起来,如果想改头,只改一处,变化所有地方。

(3)taglib是引入标签库用的。 后面指明的是在哪个库里面。后面会学到

5.jsp的九大内置对象/隐式对象(不用创建,就可以直接使用的对象)因为翻译成的servlet中已经定义好了

(1)session(2)request(3)response(4)application

(5)out 向客户端输出内容的。out.write()  在jsp中四种方式,

aaaaa
<% out.write()

 response.getWriter().write()
%>

<%=""%>

但是response先向页面输出内容。但是out缓冲区可以关掉在page指令的属性buffer里  缓冲区大小默认8kb  当buffer = “0kb” 既可以关掉。内容直接写道response缓冲区。WEB17JSP_第2张图片 

(6)pageContext是本页面的对象,他是一个域对象,但是他可以向其他页面中村取数据。 

<%
    	//1.用pageContext向request域中存储数据
    	request.setAttribute("name", "cs123");
    	response.getWriter().write(request.getAttribute("name")+"");
    	
    	pageContext.setAttribute("name", "zhangsan", PageContext.REQUEST_SCOPE);
     %>

6jsp的动作/标签

我们认识两个:jsp:include page=;jsp:forward page=

面试题:动态包含和静态包含的区别?静态包含在work文件夹下先将包含的和自己合在一起翻译,看不到被包含的jsp,而动态包含不会合在一起,而且会存在被翻译的包含文件的翻译文件。动态文件在编译运行的时候才找包含的文件。WEB17JSP_第3张图片

 
   //记住后面的结束符
    This is include1 page. 
//记住后面的结束符

7案例 完成页面的信息从数据库中读取

我们使用三层框架的设计结构,domain包中放实体,servlet中放java代码,jsp中写页面的代码。其实我们可以写一个jsp实现该功能,但是这里我们分开写,首先去数据库中获取信息,是用servlet写得,获取的数据存放在request域中,转发给jsp,向页面展示,我们可以想象成两个servlet互相转发。之前学的request转发是 request.setAttriute(name,value)  在获取转发器,用forward(request,response)发送给其他的servlet。WEB17JSP_第4张图片

 

你可能感兴趣的:(Javaweb教程)