【JSP】JSP学习笔记&servlet编程

【JSP】学习笔记

目录

【JSP】学习笔记

二、JSP代码使用小贴士

三、JSP指令与动作类型

四、Responce对象的redirect方法(sendRedirect函数)与forward指令方法的区别

五、session对象与application对象

六、servlet编程


一、JSP中主要的代码形式

JSP代码形式
类型代码形式
JSP注释 <%--       --%>   
JSP表达式<%=变量/返回值/表达式>
JSP程序段

<% Java代码 %>

JSP声明变量、方法、类<% !代码 %>
JSP指令<% @指令类别   属性值="  " ....  %>

二、JSP代码使用小贴士

  1. JSP程序段不能定义函数。
  2. JSP表达式不能以";"结束。
  3. JSP表达式不能出现多条语句。
  4. JSP表达式中内容只能为字符串类型。

三、JSP指令与动作类型

  1. JSP指令:page/include/taglib
  2. JSP动作:include/forward/useBean/setProperty/getProperty/plugin

四、Responce对象的redirect方法(sendRedirect函数)与forward指令方法的区别

  1. redirect方法属于客户端操作,会改变浏览器的地址显示;forward属于服务器端操作,不会改变浏览器的地址显示。
  2. redirect方法不能使当前页面与目标页面共享request中的数据,但forward方法可以共享。
  3. redirect方法可以重定向到当前应用程序的其他资源或其他应用程序的资源,如百度页面;但forward方法只能在同一个web应用程序的资源间转发请求。
  4. redirect方法效率较低,forward方法效率较高。

五、session对象与application对象

1.session对象存储在客户端,可以实现“跨页面保持”。

session原理图(图源于网络,侵删)

2.application存储在服务器端,可以实现所有用户共享对象。(狗头)

application原理图(图源于网络,侵删)

六、servlet编程

1.生命周期:init()初始化、service()调用get或post请求方法、destroy()消亡。

Servlet生命周期图(图源于网络,侵删)

2.设置欢迎页面

在web.xml中找到welcome-fle-list标签下的welcome-file字段中设置即可。部署后,浏览器地址栏的输入方法可以有两种。例如http://localhost:8888/Prj/cart3.jsphttp://localhost:8888/Prj/都可以进入同一个欢迎页面。

3.在Servlet中读取参数

  • 全局参数(必须放在web.xml的最上面!)
  <context-param>
    <param-name>全局参数名称</param-name>
    <param-value>全局参数值</param-value>
  </context-param>

获取全局参数的方法如下:

ServletContext application = this.getSerletContext();
application.getInitParameter("参数名称");
  • 局部参数
<servlet>
    <servlet-name>Servlet名称</servlet-name>
    <servlet-class>Servlet类路径</servlet-class>
    <init-param>
      <param-name>局部参数名称</param-name>
      <param-value>局部参数值</param-value>
    </init-param>
  </servlet>

获取局部参数的方法如下:

this.getInitParameter("参数名称");

七、JavaBean

  • 定义JavaBean
<jsp:useBean id="idName(实例名称)" class="package.class" scope="page|session|..."></jsp:useBean>
  • 设置JavaBean属性

1.值的来源是String常量时,设置方法如下

<jsp:setProperty property="属性名称" name="对象名" param="常量" />

2.值的来源是request参数时,设置方法如下:

<jsp:setProperty property="属性名称" name="对象名" param="参数名" />
  • 获取JavaBean属性
<jsp:getProperty property="属性名称" name="bean对象名" />

八、EL与JSTL

1.EL(作用于JSP表达式相同)

1.1基本运算符

EL的运算符"."与"[]"功能几乎一致,但有两种情况只能使用"[]"运算符:

  • 当存取的数据的名称中包含特殊字符(字母与数字符号以外的);

  • 当动态取值时,如${sessionScope.对象名[param]},其中param是变量参数。

在使用关系运算符时,判断两个变量是否相等只能采取第一种形式,不能采取另外两种形式。

  • ${ 变量1 == 变量2 }

  • ${变量1} == ${变量2}

  • ${ ${变量1} == ${变量2} }

empty运算符,即$ { empty A }只有当A为null/不存在/空字符串/空数组时才会返回true,其他情况返回false。

1.2数据访问

JSP中存在四种作用域:pageScope、requestScope、sessionScope、applicationScope。使用方法是$ { XXXScpoe.对象}。

  • 注意:当在不同作用域存在同名对象时,会按以下顺序查找:pag=>request=>session==>application。

EL中定义了五个隐含对象,在数据访问时可以调用这些对象,包括pageContext/param/paramValues/cookie/initParam,调用方式如$ { cookie.对象名称.属性名称 }

2.JSTL

2.1.JSTL标签库

JSLT标签库
JSTL推荐前缀URI范例
核心标签库chttp://java.sun.com/jsp/jstl/core< c:out >
I18N标签库fmthttp://java.sun.com/jsp/jstl/fmt< fmt:formatDate>
SQL标签库sqlhttp://java.sun.com/jsp/jstl/sql< sql:query >
XML标签库xhttp://java.sun.com/jsp/jstl/xml< x:forBach >
函数标签库fnhttp://java.sun.com/jsp/jstl/functions< fnL:sqlit >

注意:引入标签库时,需要在page指令之后加入taglib指令

2.2.核心标签库

2.2.1显示数据:<c:out value="变量名" escapeXml="true"></c:out>,escapeXml属性为false ,不会显示HTML标签。

2.2.2赋值数据:<c:set value="变量值" scope="session" var="变量名"></c:set>

2.2.3删除变量:<c:remove var="变量名" scope="session" ></c:remove>

2.2.4流程控制

  • 简单条件
<c:if test = "${判断条件}">..........</c:if>
  • 复杂条件
<c:choose>
<c:when test="${条件1}">代码段</c:when>
...
<c:when test="${条件n}">代码段</c:when>
<c:otherwise>代码段</c:otherwise>
</c:choose>
  • 循环控制
<c:forEach var="元素名" items="集合名" begin="起始" end="结束" step="步长">
代码段
</c:forEach>

九、AJAX

AJAX实现的核心代码有五个步骤,实例如下 。

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>
  	<SCRIPT LANGUAGE="JavaScript">
  	function showInfo(){
  		var xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");//步骤一:在IE中实例化Msxml2.XMLHTTP对象
		xmlHttp.open("GET", "info.jsp", true);//步骤二:指定异步提交的目标和提交方式		
		xmlHttp.onreadystatechange=function() {//步骤三:指定xmlHttp状态改变时的处理方法
			if (xmlHttp.readyState==4) {//步骤四:编写处理方法代码
				infoDiv.innerHTML = xmlHttp.responseText;
			}
		}
		xmlHttp.send();//步骤五:发出请求
	}
	</SCRIPT>  
  </body>
</html>

 


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

仰望星空€

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

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

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

打赏作者

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

抵扣说明:

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

余额充值