J2EE 2.JSP语法

版权声明:本文为博主原创文章,转载请声明原创网址。 https://blog.csdn.net/lagoon_lala/article/details/83032537

目录

JSP语法

JSP 指令标记

JSP 动作标记

实验

实验2_2 JSP指令标记

实验2_3 JSP动作标记


SP语法

“<%!”和“%>”之间声明的变量在整个JSP页面内都有效,与“<%!”、“%>” 标记符在JSP页面中所在的书写位置无关。JSP引擎将JSP页面转译成Java 文件时,将“<%!”、“%>” 标记符之间声明的变量作为类的成员变量,这些变量占有的内存空间直到JSP引擎关闭才释放。

在“<%”和“%>”之间插入Java程序片。一个JSP页面可以有许多程序片,这些程序片将被JSP引擎按顺序执行。

程序片中声明的变量称为JSP页面的局部变量 。

Java程序片中声明的局部变量在其后继的所有Java程序片以及表达式部分内都有效。

多个客户请求一个JSP页面时,Java程序片将被执行多次,分别在不同的线程中执行 。

JSP 指令标记

page 指令标记

page 指令标记可以指定如下属性的值contentType、import、language、session、buffer、auotFlush 、isThreadSafe

contentType 属性值确定JSP页面响应的类型MIME和JSP页面字符的编码。

例如:用户的浏览器启用HTML解析器来解析执行所接收到的信息  

      <%@ page contentType="text/html;charset=GB2312" %>

如果不使用page指令为contentType指定,默认值是  "text/html ; charset=ISO-8859-1“

include 指令标记

<%@ include file= "文件的URL " %>

静态插入一个文件

JSP 动作标记

include 动作标记

<jsp:include page= "文件的URL"/>

或  <jsp:include page= "文件的URL">

         param子标记

     </jsp:include>

param子动作标记

         不能独立使用,需作为jsp:include、jsp:forward、jsp:plugin标记的子标记来使用。

<jsp:param  name= "名字"  value= "值">

相应获取数据:String s=request.getParameter("num");

forward动作标记

<jsp:forward page="要转向的页面" />

或 <jsp:forward page="要转向的页面" >

      param子标记

     </jsp:forward>  该指令的作用是:从该指令处停止当前页面的执行,而转向执行page属性指定的JSP页面。

useBean 动作标记

 

---杂记:

Jsp页面组成(5)

jsp是由指令元素+脚本元素+html模板组成的
<%@ %>这种是jsp指令
<% %>这种是jsp脚本,即在里面写java代码

JSP页面被第一次请求执行时,引擎转译成Java文件,编译成字节码文件。字节码文件响应请求。每个用户一个线程

Out.print或println

导包:ctrl+shift+M

DateFormat 类MM-dd HH:mm:ss

声明全局变量:<%! %>

在webContent下建立image文件夹,路径为“image/**”

得到info的值:(this.)getServletInfo

Include指令嵌入文件:静态<% @ include file=”路径”%> <bgsound src=””

窗口、引用、workspace和Jsp file的encoding改成utf-8

静态包含的含义:把一个文件中所有的代码都包含进

 

显示server:

在左下方图标打开

显示浏览器:

上方图标

 

实验

实验2_1 JSP页面的基本结构

编写两个JSP 页面,名字分别为inputName.jsp和people.jsp。

  1. inputName.jsp的具体要求

该页面有一个表单,用户通过该表单输入自己的姓名并提交给people.jsp页面。

  1. people.jsp的具体要求

(1)JSP页面有名字为personList,类型是StringBuffer以及名字是count,类型为int的成员变量。

(2)JSP页面有public void judge ()方法,该方法负责创建personList对象,当count的值是0时,judge ()方法创建personList对象。

(3)JSP页面有public void addPerson(String p)的方法,该方法将参数p指定的字符串尾加到成员变量personList,同时将count作自增运算。

(4)JSP页面在程序片中获取inputName.jsp页面提交的姓名,然后调用judge()创建personList对象,调用addPerson方法将用户的姓名尾加到成员变量personList。

(5)如果inputName.jsp页面没有提交姓名,或姓名含有的字符个数大于10,就使用<jsp:forward page="要转向的页面" />标记将用户转到inputName.jsp页面。

(6)通过Java表达式输出personList和count的值。

<!-- input.jsp -->
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'input.jsp' starting page</title>
  </head>
  <body>
    This is my JSP page. <br>
    <form action="people.jsp" method="get">
    	<input type="text" name="name">
    	<input type="submit" value="提交">
    </form>
  </body>
</html>
<!-- people.jsp -->
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
       <title>My JSP 'people.jsp' starting page</title>
  </head>
    <body>
    This is my JSP page. <br>
    <%!
    	StringBuffer personList;
    	int count;
    	public void judge(){
    		personList=new StringBuffer();
    	}
    	public void addPerson(String p){
    		if(count==0){
    			judge();
    			personList.append(p);
    		}else{
    			personList.append(","+p);
    		}
    		count++;
    	}
    %>
    <% 	
    	String name=request.getParameter("name");
    	if(name==null||name.length()==0||name.length()>10){
    		%><jsp:forward page="input.jsp"/><%
    	}
    	addPerson(name);
    	out.print(count+"<BR>");
    	out.print(personList);
     %>
  </body>
</html>

实验2_2 JSP指令标记

实验要求

编写一个JSP 页面includeHello.jsp,使用include指令在JSP页面中静态插入hello.txt的内容。

includeHello.jsp使用page指令设置contentType属性的值为"text/plain",使用include指令静态插入hello.txt文件。

<!-- includeHello.jsp -->
<%@ page language="java" import="java.util.*" pageEncoding="gb2312" contentType="text/plain"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>My JSP 'includeHello.jsp' starting page</title>
  </head>
  <body>
    This is my JSP page. <br>
    <%@ include file="hello.txt" %>
  </body>
</html>

实验2_3 JSP动作标记

include动作标记:

<jsp:include page="文件的URL"/>

forward动作标记:

<jsp:forward page="要转向的页面" />

3.实验要求

编写4个JSP 页面:one.jsp、two.jsp、three.jsp和error.jsp。one.jsp、two.jsp和three.jsp页面都含有一个导航条,以便让用户方便地单击超链接访问这三个页面。要求这三个页面通过使用include动作标记动态加载导航条文件head.txt。导航条文件

head.txt

<%@ page contentType="text/html;charset=gb2312" %>

 <table  cellSpacing="1" cellPadding="1" width="60%" align="center" border="0" >

   <tr valign="bottom">

   <td><A href="one.jsp"><font size=3>one.jsp页面</font></A></td>

   <td><A href="two.jsp"><font size=3>two.jsp页面</font></A></td>

   <td><A href="three.jsp"><font size=3>three.jsp页面</font></A></td>

  </tr>

</table>
  1. one.jsp的具体要求

要求one.jsp页面有一个表单,用户使用该表单可以输入一个1~100之间的整数,并提交给本页面;如果输入的整数在50至100之间(不包括50)就转向three.jsp,如果在1至50之间(包括50)就转向two.jsp;如果输入不符合要求的整数,比如120,就转向error.jsp。要求forward标记在实现页面转向时,使用param子标记将整数传递到转向的two.jsp或three.jsp页面,将有关输入错误的信息传递到转向的error.jsp页面。

2.two.jsp、three.jsp和error.jsp的具体要求

要求two.jsp和three.jsp能输出one.jsp传递过来的值,并显示一幅图像,该图像的宽和高刚好是one.jsp页面传递过来的值。error页面能显示有关错误信息和一幅警告出错的图像。

Debug:

<%=%>

表单中提交的和param提交,获取都是request.get Parameter(“name”);

<img src="图片路径" width="150">图片最好放在webRoot目录下,并且不删除

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

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

<!-- one.jsp -->
<%@page import="org.apache.catalina.connector.Request"%>
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
    <%@include file="head.txt" %>
    <form action="" method="get">
    	<input type="text" name="num">
    	<input type="submit" value="提交">
    </form>
    <%
    	String s=request.getParameter("num");
    	if(s!=null&&s.length()!=0){
    		int num=Integer.parseInt(s);
    		%>
    		<jsp:forward page="two.jsp">
    			<jsp:param value="<%=num%>" name="num"/>
    		</jsp:forward>
    		<%
    	}else{
    		out.print(s);
    	}
     %>
  </body>
</html>
<!-- two.jsp -->
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>My JSP 'two.jsp' starting page</title>
  </head>
  <body>
    <%@include file="head.txt" %>
    <%
    	String s=request.getParameter("num");
    	int num=1;
    	if(s!=null&&s.length()!=0){
    		num=Integer.parseInt(s);
    	}
    	out.print(num);
     %>
     <img alt="图像" src="dad.jpg" width="<%=num%>" height="<%=num%>">
  </body>
</html>

猜你喜欢

转载自blog.csdn.net/lagoon_lala/article/details/83032537