码迷,mamicode.com
首页 > Web开发 > 详细

jsp

时间:2015-09-01 01:48:45      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:java web   jsp   

在开发过程中,servlet做界面非常不便,这时把servlet包装一下,产生了jsp,如下

技术分享

然而servlet并没有丢弃,在实际开发中servlet通常用作控制处理;jsp做界面,比较符合mvc模式。

1、jsp语法

(1)<%=表达式%>

(2)<% %>里面可以嵌套java片段,这些片段最终被翻译在servletservice函数中。所以尽管有多个<% %>但还是相当于一个<% %>。由此可见,在<% %>里面定义的变量,是局部变量。如下:

JSP页面

<!DOCTYPE HTML >

<html>

  <head>

    <base href="<%=basePath%>">

    <meta http-equiv="pragma"content="no-cache">

    <meta http-equiv="cache-control"content="no-cache">

    <meta http-equiv="expires"content="0">   

   </head>

   <body>

     <% int i=3;%>

     <% int  j=7; %>

     <% int k=i+j; %>

   </body>

 </html>

  翻译为servlet文件,起其service方法的部分代码如下:

out.write("\t<metahttp-equiv=\"pragma\" content=\"no-cache\">\r\n");

     out.write("\t<meta http-equiv=\"cache-control\"content=\"no-cache\">\r\n");

     out.write("\t<meta http-equiv=\"expires\"content=\"0\">   \r\n");

     out.write("   </head>\r\n");

     out.write("  <body>\r\n");

     out.write("     ");

 inti=3;

     out.write("\r\n");

     out.write("     ");

 int j=7;

     out.write("\r\n");

     out.write("     ");

 intk=i+j;

     out.write("\r\n");

     out.write("   </body>\r\n");

     out.write(" </html>\r\n");

 

(3)<%!  %>中可以定义变量或方法,在此处定义的变量为全局变量,被翻译为servlet类的类变量。

(4)<!--  -->html注释方式,可以使用在jsp中,但此注释会被返回给浏览器端,造成额外数据量的传输;

   <%--   --%>  jsp注释,此种方式的注释,不会返回给浏览器,只能在服务器端看得到。

(5)jsp中的tag是通过servlet的out对象输出到浏览器端的。

2、jsp指令标签

 

 指令元素:用于从jsp发送一个信息到容器,比如:设置字符编码,全局变量,引入包等。起其格式如下:<%@ 指令名属性名=”属性值”>

(1)page指令

 <%@ page contentType=”text/html; charset=”utf-8"%>

参数

默认值

释义

language

language=”java”

jsp中嵌入的语言

contentType

contentType=”text/html;charset=utf-8”

设定MIME类型及JSP页面的编码方式

pageEncoding

Utf-8

指定servlet引擎易哪种编码方式翻译jsp到servlet,并指定网页以什么编码方式显示页面

import

import=”java.util.*”

引入JSP页面使用的Java API

session

true

是否在jsp页面创建session对象

buffer

8k

决定输出流是否使用缓冲区,默认为8K

autoFlash

true

当buffer满后,是否自动刷新到浏览器

errorPage

 

当jsp页面出错时,跳转到指定的JSP页面;要求使用相对路径,当”/”开始时,表示当前web应用的根目录,如果不以”/”开头则表示相对本jsp页面

isErrorPage

false

设定此jsp页面是否为处理异常的页面,当isErrorPage为true时,就可以在此页面中访问内置的exception对象,进而进行异常处理,显示一些提示信息等。此页面就可以被其他jsp页面中的errorPage属性引用了。

isELIgnored

false

设定jsp页面是否执行el表达式

(2)include指令

<%@ include=”finename”  %>

该指令用于引入一个文件,通常是html、JSP文件,JSP引擎会把这两个JSP文件翻译成一个servlet文件,也称为静态引入。静态引入只是简单的将页面内容合并,所以若在多个jsp页面出现重复变量,在jsp编译为class文件时就会报错。所以被引入的htmljsp文件只需保留page指令即可,<body>标签均要省略。

动作标签<jsp:include>也称为动态引入,动态引入是分别编译的,之后再把html进行合并。<jsp:include>元素允许引入静态文件和动态文件。如果是静态文件,则只是将文件内容进行合并;若是动态文件,那么这个包含的的文件也会被编译执行的。

(3)taglib指令

这个指令允许在JSP页面使用自定义的标签,如

<%@ taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c"%>

3、动作标签

动作标签是使用xml语法写的,是JSP规定的一系列标准动作。在容器处理JSP时,当遇到动作元素,就执行相应的操作。

指令

描述

<jsp:include>

引入一个动态的文件。静态引入与动态引入的区别:动态引入把两个JSP页面分别翻译、编译;所以被引入的jsp中可以包含<body>等标签

<jsp:forward>

请求转发.在开发jsp过程中,通常把jsp放入WEB-INF目录下,可以防止用户直接访问这些文件。因为服务器是不会直接让外界来访问WEB-INF目下的文件,这时我们可以在webRoot下有一个入口页面,主要作用是转发,如下

<jsp:forward page=”WEB-INF/xxx.jsp”></jsp:forward>

<jsp:param>

为其他指令提供附加信息,如传递参数,常常与<jsp:include>结合使用

<jsp:include file=”info.jsp”>

<jsp:param name=”param1” value=”value1”/>

<jsp:param name=”param2” value=”value2”/>

</jsp:include>

<jsp:plugin>

在浏览器中执行一个applet或Bean

<jsp:fallback>

Java插件不能启动时显示给用户的错误提示

<jsp:useBean>

找到并实例化一个JavaBean

<jsp:setProperty>

设置一个JavaBean属性

<jsp:getProperty>

将JavaBean的属性插入到输出点

4、jsp内置对象

内置对象

描述

out

输出流,对应Servlet的getWriter

request

对应servlet的HttpServletRequest对象

response

对应servlet的HttpServletResponse对象

session

对应 servlet的HttpSession对象

application

对应servlet的ServletContext对象

pageContext

代表当前jsp页面,只在当前页面内有效

exception

代表运行时的一个异常

page

代表jsp这个实例本身,相当servlet中的this对象

config

对应servlet的ServletConfig对象

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

jsp

标签:java web   jsp   

原文地址:http://blog.csdn.net/sunshuolei/article/details/48144545

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!