web.xml、JSP原理、指令

web应用和web.xml

  1. JSP(java server page)本质是servlet,因为JSP最终要编译成servlet才能运行。
  2. Tomcat的webapps路径下的web项目中的WEB-INF路径下的classes文件夹用于保存*.class文件,lib文件夹用于保存打包后的JAR文件。
  3. 布置到Tomcat中的项目才能通过链接形式(http)访问到。
  4. 从servlet3.0开始,WEB-INF路径下的web.xml文件不再是必须的,但通常建议保留。
  5. 客户端浏览器无法访问到WEB-INF路径下的任何内容。
  6. 在servlet3.0规范中,web.xml文件的根<web-app.../>新增了metadata-complete属性,该属性为true时,则该web应用将不会加载注解配置的web组件(如servlet、Filter、Listener等)。
  7. Tomcat的系统web.xml文件放在Tomcat的conf路径下。

JSP原理

  1. JSP页面的内容由静态部分(html标签)和动态部分(JSP脚本)组成。
  2. Tomcat会根据JSP页面生成对应的servlet的java文件和class文件。如:名为test.jsp的JSP页面生成的是test_jsp.java文件和test_jsp.class文件。JSP页面中的所有内容都由test_jsp.java文件的页面输出流生成。
  3. jsp执行过程:.jsp页面文件—>翻译阶段生成.java文件—>编译环节生成.class文件。 与java相比,jsp多了一个翻译成 .java文件的过程。
  4. JSP文件必须在JSP服务器内运行,且必须生成servlet才能运行。
  5. 每个JSP页面的第1个访问者的速度很慢,因为要等待JSP编译成servlet。
  6. JSP页面输送到客户端的标签HTML页面,所以可以直接访问。

JSP基本语法

我用表格来对比分析,便于记忆:

名称语法
HTML注释<!-- 被注释内容 -->
JSP注释<%-- 被注释内容 -->
JSP脚本<% 脚本内容 %>也可声明变量,但声明的是局部变量
JSP声时<%! 声明变量 %>
JSP输出<%=表达式%>表达式中不能有分号,等价于<%out.print(“内容”)%>

JSP的3个编译指令(page、include、taglib)

  1. 编译指令 是 带有默认值的通知JSP引擎的处理消息。在JSP编译成servlet时起作用。
  2. 编译指令使用语法:<%@ 指令名 属性名=“属性值”%>
  3. page编译指令 用于定义当前JSP页面的一些属性。
    例:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

属性表:

属性名说明
language=”java”说明当前jsp所支持的脚本语言种类。这里支持java
extends指定JSP页面编译所产生的java类所继承的父类,或实现的接口
import用来导包,有些包是默认导进来的,如java.lang.*
pageEncoding设置jsp页面的编码格式 (同时要注意的jsp文件右键属性里的设置是不是已经改utf-8的格式)
ContentType设置浏览器查看这个页面时使用的编码格式
session=”true”说明当前页面是否使用session
isELIgnored当前页面是否使用EL表达式
buffer页面默认的缓冲区大小 默认 8kb
autoFlush是否自动刷新
errorPage指定的错误页面
isErrorPage当前页是否错误页面
info设置该JSP程序的信息,该信息在JSP页面可直接通过getServletInfo()获得

4. include编译指令:用于导入另一个JSP页面代码,也就静态导入。 如:<%@include file="jspDemo1.jsp" %>
5. taglib编译指令:用于定义和访问自定义标签。
如:<%@taglib file="jspUrl" %>

JSP的7个动作指令

动作指令是JSP运行时的动作,可用JSP脚 本替换。

include

<jsp:include page="jspDemo1.jsp"></jsp:include>
<!-- 动态导入其它jsp的运行结果-->

forward
用于页面跳转,仍是一次请求,转发时请求的参数、属性都不会变。

<jsp:forward page="要跳转到的页面路径">
    <jsp:param value="值" name="key">
</jsp:forward>
<!-- 跳转到另一页面后,用key接收value里的值,也用<%request.getParameter("key")%>接收 -->

param
用于传递参数,可与forword、include、plugin动作指令结合使用,如上面代码。

<jsp:param name="key" value="val">

useBean

<jsp:useBean id="u" class="com.zrgk.model.Users" Scope="page"> </jsp:useBean>

用于在页面初始化一个Java实例,相当于:Users u=new Users();

id值:别名;
class的值:是要使用的javaBean类所在地址路径;
Scope:作用范围,page说明只能在当前页使用

setProperty
用于给实例属性赋值,相当于:u.setUserName(“筷子兄弟”);

 <jsp:setProperty property="username" name="u" value="筷子兄弟"/> 

property 的值是javabean的属性名,
name的值是实例的别名,
value的值是给属性赋的值

getProperty

<jsp:getProperty property="username" name="u"/>  

获取某个属性的值,相当于:u.getUserName();

页面的跳转与刷新

1.进入页面3秒后,自动跳转到jspDemol1.jsp页面 :

<meta http-equiv="Refresh"  content="3"; url=jspDemol1.jsp">

Refresh:说明是要跳转; content的值是等待时间(秒); url的值:跳转地址

2.隔3秒钟刷新当前页面:

<meta http-equiv="refresh" content="3">

静态导入与动态导入的区别

  1. 静态导入导的是另一个页面的代码,最终两个页面形成一个页面,从页只生成一个Servlet
  2. 动态导入导的是另一个页面执行后的结果,所以两个页面都有自己的servlet
  3. 静态导入时,被导页面的编译指令会起作用,所以,如果两个页面编译指令冲突会出错
  4. 动态导入可传参数
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值