天天看点

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

【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对象存储在客户端,可以实现“跨页面保持”。

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

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

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

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

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

六、servlet编程

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

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

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

2.设置欢迎页面

在web.xml中找到welcome-fle-list标签下的welcome-file字段中设置即可。部署后,浏览器地址栏的输入方法可以有两种。例如http://localhost:8888/Prj/cart3.jsp或http://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 范例
核心标签库 c http://java.sun.com/jsp/jstl/core < c:out >
I18N标签库 fmt http://java.sun.com/jsp/jstl/fmt < fmt:formatDate>
SQL标签库 sql http://java.sun.com/jsp/jstl/sql < sql:query >
XML标签库 x http://java.sun.com/jsp/jstl/xml < x:forBach >
函数标签库 fn http://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>
           
下一篇: 手机硬改

继续阅读