后台开发学习——Jsp学习

版权声明:希望本文能对您有所帮助!欢迎指导、勘误、讨论及转载,转载请注明出处。 https://blog.csdn.net/Remoa_Dengqinyi/article/details/52661634

后台开发学习——Jsp学习

1、jsp语法的三种类型:

答:(1)编译器指令(directive

①编译器指令包括“包含指令”,“页指令”和“taglib指令”

②它们包含在<%@ %>卷标里

③常用的指令是page(页指令)和include(包含指令)

page指令用来定义JSP文件中的全局属性。一个JSP页面可以包含多个page指令,除了import属性外,其它属性只能出现一次。

作用范围:无论page指令放在jsp文件的哪个地方它都作用于整个JSP页面。

page指令的常用属性:

A)language:定义要使用的脚本语言,目前只能是“java”, 即language="java"

B)import: 和一般的Java import意义一样,用于引入要使用的类,只是用逗号“,”隔开包或者类列表。默认省略,即不引入其他类或者包。例如,import="java.io.*,java.util.Hashtable"

下面的包在jsp编译时就已经导入了,所以就不需要再指明了:

java.lang.*

Javax.servlet.*

Javax.servlet.jsp

Javax.servlet.http.*

C)session:指定所在页面是否参与HTTP会话。默认值为truesession="true"

D)contentType:定义JSP字符编码和页面响应的MIME类型。TYPE=MIME TYPE;charset=CHARSET。默认为contentType=text/html,charset=iso8859-1。例如contentType="text/html;charset=utf-8"

E)pageEncodingJSP页面的字符编码 ,默认值为pageEncoding="iso-8859-1",例如pageEncoding="gb2312"

F)buffer:指定到客户输出流的缓冲模式。如果为none,则不缓冲;如果指定数值,那么输出就用不小于这个值的缓冲区进行缓冲。与autoFlash一起使用。默认不小于8KB,根据不同的服务器可设置。例如,buffer="64kb"

G)autoFlash:如果为true缓冲区满时,到客户端输出被刷新;如果为false缓冲区满时,出现运行异常,表示缓冲区溢出。默认为true,例如autoFlash="true"

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

include包含指令:向当前页中插入一个静态文件的内容。

<% include file=”relativeURL” %><% include file=”相对位置” %>

taglib指令:用于引入定制标签库

<%@ taglib URL=”URLToTagLibrary” prefix=”tagPrefix” %>prefix:前缀,tag:标签)

2)脚本语法(scripting

HTML注释:<!--注释部分-->

<!-- 注释 [ <%= 表达式 %> ] -->:这种注释发送到客户端,但不直接显示,在源代码中可以查看到。

JSP隐藏注释:<%--注释部分--%>

不发送到客户端

③声明:<%! 声明; [声明;] %>:当服务器将JSP转换为Servlet时,会将JSP中的声明转换为类的成员变量,而将脚本段转换为方法中的局部变量,servlet是单实例的,这样成员变量的值就只有一个,每个用户都会访问到它,而脚本段中的值则是局部变量,每个用户访问时互不影响。

④表达式:<%= 表达式 %>

⑤脚本段

3)动作语法(action

<jsp:forward page = ”relativeURL 或者 <%= 表达式 %> ”>,用于转向页面,在该指令后面的所有代码都没有机会执行,因为页面的流程已经转向到了另外一个页面。

属性:<jsp:param name = ”参数名” value = ”参数值”>

<jsp:getProperty>

<jsp:include page = “relativeURL 或者 <%= 表达式 %> ”>:用于包含某个页面,

A)<jsp:forward>代码测试:

NewFile1.jsp(要转向的页面)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>forward测试</title>
	</head>
	<body>
		<jsp:forward page="NewFile.jsp">
			<jsp:param name="userName" value="Remoa" />
		</jsp:forward>
	</body>
</html>

NewFile.jsp(转向后的页面)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>forward测试</title>
	</head>
	<body>
		<%
			String userName = request.getParameter("userName");
			String outStr = "Welcome, ";
			out.println(outStr + userName);
		%>
	</body>
</html>

③运行结果:

 


B)<jsp:include>代码测试:

NewFile2.jsp(被包含的页面)

<%@ page language="java" contentType="text/html; charset=UTF-8" import="java.util.*"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>include测试</title>
	</head>
	<body>
		<%
			String userName = request.getParameter("user");
			String date = new Date().toLocaleString();
			out.println("欢迎您," + userName + " !现在是" + date);
		%>
	</body>
</html>

NewFile3.jsp(包含NewFile2.jsp页面的显示给用户的页面)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>include测试</title>
	</head>
	<body>
		<jsp:include page="NewFile2.jsp">
			<jsp:param name="user" value="Remoa" />
		</jsp:include>
		<%
			out.println("<br/>未来的你,会感谢今天拼命努力的自己!<br/>");
			out.println("加油!");
		%>
	</body>
</html>

③运行结果:

 

 

2、小练习:

(1)题目要求:

①一共两个jsp

第一个jsp:两个文本框 用户分别输入一个数字 点击提交按钮 就会转向下一个jsp页面

第二个jsp:会显示一个多少行多少列的Table 表格居中 宽度占50% 表格里面加一些连续的数字

(2)代码示例:

User.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>用户界面</title>
	</head>
	<body>
		<form method="post" action="Table.jsp">
			行数:<input type="text" name="row" placeholder="请输入行数" /><br />
			列数:<input type="text" name="colomn" placeholder="请输入列数" /><br />
			<button type="submit" value="submit">提交</button>
		</form>
	</body>
</html>

Table.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>表格页面</title>
	</head>
	<body>
		<%
			int number = 1;
			int row = 0, colomn = 0;
			try{
				row = Integer.parseInt(request.getParameter("row"));
				colomn = Integer.parseInt(request.getParameter("colomn"));
			}catch(Exception e){
				out.println("请输入一个正整数");
				return;
			}
		%>
		<div style="text-align:center">
			<table border="2px" style="width:50%; margin:auto;">
			<%
				for(int i = 0; i < row; i++){
			%>
				<tr>
				<% 
					for(int j = 0; j < colomn; j++){
				%>
					<td><%= number++ %></td>
				<% } %>		
				</tr>
			<% } %>
			</table>
		</div>
	</body>
</html>

(3)运行结果:

①当输入正确时,显示如下二图:

 

 

②当输入不正确时,显示如下二图:

 

 

 

3、jsp最终都会转换为servlet去执行。

展开阅读全文

没有更多推荐了,返回首页