jsp简介

1. 手工建立"web"应用:

  1. 在任意目录下建立文件夹,以WebDemo为例;
  2. 在该文件夹内建立WEB-INF文件夹(区分大小写),web容器会包含WEB-INF下的文件,但客户端浏览器无法访问该目录下的文件
  3. 进入Tomcat,找到任意web应用,将该应用WEB-INF下的web.xml文件复制到2中的文件夹内
  4. 修改复制后的web.xml文件,修改成只有一个根元素的文件,如图所示
  5. 在WEB-INF目录下新建两个文件夹:class和lib,两者都用于保存web应用所需的java类文件 ,区别是class保存单个*.class文件,lib保存打包的jar文件
  6. 将该应用复制到tomcat的webapps下,自动部署即可
  7. 通常只需将jsp文件放到根目录下,就可通过浏览器访问,文件结构如下所示

2.描述配置符web.xml(servlet3.0该文件非必需,但建议保留)

  • 负责配置的内容:配置JSP,标签库和JSP属性,配置管理servlet,filter和listener,JAAS授权认证和资源引用以及web首页
  • 根元素为<web-app.../>,包含metadata-complete属性,当该属性为true时,不会加载annotation配置的web组件(Filter/Servlet/Listener等)
  • 配置首页使用welcome-file-list元素配置首页,可包含多个welcome-file元素,每个元素配置一个首页
3.JSP基本原理
  • jsp由静态部分(html)和动态部分组成(java),每个jsp页面就是一个servlet实例
  • <%java脚本%>
  • 启动tomcat后,可在work\catalina\localhost\jspPrinciple\org\appach\jsp目录下找到(假设jsp名为test),test_jsp.java和test_jsp.class,这两个文件都有tomcat生成,tomcat根据jsp页面生成对应的servlet的java和class文件,jsp的所有内容都是对应的*_jsp.java页面输出流生成
  • servlet类主要包含以下三个方法(去掉_jsp前缀,将首字母小写):init《初始化jsp/servlet方法》,destroy《销毁jsp/servlet之前的方法》,service《对用户请求生成响应》
4.jsp注释
  • jsp注释:<%--注释内容--%>
  • html注释:<!--注释内容-->
  • html注释可以再客户端的源代码中看到,jsp的则不能
5.jsp声明
  • jsp声明会转换对应servlet的成员变量或成员方法
  • 声明:<%!声明部分%>,声明部分可用private,public,static(类成员和类方法)控制符修饰,但不能用abstract(servlet对应的成为抽象类,无法实例化)
  • jsp会编译成servlet类,每个servlet在容器中只有一个实例,jsp中声明的变量为成员变量,成员变量只在创建实例时初始化,该变量一直保存,知道实例销毁
6.输出jsp表达式
  • <%=表达式%>
  • 注:输出表达式后不能有”;“
7.jsp脚本
  • jsp脚本将转换成servlet类里的_jspService方法里的可执行代码,这意味着jsp脚本也可以声明变量,但是为局部变量,不可以被private,static等修饰,不可以定义方法。实际上jsp里的所有静态内容都由_jspService里的输出语句输出
8.jsp的三个编译命令
  • 语法:<%@编译指令名 属性名="属性值"…>
  • page指令
  • 通常位于文件顶端,一个jsp文件可包含多个page,
  • 各属性意义
  • languagae——当前jsp页面所使用的脚本语言种类
  • extends——java类继承的父类或实现的接口
  • import——导入包(默认导入包:java.lang.*;java.servlet.*;java.servlet.jsp.*;java.servlet.http.*)
  • sesssion——是否需要http session
  • buffer——指定缓冲区的大小。输出缓冲区的jsp内部对象:out用于缓存jsp页面对浏览器的输出,默认值为8kb,可以设为none,也可设为其他值(kb)
  • autoFlush——当缓冲区溢出时是否强制输出缓冲区的内容,true正常输出,false溢出时产生异常
  • info——设置jsp信息。可以通过Servlet.getServletInfo()方法获取。在jsp页面中可直接通过getServletInfo()方法获取,因为jsp本身就是一个servlet。
  • errorPage——制定错误处理页面,若Jsp页面产生异常或错误,而该jsp页面为进行处理的代码,则调用该属性的jsp页面<因为jsp内建了异常机制支持,所以可以不处理异常,即使是checked异常>,如果没有指定,则将异常信息呈现给客户端浏览器
  • isErrorPage——设置此jsp页面是否是异常处理程序
  • contentType设定生成网页的格式或编码字符集,即MIME格式和页面字符集类型,默认MIME为text/html,默认字符集为ISO-8859-1
  • pageEncoding——网页的编码字符集
  • include指令
  • include静态语句,会将目标页面的其他编译指令也包含进来,即可包含静态文本,也可包含动态jsp页面,会把被包含页面加入此页面,融合成一个页面,所以被加文件可以不是一个完整页面,编译时即被包含语法:<%@include file="页面"%>
  • taglib指令
9.jsp七个动作指令
  • 编译指令通知servlet引擎处理消息,在jsp编译成servlet时起作用,而动作指令在运行时起作用

  • <1  jsp:forward页面跳转

a.可跳转到HTML,jsp或容器的servlet

b.语法:

JSP1.0: <jsp:forward page="{relativeURL|<%=expression>}"/>

JSP1.1: <jsp:forward page="{relativeURL|<%=expression>}"

                  <jsp:param.../>

                </jsp:forward>

c.使用request内置对象获取传递的参数值

d.执行forward指令时。,地址栏地址不发生变化,单页面跳转,此外,客户端的请求参数不会丢失

e.<jsp:forward.../>指令并没有重新向新页面发送请求,而是用新页面响应用户请求,所以传递的参数和属性并不会丢失

  •  <2 jsp:param传递参数,必须与其他支持参数的标签一起使用

语法:<jsp:param name="" value=""/>

  • <3  jsp:include动态引入一个jsp页面

a.动态include指令,用于包含某个页面,仅仅将被导入页面的body内容插入本页面,而不会编译

b.语法:

<jsp:include page="{relativeURL|<%=expression%>}" flush="true"/>

或<jsp:include page="{relativeURL|<%=expression%>}" flush="true">

            <jsp:param name="" value=""/>

    <jsp:include/>

c.flush属性用于指定输出缓存是否转移到被导入页面,true 导入

d.静态导入和动态导入的区别:a.静态两个页面完全融合成一个servlet;b.静态导入页面的编译命令会起作用,动态则不;c.动态导入可以加入额外参数

  • <4  jsp:plugin下载javabean的applet到客户端运行
  • <5  jsp:useBean创建一个javaBean实例

a.语法:<jsp:useBean id="name" class="classname" scope="page|request|session|application"/>id为javabean的实例名,class确定实现类,scope指定作用范围。page——尽在该页面;request——仅本此请求;session——本次session内;application——本次应用内

b.在使用usebean标签时,会将javaBean实例放入scope中。格式如下:

  • <6  jsp:setProperty设置javaBean实例的属性值

语法:<jsp:setProperty name="beanname" property="pname" value=""/>

  • <7  jsp:getProperty获取javaBean实例的属性值

a.语法:<jsp:getProperty name="beanname" property="pname"/>

b.javabean中可以没有pname ,但须有setPname和getPname方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值