javaweb之jsp(jsp的元素分类)的详细介绍及应用(超详细)

it2022-05-05  136

一、jsp的的简介

JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1] 是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。

二、JSP的本质:

JSP的本质其实是个Servlet,index.jsp在访问的时候首先会自动将该页面翻译生一个index_jsp.java文件,即Servlet代码,以Tomcat为例在安装目录的/work子目录下。 STS里封装的Tomcat的work目录在F:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost

打开index_jsp.java文件看你会发现这个类继承了类HttpJspBase. 而这个类继承了HttpServlet。因此JSP页面在本质上就是Servlet程序,而Servlet程序要被WEB容器调用执行,必须在WEB.XML中注册映射,对于JSP,这些则由WEB容器自动完成。在Tomcat安装目录下的conf子目录下有一个全局的web.xml,打开看会发现有

<servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet> <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jsp</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jspx</url-pattern> </servlet-mapping>

三、JSP的元素分类:

(1)脚本元素

1. 脚本<% %> //这里面只放java代码

<% if (Calendar.getInstance().get(Calendar.AM_PM) == Calendar.AM) { %> 上午好! <% } else { %> 下午好! <% } %>

2. 表达式 <%= %> //表达式一定要有一个可以输出的值

<%=new Date().toLocaleString()%>

3. 声明 <%!%>

<%! int i =0; %> <%! public String f(int i){ if(i<3){ return"小于3"; }else{ return "大于3"; } } %>

实际上,声明变量的语句完全可以放在脚本中,但是放在<%!%>中的变量在编译为Servet的时候将作为类的属性而存在,而在脚本中的变量将放在类的方法内部被声明,即前者是全局变量,而后者是局部变量。

4. 注释 <%-- --%>

<!--这也也是注释的内容 --> //对HTML中的文字进行注释 <%-- 注释的内容 --%> // 对HTML中的文字内容,jsp脚本和表达式进行注释

(2)指令元素

**5. <% @page %> **描述页面的相关信息 ,在jsp页面中,page指令可以出现多次,但是在每个page指令中,每一种属性只能出现一次

page指令中主要的属性

5.1import属性 import属性用来指定当前jsp页面中导入的java类软件包或者类名列表

<%@page import="java.util.Date"%> <%@page import="java.util.Calendar"%>

5.2contentType 属性 contentType属性用来指定JSP输出内容的MINE类型和字符编码方式 默认值为contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8” 5.2 language 属性 language 属性用来声明jsp页面中使用的脚本语言,默认是java语言

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

**7. <% @include %>//在页面翻译期间引入另一个文件,别包含的文件可以是jsp,HTML或文本文件

<%@include file = "header.jsp" %>

8. <% @taglib %>// 用于指定jsp页面中使用的标签库 语法 <% @taglib uri ="标签库 URL " prefix=“标签前缀”%>

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

(3)脚本元素

9. < jsp:include >< jsp: param>使用//作用于页面别请求是引入一个文件,可以结合 语法 < jsp:include page=“urlSpec” flush=“true” >

view.jsp

<jsp:include page="hengheng.jsp"> <jsp:param value="哼哼的博客" name="name"/> <jsp:param value="123456" name="pass"/> </jsp:include>

hengheng.jsp

<% response.setCharacterEncoding("utf-8"); String name = request.getParameter("name"); out.print("用户名是"+name); String pass = request.getParameter("pass"); out.print("密码是"+pass); %>

页面显示的结果是

page :只引入文件的地址flush :表示是否自动刷新name : 传入包含文件的变量名value: 传入包含文件变量名对应的值

10. < jsp:forword >//作用于转发到另一个页面 语法 < jsp :forword page=“relativeUrl” /> 或者 < jsp :forword page=“relativeUrl” > < jsp :param name =“name” value=“value”/> …… < jsp :forword/>

page :指定转发请求的相对地址param 中name:转发页面中传递的参数param中的value :转发页面中参数对应的值

注: < jsp:forword >的功能和Servlet的RequestDispathcher对象的forword方法类似,调用者和被调用者共用一个request对象。

<jsp:forward page="hengheng.jsp"> <jsp:param value="hengheng" name="name"/> <jsp:param value="123456" name="pass"/> </jsp:forward>

10. < jsp: param> //要引入的页面传入数据 < jsp :param name =“name” value=“value”/>

name 参数名value 参数对应的值 <jsp:param value="hengheng" name="name"/> <jsp:param value="123456" name="pass"/>

11. < jsp: useBean>//作用于查找或者实例化一个JavaBean,动态的扩充jsp的功能

语法 <jsp:useBean id=“hengheng” class=“className” scope=“page|request|session|application|”/> 或者 <jsp:useBean id=“hengheng” type=“typeName” scope=“page|request|session|application|”/>

id:指定JavaBean的实例变量名,通过id可以访问这个实例class: 指定JavaBean的类名scope : 指定作用范围type指定JavaBean对象的类型,通常在查找已存在的javaBean时使用。

12.< jsp:setProperty >//作用于向一个JavaBean对象赋值,需要和 < jsp: useBean>一块使用 语法 <jsp:setProperty property=“propertyName” name=“beanName” value =“propertyValue”/> 或者 <jsp:setProperty property=“propertyName” name=“beanName” param =“parameterName”/>

name : 指定JavaBean的对象名,与UseBean的id相同property : 指定JavaBean中需要赋值的属性名value : 指定要为属性设置的值param: 指定请求中的参数名,并将该参数的值赋给peoperty索指定的属性 <jsp:useBean id="user" class="cn.bzu.User" scope="request"></jsp:useBean> <jsp:setProperty property="userName" name="user" param ="loginName"/>

13.< jsp: getProperty>//作用于从一个JavaBean中得到某个属性的值,不管这个属性是什么类型,都将被转换成一个String类型的值

语法 <jsp:getProperty property=“propertyName” name=“beanName”/>

property:指定JavaBean中需要访问的属性名name : 指定JavaBean对象名,与useBean中id相同 <jsp:getProperty property="userName" name="user"/>

.


最新回复(0)