第十四天前端jsp基本语法、指定以及内置对象的使用

十八jsp语法和指令

1.基本语法(3)
1.声明

<%! 方法 %>

2.脚本

<% 代码 %>

3.输出

<%=%>

4.注释

html注释 显示注释

jsp注释<% // %> 隐式注释

<body>
<%!//定义类或全局变量或方法,不可用输出语句(out.print())
class Person{
int id;
String name;
public Person(int id,String name){
	this.id=id;
	this.name=name;

}
public String print(){
return "id:"+id+"\tname:"+name;
}
}
%>
<%//定义局部变量和编写代码
	Person p=new Person(1,"li");
	out.println("<font color='#ff0000'>"+p.print()+"</font>");
%>
<%--输出语句--%>
<%="sssssss"%>
</body>
2.编译指令(3)
1.page

<%@ page 属性1=“属性值” 属性2=“属性值” 属性3=“属性值”%>

常用属性

autoFlush

true 缓冲区满时,到客户端的输出被刷新

false 缓存区满时,将出现异常,缓冲区溢出

contentType 定义jsp的字符编码和页面类型

isErrorPage true则errorPage指定页面出错时才能跳转进行页面处理

​ false则errorPage不能跳转,无法处理

errorPage 定义页面出错时要跳转的页面,和isErrorPage属性一起出现

import jsp页面导入了操作包

language 用来定义要使用的脚本语言

pageEncoding jsp页面的字编码,默认为ISO-8859-1

这么属性都只能出现一次,只有import可出现多次

<%@ page contentType="text/html;charset=utf-8" language="java" import="java.sql.*" isErrorPage	="true"	errorPage="" autoFlush="true" pageEncoding="UTF-8"%>
2.include

静态包含,将代码包含进去,然后编译

<%@ include file=“info.html”%>

<!--//静态包含-->
<%@ include file="01ErrorPage.jsp"%>
3.taglib

用于引入特定的标签库

例:引入struts库 <%@ taglib prefix=“s” taglib="/struts-tags" %>

3.动作指令(7)
1.forward

页面跳转

<jsp:forward page=“目标页面地址”>

​ <jsp:param name=“name1” value=“value1”/>

</jsp:forward>

客户端跳转:地址栏发生变化

服务器跳转:地址栏不发生变化

<jsp:forward page="01ErrorPage.jsp"></jsp:forward>
<jsp:forward page="01ErrorPage.jsp">
	<jsp:param name="rename" value="liguanmeng" />
	<jsp:param name="repass" value="980712" />
</jsp:forward>
2.include

动态包含,先运行被包含的子页面,再将运行结果包含进来

<jsp:include page=“infp.jsp”>

​ <jsp:param name=“name1” value=“value1”/>

</jsp:include>

<!--//静态包含-->
<%@ include file="01ErrorPage.jsp"%>
<!--动态包含不传参-->
<jsp:include page="01ErrorPage.jsp" flush="true"/>
<!--动态传参-->
<jsp:include page="01ErrorPage.jsp" flush="true">
	<jsp:param name="username" value="namevalue" />
</jsp:include>

<% String username=request.getParameter("username");%>
<%=username%>
3.useBean

<jsp:useBean id=“实例化名称” scope=“保存范围” class=“包.类”/>

scope=“page/request/session/application”

<jsp:useBean id="userBean" scope="session" class="studyWeb.T01UserBean" />
4.setProperty

<jsp:setProperty name=“实例化名称” property=“成员名称” value=“成员值”/>

<jsp:setProperty property="uname" name="userBean" value="uname"/>
5.getProperty

<jsp:getProperty name=“实例化名称” property=“成员名称”/>

<jsp:getProperty property="uname" name="userBean"/>
6.plugin

lugin主要用于下载server端的javaBean或applet到client运行。如今非常少使用。

7.param

param指令用于设置參数值,该指令本身不能单独使用,配合以下三个指令使用:

jsp:include

jsp:forward

jsp:plugin

4.内置对象(9)

web容器创建的一组对象

可直接使用,无需new关键字进行实例化

pageContext javax.servlet.jsp.PageContext JSP 的页面容器
request javax.servlet.http.HttpServletRequest 得到用户的请求信息
response javax.servlet.http.HttpServletResponse 服务器向客户端的回应信息
session javax.servlet.http.HttpSession 用来保存每一个用户的信息
application javax.servlet.ServletContext 表示所有用户的共享信息
config javax.servlet.ServletConfig 服务器配置,可以取得初始化参数
out javax.servlet.jsp.JspWriter 页面输出
page java.lang.Object 表示从该页面中表示出来的一个 Servlet 实例
exception java.lang.Throwable 表示 JSP 页面所发生的异常,在错误页中才起作用

1.pageContext

PageContext的实例

表示jsp页面的上下文

常用常量

public static final int PAGE_SCOPE
public static final int REQUEST_SCOPE
public static final int SESSION_SCOPE

public static final int APPLICATION_SCOPE

常用方法

public ServletRequest getRequest()

public ServletResponse getResponse()

public HttpSession getSession()
public ServletContext getServletContext()

public ServletConfig getServletConfig()

<body>
<% pageContext.setAttribute("username","uservalue1",pageContext.REQUEST_SCOPE); 
	pageContext.setAttribute("passname","uservalue2",pageContext.SESSION_SCOPE); 
	out.println("request:"+pageContext.getRequest()+"<br/>");
	out.println("response:"+pageContext.getResponse()+"<br/>");
	out.println("session:"+pageContext.getSession()+"<br/>");
	out.println("application:"+pageContext.getServletContext()+"<br/>");
%>
<jsp:forward page="S2pageContextForward.jsp" /><!--转发-->
<a href="S2pageContextForward.jsp?a='avalue'">02pageContextForward</a><!--重定向-->
<%=pageContext.getAttribute("username",pageContext.REQUEST_SCOPE)%>
</body>

S2pageContextForward.jsp

<body>
<%=pageContext.getAttribute("username",pageContext.REQUEST_SCOPE)%>
<%=pageContext.getAttribute("passname",pageContext.SESSION_SCOPE)%>
<%=(String)request.getParameter("a")%>
</body>
2.request

HttpServletRequest的实例

用来处理客户端发送而来的请求信息

常用方法

public String getParameter(String name) 接收客户端发来的请求参数内容
public String[] getParameterValues(String name) 取得客户端发来的一组请求参数内容 (多选框)
public Enumeration getParameterNames() 取得全部请求参数的名称
public String getRemoteAddr() 得到客户端的 IP 地址
public void setCharacterEncoding(String env) 设置统一的请求编码
public Httpsession getSession() 取得当前的 session 对象

public StringBuffer getRequestURL() 返回正在请求的路径

public String getContextPath() 取得上下文资源路径

public String getServletPath() 取得访问的路径

url=contextPath(资源路径)+servletPath(访问路径)

<body>
<h2>用户注册</h2>
<form action="S4Request.jsp" method="post" name="mf">
用户名:<input type="text" name="uname" /><br/>
密码: <input type="password" name="upass"/><br/>
性别: <input type="radio" name="usex" value="1" />男
<input type="radio" name="usex" value="2"/>女 <br/>
学历:<select name="uedu" >
<option value="">--选择学历--</option>
<option value="1">高中</option>
<option value="2">大学</option>
</select><br/>
兴趣爱好: <input type="checkbox" name="uinst" value="打球"/>打球
<input type="checkbox" name="uinst" value="上网"/>上网
<input type="checkbox" name="uinst" value="看书"/>看书
<br/>
<input type="hidden" name="no" value="NC0001"/>
<input type="submit" value="注 册" />&nbsp;
<input type="reset" value="取 消"/>
</form>
<a href="SRequest.jsp?name1=value1&name2=value2">aaaa</a>
</body>
S4Request.jsp

<body>
<%  request.setCharacterEncoding("gb2312");
	String uname=request.getParameter("uname");
	String upass=request.getParameter("upass");
	String usex=request.getParameter("usex");
	String uedu=request.getParameter("uedu");
	String uinst[]=request.getParameterValues("uinst");
	out.println("uname:"+uname+"&nbsp;"+"upadd:"+upass+"&nbsp;"+"usex:"+usex+"&nbsp;"+"uedu:"+uedu+"<br/>");
	/*for(String s:uinst){
	out.println("爱好:"+s);
	}*/
	out.print("remoreAddr:"+request.getRemoteAddr()+"<br/>");
	out.print("session:"+request.getSession()+"<br/>");
	out.print("requestURL:"+request.getRequestURI()+"<br/>");
	out.print("contextPath:"+request.getContextPath()+"<br/>");
	out.print("servletPath:"+request.getServletPath()+"<br/>");
	out.print("method:"+request.getMethod()+"<br/>");
	out.print("headerPost:"+request.getHeader("post")+"<br/>");
 %>  
 <% String name1=request.getParameter("name1");
	String name2=request.getParameter("name2");
	out.print(name1+"<br/>");
	out.print(name2);
	%> 
</body>

uname:12345 upadd:12345 usex:1 uedu:1 remoreAddr:0:0:0:0:0:0:0:1
session:org.apache.catalina.session.StandardSessionFacade@18a08b5e
requestURL:/study/S09jspObject/S4Request.jsp
contextPath:/study
servletPath:/S09jspObject/S4Request.jsp
method:POST
headerPost:null
value1
value2
3.response

HttpServletResponse的实例

public void sendRedirect(String location) 页面重定向

public void addCookie(Cookie cookie) 向客户端增加 Cookie
public void setHeader(String name,String value) 设置回应的头信息,设置页面跳转时间并指定页面

<body>
<%
	//客户端跳转
 //response.setHeader("refresh","3,S4request.jsp");//3秒后刷新加载指定页面,客户端跳转
	//response.sendRedirect("S4Requeset.jsp");//客户端跳转
	//服务器跳转
	//RequestDispatcher rd=request.getRequestDispatcher("S4Request,jsp");
	//rd.forward(request,response);
	%>
    <jsp:forward page="S4Request.jsp" /> 
</body>
4.session

HttpSession的实例

一个会话就是浏览器与服务器之间的一次通话,包含浏览器与服务器之间的多次请求

用来存储有关用户会话的所有信息,每一个session对象都表示不同的访问用户

session保存再服务端,更安全

常用方法

public String getId() 获取 session 对象的编号
public long getCreationTime() 取得 SESSION 的创建时间
public long getLastAccessedTime() 取得 SESSION 的最后一次操作时间

public void invalidate() 设置 session 对象失效
public int getMaxInactiveInterval()获取 session 的有效非活动时间,以秒为单位
public Enumeration getAttributeNames()得到全部属性的名称

<body>
<%	
	session.setAttribute("attr","attrValue");
	String attr=(String)session.getAttribute("attr");
	String id=session.getId();
	long createTime=session.getCreationTime();
	long lastAccessedTime=session.getLastAccessedTime();
	int maxInactiveInterval=session.getMaxInactiveInterval();
	out.print("attr:"+attr+"<br/>");
	out.print("id:"+id+"<br/>");
	out.print("createTime:"+createTime+"<br/>");
	out.print("maxInactiveInterval:"+maxInactiveInterval+"<br/>");
	session.invalidate();
	out.print("lastAccessedTime:"+lastAccessedTime+"<br/>");
%>
</body>
5.application

ServletContext的实例

类似系统的全局变量,实现用户信息的共享
public String getContextPath() 取 得 当 前的 虚 拟 路径名称
String getRealPath(String path) 返 回 相 对路 径 的 真实路径

<%
out.print(application.getContextPath()+"<br/>");
out.print(application.getRealPath("/")+"<br/>");
%>

/study
E:\webpage\workspace\study\
6.config

ServletConfig的实例

代表jsp当前配置

public String getInitParameter(String name) 返回该参数的值
public Enumeration getInitParameterNames() 返回所有参数名

7.out

JSPWriter的实例

主要页面的输出操作

public void print()/println() 输出

8.cookie

让服务器程序能将一些数据只须保存再客户端,放在本身计算机,不须进行网络传输,因而提高网页处理效率,减少服务端的负载,但安全性比较差

Cookie的作用

对特定对象的追踪

统计网页浏览次数

简化登录

安全性能

容易信息泄露

构造方法

Cookie newCookie=new Cookie(“parameter”, “value”);

常用方法

void setMaxAge(int expiry) 设置Cookie的有效期,以秒为单位

String getMaxAge() 获取Cookie的有效时间,以秒为单位

void setValue(String value) 在Cookie 创建后,对 Cookie进行赋值
String getName() 获取Cookie 的名称
String getValue() 获取Cookie 的值
增加cookie

所有的cookie时由服务端设置到客户端上,所以通过response的

public void addCookie(Cookie cookie)

方法向客户端增加cookie

取出cookie

从客户端取出Cookie使用request的

Cookie[] getCookies()

方法

总结
 pageContext:只在一个页面中保存属性,跳转之后无效。
  request:只在一次请求中保存,服务器跳转后依然有效,客户端跳转无效
  session:在一次会话范围中,无论何种跳转都可以使用,但是新开浏览器无法使用。
  application:在整个服务器上保存,所有用户都可以使用

都有以下方法:

​ void setAttribute(String name,Object o) 设置属性

​ void getAttribute(String name,Object o) 得到属性

​ void removeAttribute(String name,Object o) 移除属性

session 是在服务器端保存用户信息,Cookie 是在客户端保存用户信息
session 中保存的是对象或字符串,Cookie 保存的是字符串
session 随会话结束而关闭,Cookie 可以长期保存在客户端
Cookie 通常用于保存不重要的用户信息,重要的信息使用 session 保存

转发(服务端跳转)

​ 地址栏的信息不变

​ 页面交互过程总实现请求数据共享

​ request.getRequestDispatcher(“a.jsp”).forward(request,response)

​ <jsp:forward page=“跳转地址”/>

​ pageContext.forward();

重定向(客户端跳转)

​ 地址栏信息改变

​ 链接跳转:

​ 表单提交

​ void setHeader(String String value)

​ void sendRedirect(String location)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值