打开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>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脚本和表达式进行注释**5. <% @page %> **描述页面的相关信息 ,在jsp页面中,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" %>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"/>.