JavaWeb_JSP页面元素

Jsp的页面元素

a.脚本Scriptlet
i.

				<%
							局部变量,Java语句
				%>

ii.

				<%!
						定义全局变量
				%>

iii.

				<%=  定义输出语句  %>

示例:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%!
		public String workName;
		public void init(){
			workName = "java";
		}
	%>
	
	<%
		String name = "lisi";
		out.print("<font color='red' >hello...."+name + "<br/>");
		init();
		
	%>
	<%=
		"hello..."+workName
	%>
</body>
</html>

结果:
在这里插入图片描述

b.指令
page指令

<%@ page …%>
page指定的属性
language:jsp页面使用的脚本语言
import:导入类
pageEncoding:Jsp文件自身的编码 jsp–>java
contnetType:浏览器解析jsp编码

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

c.注释

<%--  注释内容 --%>

d.JSP的九大内置对象

(自带的,不需要new就可以使用的内置对象)

1、out:输出对象,向客户端输出内容
2、request:请求对象;存储:客户端向服务端发送的请求信息
			request对象常见的方法
			String getParameter(String name):根据请求的字段名key,返回字段值value
			String [] getParameterValues(String name):根据请求的字段名key,返回多个字段值value
			void setCharacterEncoding("utf-8"):设置POST请求的编码格式
			getRequestDispatcher("b.jsp").forward(request,response):请求转发  的方式跳转页面A->B
			ServletContext getServletContext():获取项目的ServletContext对象
			
			**两种请求方式:**
			get和post	区别
			get:method=get  和地址栏,超链接请求方式,都属于get请求方式
			a.  get方式 在地址栏显示请求信息  (但是地址栏能够容纳的信息有限  4-5KB);post不会显		    示
			b.  文件上传操作,必须post
			推荐使用post

			get和post请求编码设置
			get: 1.可以对每一个变量设置请求编码
					new String(name.getBytes("iso-8859-1"),"utf-8")
					2.也可以在tomcat的server.xml的配置信息做修改
					<Connector connectionTimeout="20000" port="8888" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
				
			post:			
					void setCharacterEncoding("utf-8"):设置POST请求的编码格式

		
	

			



小demo实例

parameter.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<from action = "show.jsp">
	姓名   :<input type="text" name="name"/><br/>
	性别   :<input type="text" name="grand"/><br/>
	用户名:<input type="text" name="uName"/><br/>
	密码   :<input type="password" name ="uPassword"/><br/>
	年龄   :<input type="text" name="uAge"/><br/>
	爱好   :<br/>
	<input type = "checkbox" name="uhobbies" value="足球"/>足球、
	<input type = "checkbox" name="uhobbies" value="篮球"/>篮球、
	<input type = "checkbox" name="uhobbies" value="乒乓球"/>乒乓球、
	<input type = "checkbox" name="uhobbies" value="艾尔伯斯球"/>艾尔伯斯球、
	<input type = "checkbox" name="uhobbies" value="飞机球"/>飞机球<br/>
	<input type= "submit" value="注册">

</from>
</body>
</html>

show.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
		<%
				//设置编码
				request.setCharacterEncoding("utf-8");
				String name = request.getParameter("name");
				String grand = request.getParameter("grand");
				String uName = request.getParameter("uName");
				String uPassword = request.getParameter("uPassword");
				String uAge = request.getParameter("uAge");
				String [] hobbies = request.getParameterValues("uhobbies");
		
		%>
		注册成功,信息如下:<br/>
		姓名:<%=name %><br/>
		性别:<%=grand %><br/>
		用户名:<%=uName %><br/>
		密码:<%=uPassword %><br/>
		年龄:<%=uAge %><br/>
		爱好:<br/>
			<%
					if(hobbies != null){
						for(String ho: hobbies){
							out.print(ho+"&nbsp;");
						}
					}
			
			
			%>
</body>
</html>
3、response:相应对象
			提供的方法:
			void addCookie(Cookie cookie):服务端向客户端增加cookie对象
			void sendRediret(String location) throws IOException:页面跳转的一种方式
			void setContentType(String type):设置服务端的响应编码(设置服务端的contentType类型)
			
							请求转发					重定向
地址栏是否改变          		  不变						改变
是否保留第一次请求时的数据	  保留						不保留
请求的次数                     1                         2



示例:login.jsp -> check.jsp ->success.jsp
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4.session会话

4.1、Cookie:客户端,不是内置对象
				  Cookie是由服务端生成的,再发送给客户端保存
				  相当于本地缓存的作用
				  提高了访问服务端的效率,但是安全性较差
		Cookie:name=value
		包路径:javax.servlet.http.Cookie
		public Cookie(String name,String value)
		String getName():获取name
		String getValue():获取value
		void setMaxAge(int expiry):设置cookie的最大有效期
		
		服务端准备给客户端:
		response.addCookie(Cookie cookie)
		页面跳转(转发,重定向)

		客户端获取cookie:
		request.getCookies():不能获取某一个对象,只能一次获取全部的cookie,遍历取出自己想要的

4.2、session:会话,存在服务端
			实现机制:
				第一次客户请求时,产生一个sessionid并复制给cookie的jsessionid,然后发给客户端
			一次会话:
					a.浏览网站:开始和关闭
					b.购物:浏览、付款、退出
					c.电子邮件:浏览、写邮件、退出
			客户端第一次请求服务端时,服务端会产生一个session对象(用于保存该客户的信息);
			并且每个session对象,都会有一个唯一的sessionid(用于区分其他session);
			服务端由会话阐释一个cookie,并且,改cookie的name =JESSIONID,value =服务端sessionID的值;
			然后服务端会在相应客户端的同时 将改cookie发送给客户端,至此客户端就有了一个cookie(JESSIONID)
			因此,客户端的cookie就可以和服务端的session一一对应(JESSSION-sessionID)

			客户端第二次或者第N次请求服务端时:服务端会先用客户端的cookie中的JESSIONID  去服务端的session中匹配sessionID

			总结:客户端第一次请求,会由服务端产生一个sessionID给cookie,cookie会把这个拿到以JESSIONID名字存到客户端,当用户第二次请求时,就会查看JESSIONID是否为空,如果不为空,就不用到服务端请求新的sessionID了,也就是不用登陆了
session方法:
		String getId():获取sessionId
		boolean isNew():判断是否是新用户(第一次访问)
		void invalidate():使session失效(退出登录,注销)
		
		void setAttribute();
		Object getAttribute();

		void setMaxInactiveInterval():设置最大有效 非活动时间
		int getMaxInactiveInterval():获取最大有效 非活动时间

cookie和session的区别:
	
			session          cookie
保存位置    服务端			客户端
安全性		较安全			较不安全
保存的内容	Object			String	

5.pageContext:Jsp页面容器

6.appliation:全局对象

7.config:配置对象(服务器配置信息)

8.page:当前JSP页面对象(相当于java中的this)

9.exception:异常对象

猜你喜欢

转载自blog.csdn.net/weixin_44413260/article/details/106389280