JSP_2th_JSP基本语法

一、JSP基本语法
1、变量声明
<%@ 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>JSP Declarations</title>
</head>
<body>
	<h1>JSP Declarations</h1>
	
	<%!
		int accessCount = 0;
	%>
	
	<%
		int accessCount2 = 0;
	%>
	
	<h2>Accesses to page since server reboot</h2>
	<h2>accessCount = <%= ++accessCount %></h2>
	<h2>accessCount2 = <%= ++accessCount2 %></h2>
</body>
</html>

访问:http://localhost:8080/TestJSP/AccessCounts.jsp
页面多次刷新后的效果:


发现accessCount变量可以不断往上增加,而accessCount2每次都只能加到1。

打开AccessCounts_jsp.java可以发现accessCount是servlet的成员变量,而accessCount2是servlet的service方法的局部变量。

在AccessCounts.jsp在第一次被访问时,JSP引擎就将其转译成了servlet,编译出了class文件并运行,而accessCount是AccessCounts_jsp这个类的成员变量,客户端每发出一次请求,服务器就会调用该类对象的service方法,成员变量accessCount自加,而accessCount2只是service方法的局部变量,每次调用service方法都只能自加到1。

根据下面service方法中的输出流可以看出<%= %>的语法。

总结:
①定义一个成员变量使用<%! %>,如<%! int a = 0 %>
②定义一个局部变量使用<%! %>,如<%  int b = 0 %>
③<%= %>表示将中间的内容的值转换成字符串,然后原封不动的打印出来,后面还会举例。
④不论是servlet还是jsp转译成的servlet,servlet在其生命周期内有且只有一个对象。

深理解一下<%! %>和<% %>:
见下例:
	<%!
		int accessCount = 0;
		void f1() {}
	%>
	
	<%
		int accessCount2 = 0;
		void f2() {}
	%>

方法不可以声明在<% %>中,这是因为<% %>中的内容会被放在方法中,而在Java中方法是不可以声明方法的。
方法可以声明在<%! %>中,这是因为<%! %>中的内容会被放在类内部、方法外。

总结:
①<% %>中只能写局部变量和代码块(如语句块、方法调用等)。
②<%! %>中只能写成员变量、方法声明,不能直接写代码块,但可以写静态块。

2、JSP的注释


3、request对象
JSP拿到客户端的信息,动态生成页面:

代码如下:

<%@ 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>Insert title here</title>
</head>
	<%
		String bgColor = request.getParameter("bgColor");
		boolean isChange;
		if(bgColor != null) {
			isChange = true;
		} else {
			isChange = false;
			bgColor = "white";
		}
	%>
<body bgcolor=<%=bgColor %>>
		
</body>
</html>

访问:http://localhost:8080/TestJSP/ChangeBgColor.jsp?bgColor=pink

页面效果:

总结:
①request是JSP内置的对象,不需要new可直接使用。
②getParameter可以拿到URL中参数的值。

4、表达式<%= %>
<%@ 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>JSP Expressions</title>
</head>
<body>
	<h3>JSP Expressions</h3>
	<ul>
		<li>Current time: <%=new java.util.Date() %></li>
		<li>Your HostName: <%=request.getRemoteHost() %></li>
		<li>Your session ID: <%=session.getId() %></li>
		<li>The <code>testParam</code> from parameter: 
			<%=request.getParameter("testParam") %>
		</li>
	</ul>
</body>
</html>

页面效果:



如果在URL带上参数:



参数是被当做字符串传过去的,如果参数带有空格,则会用%20来代替空格:

总结:
不仅是request对象,session对象也可以直接用,该jsp转译后的servlet会在service方法中为我们创建一个,也就是说于我们不需要用request.getSession()来获得一个session对象,jsp引擎帮我们省去了这个步骤。很多servlet中的对象也可以直接使用,后续再做介绍。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值