您的位置:首页 > Web前端 > JavaScript

jstl表达式--------【七】

2015-08-09 17:43 701 查看
JSP java server page动态网页

jsp: Servlet升级产品

动态网页(Servlet添加html)

jsp: html标签中添加java代码

1.命名 *.jsp

2.jsp中通过特定格式添加java代码

3.开发部署后,不要在web.xml配置

4.部署位置:应用下除了WEB-INF以外的任意位置(同HTML位置)

**WEB-INF 用户通过浏览器为无法直接访问

访问:同HTML

**jsp修改后不须要重新部署

脚本元素:(脚本:可执行的代码片段)

表达式脚本 <%=java表达式%>将其中的内容输出给浏览器

声明脚本 <%!方法,变量%>声明方法和成员变量

普通脚本 <% 普通java代码%>service方法中的 流程控制代码

作业:

输出一个9*9乘法表(不调错) 奇数行红色, 偶数行为蓝色

-------------------------------------------------------------

request.getRemoteAddr(); //客户端ip

request.getRemoteHost(); //主机名

---------------------------------------------------------------

JSP运行原理: (jsp的本质是一个Servlet程序)

1.浏览器通过url访问到tomcat中的jsp文件

2.tomcat将jsp文件翻译成servlet程序 .java文件

3.tomcat 翻译后的.java编译成.class文件

4.将.class创建对应的Servlet实例对象,执行service方法

脚本元素的翻译规则:

表达式脚本-----翻译成 out.println(表达式内容);

声明脚本------翻译成Servlet程序中的成员方法,成员变量

普通脚本-----翻译成servlet中service方法中的java代码

**普通html标签-----out.println(标签内容);

指令元素

页面指令:描述当前jsp文件(程序)的特征

<%@page 属性=“值” 属性=“值” %>

pageEncoding="UTF-8"规定jsp翻译servlet程序是,tomcat根据什么编码读取jsp文件

contentType="text/html;charset=UTF-8"最终的页面由浏览器解析时使用的编码格式

import="java.util.*,java.io.*"导入当前页面所使用的java api的包结构

session="true"|false

**servlet中只有第一次访问时执行request.getSession(); 才会创建session对象(懒汉式)

true: 访问时直接创建session(饿汉式)

false:
不会自动创建session

isErrorPage="true"|false
决定当前页面是否是错误页面

**当值为true当前页面会有隐含对象 exception

errorPage="错误页面的url-pattern"

**当当前页面有异常时,会跳转至,errorPage所指定的页面

包含指令

<%@include file='被包含的url-pattern'%>

**包含的是jsp文件源代码

应用:项目中需要引入大量的外部css样式,js文件。.需要使用时,包含已经引入css/js 内容的jsp文件即可

includeA.jsp(包含B)↘

all.jsp----all_jsp.java----all_jsp.class--执行

includeB.jsp


标签库指令:

<%@taglib uri='外部标签库的地址' prefix='前缀'%>

动作元素:

标签是成对出现

<jsp:include page="">

<jsp:param value="chengcheng" name="username"/>

</jsp:include>

//相当于servlet request.getRequestDispatcher().include(req,resp);

是在响应输出时,将数据包含 并响应给浏览器

includeA.jsp(包含B)---- aaa.java ----aaa.class---响应数据↘

--->浏览器

includeB.jsp
---- bbb.java ----bbb.class---响应数据↗

【了解】

<jsp:forward page=''>

<jsp:param name='' value=''/>

</jsp:forward>

//相当于servlet request.getRequestDispatcher().forward(req,resp);

**ServletA forward ---ServletB:可以通过request作用域传值

**param传值:相当于URL?name=value

=================================================================

jsp 9大内置对象(隐含对象)

**内置对象是jsp翻译后的servlet程序中service方法中的局部变量

**内置对象不能放在<%!声明脚本中%>

内置对象 类型

request
HttpServletRequest

--------------------------

通过URL?key=value 中文

username = URLEncoder.encode(中文值, "UTF-8");

--------------------------

response
HttpServletResponse

session
HttpSession

application
ServletContext

(应用级作用域:生命周期最长. web.xml在内存中的表现)

config
ServletConfig (当前jsp所对应的servlet程序的信息)

page this

out JspWriter

exception
Throwable

****只有当jsp中有 isErrorPage="true"

【pageContext】
PageContext

1.作用域:生命周期最短(只有当前页面能够使用)

pageContext.setAttribute("name",Object);//存

pageContext.getAttribute("name");//取

2.管理所有的作用域:

pageContext.getAttribute("name", int 作用域);

int:

pageContext.REQUEST_SCOPE

pageContext.SESSION_SCOPE

pageContext.APPLICATION_SCOPE

3.查找所有作用域中的值

pageContext.findAttribute("name");

**在所有的作用域中查找名字为name的值.

**查找顺序从pageCOntext--->application

**返回找到的第一个名字匹配的值

4.pageContext可以获得其他8个隐含对象

pageContext.getRequest();--request

pageContext.getSession();--session

pageContext.getServletContext();--application

.getServletConfig()--config

.getResponse()--response

.getPage()
--page

.getOut()
--out

.getException()--exception

=========================================================================

Servlet+JSP开发模式

----查询所有联系人:

1.用户:

点击(查询所有联系人)-------所有联系人(页面)

2.程序:

①完成用户看到的内容

②数据内容从哪里来

LoginSuccessView.jsp----showAllPersonAction
--showAllPersonView.jsp

<a href=''>查询所有..</a>查询persons信息
展示所有的Person信息

调用service

跳转forward

//JSP页面只作展示

//查询数据,处理数据,业务功能..(Action)

//所有jsp页面的数据全部有某个Servlet程序传递给jsp(xxxxAction)

//所有href和action 值 URI(包含项目名,动态获取)

3.实现:

Servlet

收集数据

调用service

//传递数据

负责跳转

JSP

展示数据

问题:

1.尽量不要jsp--->jsp

2.JSP只展示,ServletAction做业务处理

3.href='URI'; action="URI"

--------------

用户:

首页 -----显示页面

查询所有商品
显示所有商品信息

程序:

1.productIndex.jsp--------------QueryAllProductAction---------------showAllProductView.jsp

<a href=''></a>调用service查询所有商品
products

forward跳转

2.写业务对象ProductService

public List<Product> queryAllProducts();

3.写数据访问对象ProductDAO

public List<Product> selectAllProducts();

4.JDBCUtil复制;
Entity:Product

5.创建Product表

6.ojdbc5.jar导入环境

--------------------------------------------

EL 表达式: expression Language表达式语言

作用:将表达式的内容输出类浏览器

**替换jsp中所有的表达式脚本

书写格式:${表达式 expression}

1.

运算表达式

数学运算 +-
* /
%

逻辑运算 ==!=
< <=
> >=

&& || !

判断是否为null
${empty 变量}

**EL中数据弱类型

${10/4}
----2.5

${1=="1"}-----true

2.访问请求参数中的数据

请求参数:表单|URL?key=value

${param.请求参数的名字}===
<%=request.getParameter("请求参数名字")%>

3.获得作用域中的值

${pageScope.命名属性名}--------<%=pageContext.getAttribute("命名属性名")%>

${requestScope.命名属性名}------<%=request.getAttribute("命名属性")%>

${sessionScope.命名属性名}

${applicationScope.命名属性名}

4.访问cookie

<%

Cookie[] cs = request.getCookies();

for(Cookie c:cs){

if(c.getName().equals("JSESSIONID")){

out.println(c.getValue());

}

}

%>

${cookie.JESSIONID.value}

5.访问对象:数组:ListMap

访问对象属性

${对象.属性名}

数组:${array[下标]}

list集合:${list[下标]}

map:${map.key}--获得map的值

***map的key是String

***map的key(首字母不能为数字)

6.

EL内置对象

param pageScoperequestScope
sessionScopeapplicationScope

cookie
pageContext

${pageContext.request.contextPath}------/应用名

====================================================================

作业:

将通讯录中所有jsp表达式脚本修改为EL表达式

商品管理系统:添加商品功能
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: