JSP 基础

JSP 基础


工作原理
1.JSP引擎会将JSP文件编译成.class文件,就是一个servlet类,里面包含了一部分servlet里需要的对象和变量,还有以MAP参数传入的用户数据。
2.当请求这个JSP文件时就是把相关用户参数作为参数引用这个servlet类里的一个jspservic方法进行返里页面内容。


JSP 语法
1.脚本程序可以包含任意量的Java语句、变量、方法或表达式,只要它们在脚本语言中是有效的。
语法格式:
<% 代码片段 %>


JSP声明(只是定义好,不进行输出)
1.一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。在JSP文件中,您必须先声明这些变量和方法然后才能使用它们。
JSP声明的语法格式:
<%! declaration; [ declaration; ]+ ... %> //多了一个“!”


JSP表达式(结果变成String放到这里来)
1.一个JSP表达式中包含的脚本语言表达式,先被转化成String,然后插入到表达式出现的地方。
2.由于表达式的值会被转化成String,所以您可以在一个文本行中使用表达式而不用去管它是否是HTML标签。
3.表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式。
JSP表达式的语法格式:
<%= 表达式 %>


JSP注释
<%-- 注释 --%> JSP注释,注释内容不会被发送至浏览器甚至不会被编译
<!-- 注释 --> HTML注释,通过浏览器查看网页源代码时可以看见注释内容


JSP指令(是在生成servlet时进行的)
JSP指令用来设置与整个JSP页面相关的属性。(就是servlet里的有关对象的属性)
JSP指令语法格式:
<%@ directive attribute="value" %>

<%@ page ... %> 定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等
<%@ include ... %> 包含其他文件
<%@ taglib ... %> 引入标签库的定义,可以是自定义标签

http://www.runoob.com/jsp/jsp-directives.html


JSP行为(是有请求时进行的)
JSP行为标签使用XML语法结构来控制servlet引擎。
一种语法格式:
<jsp:action_name attribute="value" />


include指令,它是在JSP文件被转换成Servlet的时候引入文件,而这里的jsp:include动作不同,插入文件的时间是在页面被请求的时候。
http://www.runoob.com/jsp/jsp-actions.html


JSP隐含对象
JSP支持九个自动定义的变量,江湖人称隐含对象。(就是servlet里默认包含的对象)
request HttpServletRequest类的实例
response HttpServletResponse类的实例
out PrintWriter类的实例,用于把结果输出至网页上
session HttpSession类的实例
application ServletContext类的实例,与应用上下文有关
config ServletConfig类的实例
pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
page 类似于Java类中的this关键字
Exception Exception类的对象,代表发生错误的JSP页面中对应的异常对象

http://www.runoob.com/jsp/jsp-implicit-objects.html


JSP 表单处理
JSP 读取表单数据
getParameter(): 使用 request.getParameter() 方法来获取表单参数的值。
getParameterValues(): 获得如checkbox类(名字相同,但值有多个)的数据。 接收数组变量 ,如checkbox类型
getParameterNames():该方法可以取得所有变量的名称,该方法返回一个Emumeration。
getInputStream():调用此方法来读取来自客户端的二进制数据流。

<form action="main.jsp" method="POST/GET">
站点名: <input type="text" name="name">
<br />
网址: <input type="text" name="url" />
<input type="submit" value="提交" />
</form>


JSP 过滤器(实际就是java的过滤器)
JSP 和 Servlet 中的过滤器都是 Java 类。
过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。
可以将一个或多个过滤器附加到一个 Servlet 或一组 Servlet。过滤器也可以附加到 JavaServer Pages (JSP) 文件和 HTML 页面。


JSP Cookie 处理
JSP Cookie 处理需要对中文进行编码与解码,方法如下:
String str = java.net.URLEncoder.encode("中文"); //编码
String str = java.net.URLDecoder.decode("编码后的字符串"); // 解码


使用JSP设置Cookie
Cookie cookie = new Cookie("key","value");//cookie名称和值做参数//名称和值中都不能包含空格或者如下的字符:[ ] ( ) = , " / ? @ : ;
cookie.setMaxAge(60*60*24);//设置有效期
response.addCookie(cookie);// 将cookie发送至HTTP响应头中

使用 JSP 读取 Cookie
Cookie cookie = null;
Cookie[] cookies = null;
// 获取cookies的数据,是一个数组
cookies = request.getCookies();
if( cookies != null ){
out.println("<h2> 查找 Cookie 名与值</h2>");
for (int i = 0; i < cookies.length; i++){
cookie = cookies[i];

out.print("参数名 : " + cookie.getName());
out.print("<br>");
out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>");
out.print("------------------------------------<br>");
}
}


使用JSP删除Cookie
Cookie cookie = null;
Cookie[] cookies = null;
// 获取当前域名下的cookies,是一个数组
cookies = request.getCookies();
if( cookies != null ){
out.println("<h2> 查找 Cookie 名与值</h2>");
for (int i = 0; i < cookies.length; i++){
cookie = cookies[i];
if((cookie.getName( )).compareTo("name") == 0 ){
cookie.setMaxAge(0);
response.addCookie(cookie);
out.print("删除 Cookie: " +
cookie.getName( ) + "<br/>");
}
out.print("参数名 : " + cookie.getName());
out.print("<br>");
out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>");
out.print("------------------------------------<br>");
}
}


JSP Session
if (session.isNew()){
title = "访问菜鸟教程实例";
session.setAttribute(userIDKey, userID);
session.setAttribute(visitCountKey, visitCount);
} else {
visitCount = (Integer)session.getAttribute(visitCountKey);
visitCount += 1;
userID = (String)session.getAttribute(userIDKey);
session.setAttribute(visitCountKey, visitCount);
}


JSP 页面重定向
public void response.sendRedirect(String location)
throws IOException

您也可以使用setStatus()和setHeader()方法来得到同样的效果:
....
String site = "http://www.runoob.com" ;
response.setStatus(response.SC_MOVED_TEMPORARILY);
response.setHeader("Location", site);
....


JSP 自动刷新
JSP提供了一种机制来使这种工作变得简单,它能够定时地自动刷新页面。
public void setIntHeader(String header, int headerValue)

<%
// 设置每隔5秒刷新一次
response.setIntHeader("Refresh", 5);
// 获取当前时间
Calendar calendar = new GregorianCalendar();
String am_pm;
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
if(calendar.get(Calendar.AM_PM) == 0)
am_pm = "AM";
else
am_pm = "PM";
String CT = hour+":"+ minute +":"+ second +" "+ am_pm;
out.println("当前时间为: " + CT + "\n");
%>


JSP 发送邮件


JSP 标准标签库(JSTL)(就是用标签的方式替代代码的一个库,方便使用)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jie310600

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值