获取一言 API 内容

JSP基本语法

Hello wrold

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		<%out.print("hello world"); %>
	</body>
</html>

页面组成元素

page指令

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

注释

`<%--不发送到客户端,不会在浏览器查看源代码时显示--%>
<%/*多行注释*/%>
<%//单行注释%>`

声明

`<%!这是一个声明%>`

---------------------------------------------以下为详解部分---------------------------------------------

脚本元素

隐藏注释

1.该注释不发送到客户端,存在JSP文件中
2.增加程序可读性同时兼顾安全,web浏览器看不到该注释
<%-- 注释 --%>

HTML注释

1.显式注释,用户可以看到内容
2.该注释是在JSP中的
3.注释可以带参数
<!-- 注释 <%JSP语句%>-->

声明

定义变量、多个变量和方法
<%!声明[声明;]%>
<%!声明全局变量%>
<%声明局部变量%>
1.声明必须;结尾,表达式不能以;结尾
2.<%@page%>包含的变量和方法不用重新声明
3.声明不会有任何输出
4.访问为本页面,多页面使用写成单独文件。<%@inclue%>或<jsp:include> 引入进来

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<% int a = 5; %>
<%! int b = 6; %>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>wealcome</title>
	</head>
	<body>
    	<%a++;b++; %>
    	<%= "a=" + a %>		//刷新网页后a一直为6
    	<%= "b=" + b %>		//每次刷新网页b+1
	</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<% int a = 5; %>
<%! int b = 6; %>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>园面积计算</title>
	</head>
	<body>
    	<p>输入半径</p>
    	<form action="test.jsp" method="get" name="form">	<!--action链接到jsp文件-->
    		<input type="text" name="radius">			<!-- 文本框 -->
    		<input type="submit" name="submit" value="开始计算"> <!-- 按钮 -->
    	</form>
    	<!-- 以下为test.jsp内容 -->
    	<%!
    		double area(double r) {		//声明函数area
    			return Math.PI*r*r;
    		}
    		double perimeter(double r){		//声明函数perimeter
    			return Math.PI*2*r;
    		}
    	%>
    	<%
    		String str=request.getParameter("radius");	//获取name=radius文本框内的内容
    		if(str!=null){
    			try{		//try开始
    				double r;
    				r=Double.parseDouble(str);
    	%>
    	<!-- html内容,创建两个文本用来显示结果,同时进行函数调用 -->
    	<p>面积:<%=area(r) %></p>
    	<p>周长<%=perimeter(r) %></p>
    	
    	<%
    	}catch(Exception e){	//try结束
    		out.print(e.getMessage());
    		}
    	}
    	%>
    	</body>
</html>

结果:

脚本代码

<%代码%>
可以包含多个JSP语句,方法,变量,表达式
可以使用任何隐含对象和jsp:usebean声明过的对象
段内不能定义方法,会造成嵌套定义 p58
代码可以影响块外html的执行,示例如下

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>time</title>
	</head>
	<body>
    	<%
    		if(true){
    	%>
    	
    		html块1	//当为true时,运行此块
    		
    	<%	
    		}else{
    	%>
    	
    		html块2	//当为false时,运行此块
    		
    	<%
    		}
    	%>
    </body>
</html>

表达式

<%=表达式%>

不用加分号
顺序是从左到右
实际上是转换成了out.print
<%="hello world"%>就相当于<%out.print("hello world");%>

指令元素

描述了JSP页面转换成JSP容器所能实现的JAVA代码的控制信息
<%指令名 属性1=值1 属性2=值2%>

page指令

定义JSP页面全局属性,可以放在开头或其他地方
包含整个JSP页面,包括静态的包含文件,不包括动态的包含文件
可以有多个page,但是其中的属性只能用一次(import例外)
<%@ page %>
指定值

  • language="java" 表示脚本语法必须符合java语法规则,默认java
  • extends="packg.class" 指定JSP页面生成的Servlet类应该继承自指定的类。使用不当会限制JSP编译能力
  • import={"package.class|package.*"},....导入JSP页面中将要使用的Java类,可以导入一个或多个
    默认导入类
java.land.*
javax.servlet.*
javax.servlet.jsp.*
javax.servlet.http.*
  • buffer="none|8kb|sizekb"设置缓冲区大小,默认8kb
  • autoFlush="true|flase" buffer溢出时是否强制输出,当buffer=none时,该选项必须为true
  • isThreadSafe="true|flase" 是否开启多线程
  • info="text"该文本在执行JSP时会逐字加入JSP,使用Servler.getServletInfo取回
  • errorPage="realtiveURL"处理异常事件的JSP文件
  • isErrorPage="true|flase" 设置此页面是否为错误处理页面,默认flase。为true时可以获取exception并传出。
  • contentType="mineType[;charset=characterSet]"|"text/html"指定返回页面的类型,可以有
text/plain 纯文本页面
text/html  纯HEML页面
text/xml   XML页面
applcation/x-msexcel  Ecxel文件
application/msword    Word文件
charser=gbk    指定页面使用的字符编码
等等

include指令

包含一个静态文件,文件中的代码会被复制到当前页面中
<%@include file="relative url"%>

  • 插入的是静态的,指的是file不能是一个变量,也不可以在file后添加任何参数
  • 加载的外部文件内容将成为网页的一部分,jsp语法也会被执行
  • 只能加载指定的外部文件,且不能进行传递参数操作
  • 可以将一个复杂网页分成多个简单小网页

示例
test.html内容

<html>
<head>
<title>dd</title>
</head>
this is html
</html>

test.jsp内容

<%@page contentType="text/html;charset=UTF-8" %>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>include test</title>
	</head>
	<body>
    	<p><%@include file="test.html" %></p>	
    </body>
</html>

运行结果为 this is html,标题是include test

taglib指令

用来定义一个标签库以及其自定义标签前缀
<%@ taglib uri="tagLibraryURI" prefix="tagPrefx"%>

  • URI统一资源标识符用来唯一确定标签库的路径,并确定如何处理指定标签库中标签
  • prefix定义一个指示使用此标签库的前缀
  • 不能使用jsp、jspx、javax、servlet、sun、sunw前缀,这些前缀是保留的
    示例
<%@page contentType="text/html;charset=UTF-8" %>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>taglib test</title>
	</head>
	<body>
		<%@taglib uri="https://www.jspcentral.com/tags" perfix="public" %>
		<public:loop>  </public:loop>
    </body>
</html>

JSP动作元素

动态执行,是一种特殊的标签,通过XML语法格式的标记来实现和控制Servlet引擎行为的
JSP预设Action Element标签

分类 项目 功能说明
JavaBean <jsp:useBean> 使用JavaBean
<jsp:setPropert> 设置JavaBean属性
<jsp:getPropert> 获取JavaBean属性
<jsp:param> 设置传送函数
一般元素 <jsp:plugin> 载入JavaBean或Java applet
<jsp:forward> 网页重定向
<jsp:include> 载入HTML或JSP文件
XML <jsp:attribute> 设置标签属性
<jsp:body> 动态设置XML标签主体
<jsp:element> 动态设置XML标签

<jsp:include>

可以用来包含静态和动态页面
可以有编译时包含和运行时包含两种方式。编译是静态,速度快。
<jsp:include page="relative URL" flush="true|false"> \\不带参数

<jsp:include page="relative URL" flush="true|false">
<jsp:param name="attributeName" value="attribute Value">
<jsp:param...
</jsp:include>
//带参数

flush是缓冲区
param用于在包含文件时传递一些参数

<jsp:include>(include动作)和<%@include%>(include指令)区别
include指令:把其他页面源码加入进来,相当于复制源码和本页合并后编译,后续改动不理会
include动作:两个页面运行完后,将包含页面的结果页面加入到本页面的结果页面,运行时包含,还可以传递参数给被包含的页面

| 语法|状态 |对象 |描述|
| ------------ | ------------ | ------------ ||
| <%@include file="relative url"%> | 编译时包含 | 静态 |jsp引擎对包含页面进行语法分析|
| <jsp:include page="relative URL"> | 运行时包含 | 静态和动态 |jsp引擎不对包含页面进行语法分析|
动态文件 aciton.jsp

<%@page contentType="text/html;charset=UTF-8" %>
	<br>
		this is name=
	<%=request.getParameter("a1")%>
	</br>
	<br>
		this is password=
	<%=request.getParameter("a2")%>
	</br>

静态文件 static.html

<html>
	<body>
	<form method=post action="test.jsp">
	<table>
		<tr>
			<td><input type=text name=name1></td>
		</tr>
		<tr>
			<td><input type=text name=password></td>
		</tr>
		<tr>
			<td><input type=submit value=login></td>
		</tr>
		</table>
	</body>
</html>

主程序

<%@page contentType="text/html;charset=UTF-8" %>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>include test</title>
	</head>
	<body>
		<!-- 静态方式包含进来 -->
		<%@include file="static.html" %>
		<a href="action.jsp">continue</a>
		<!-- 动态方式包含进来 -->
		<jsp:include page="action.jsp" flush="true">
			<jsp:param name="a1" value='<%=request.getParameter("name1") %>'  />
			<jsp:param value='<%=request.getParameter("password")%>'  name="a2"/>
		</jsp:include>
    </body>
</html>

输入值点击login后,name和password更新。点击continue时,值依然为null,因为调用时没有传入参数

<jsp:forword>

将页面重定向到其他页面

不带参数
<jsp:forword page="pageURL">
带参数

<jsp:forword page="pageURL">
	<jsp:param name="sttributename" value="attribute Value">
</jsp:forword>

采用来做登录界面
示例
login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
	<head>
	</head>
	<body>
		<form method=get action=checklogin.jsp>
		<table>
			<tr>
				<td>输入用户名:</td>
				<td><input type=text name=name value=<%=request.getParameter("user")%>></td>
			</tr>
			<tr>
				<td>输入密码:</td>
				<td><input type=password name=password></td>
			</tr>
			<tr colspan=2>
				<td><input type=submit value=login></td>
			</tr>
		</table>
	</body>
</html>

checklogin.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
</head>
<body>
	<%
		String name= request.getParameter("name");
		String password=request.getParameter("password");
		if(name != null && password != null && name.equals("hellking") && password.equals("12345"))
		{
			%>
			<jsp:forward page="success.jsp">
				<jsp:param name="user" value="<%=name%>"/>
			</jsp:forward>
			<% 
		}
		else{
			%>
			<jsp:forward page="login.jsp">
				<jsp:param name="user" value="<%=name%>"/>
			</jsp:forward>
		<%}%>
</body>
</html>

success.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
欢迎<%=request.getParameter("user") %>
</body>
</html>

/jsp:param

传递参数给jsp,上面有使用过
<jsp:param name="" value=''/>
name值为必须设置的,value设置值
使用时配合其他元素使用

<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>

<jsp:useBean>

<jsp:useBean id="" class=""/>

属性 用法
id 命名引用该bean的变量(new一个实例的名称),通过id和scope找到bean就使用,找不到就创建一个bean
class 指定Bean完整包名
scope 指定Bean范围。
1.page(默认值)只在当前页面可用,存储在PageContext中。
2.request在当前用户请求内都有效,保存在ServletRequest中
3.session在当前HttpsSession内所有页面都有效
4.applicationd对具有相同ServletConntext页面都有效
type 引用该对象的变量属性,必须是Bean类的名字、超类名字、该类所实现的接口名字之一
beanName 指定Bean名字。如果有type和beanName则可以省略class(不可同时使用)

<jsp:setProperty>

设置bean的属性
1.写在外部
<jsp:usebean id="t">
<jsp:setproperty name="t" property="" ...
2.写在usebean内
<jsp:usebean id=t""><jsp:serproperty name="t" property></jsp:usebean>

属性 用法
name 必须,指定要设置的bean
value 必须,表示设置那个属性
param 可选,指定用哪个请求参数作为bean属性的值。没参数则不干活,不传null

setproperty的值会相互覆盖,如果执行了两次设置属性,则最后一次更新的是最终结果

<jsp:getProperty>

获取属性值
<jsp:setProperty id=" property="">
id指代bean实例名
property代表属性名
结果返回属性的值
如果为空产生 NullPointerException错误,并返回null

如果有一个javabean叫 test,存储在cho3文件夹中
<jsp:usebean id=testone scope="page" class="ch03.test"/>
那么使用
<%=testone.geta()%>
<jsp:gerproperty name="testone" property="a">
效果相同

<jsp:plugin>

从JSP网页中加载Java Applet 或 JavaBean组件程序

<jsp:plugin
type="bean | applet"
code="classFileName"
codebase="classFileDirectoryName"
name="instanceName"
align="left | right | top I middle | bottom"
width="width"
height-"height"
hspace="horizontalSpace"
vspace="verticalSpace"
archive="archiveURL,..."
>
<jsp: params>
<jsp:param name="propertyName" value="propertyValue"></jsp:params>
<jsp: fallback>text message</jsp:fallback>
</jsp:plugin>

posted @ 2025-01-06 16:45  奇怪的知识增加了  阅读(130)  评论(0)    收藏  举报
隐藏日历模块