13jsp、javaWeb开发模式
13jsp、javaWeb开发模式-2018/07/25
- 1.jsp
- jsp实际上就是servlet。jsp=html+java,为用户提供动态内容
- 不适合编写Java逻辑
- 2.JSP原理
- 翻译(生成Java文件)-> 编译(生成class问文件) -> 执行
- 3.jsp的最佳实践
- servlet:控制器。重点编写Java代码逻辑(获取表单数据,处理业务逻辑,分发转向)
- JSP:代码显示模板,重点在于显示数据
- 4.jsp的基本语法
- 1、JSP模版元素:网页的静态内容。如:html标签和文本。
- 2、JSP的脚本
- 小脚本 <% java代码 %>
- 表达式 <%= 2+3 %> 等价于out.print(2+3);不能加分号
- 3、声明
- <%! %> 表示在类中定义全局成员,和静态块。
- 3、JSP注释
- JSP注释:<%-- 被注释的内容 --%> 特点:安全,省流量
- 网页注释: 特点:不安全,费流量
- 3指令 6动作 9内置对象
- 5.JSP的三个指令
- page指令 Include指令 taglib指令
- 语法:<%@ 指令名称 属性1=“属性值1” 属性2=“属性值2”...%>
- page:用于定义JSP页面的各种属性
- <%@ page import="java.util.Date,java.util.List"%>不同包用逗号隔开
- JSP会自动导入以下的包: import java.lang.; import javax.servlet.; import javax.servlet.http.; import javax.servlet.jsp.;
- 自动创建session对象
- JSP中有javax.servlet.jsp.JspWriter输出字符流
- errorPage: 如果页面中有错误,则跳转到指定的资源。
- errorPage="/uri" 如果写“/”则代表当前应用的目录下,绝对路径。
- 如果不写“/”则代表相对路径。
- isErrorPage: 是否创建throwable对象。默认是false; 得到一个excepion对象,通过getMessage可以获取信息
- contextType: 等同于response.setContextType("text/html;charset=utf-8");
- pageEncoding: 告诉JSP引擎要翻译的文件使用的编码。
- isELIgnored: 是否不支持EL表达式。 默认是false;${1+1},相当于输出2
- Include
- 静态包含:把其它资源包含到当前页面中。 <%@ include file="/include/header.jsp" %>
- 动态包含: <jsp:include page="/include/header.jsp"></jsp:include>
- 两者的区别:翻译的时间段不同 前者:在翻译时就把两个文件合并 后者:不会合并文件,当代码执行到include时,才包含另一个文件的内容。
- 原则:能用静的就不用动的。
- taglib
- 作用:在JSP页面中导入JSTL标签库。替换jsp中的java代码片段。 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="别名" %>
- 6.jsp的6个动作
- <jsp:useBean> 创建一个对象
- <jsp:useBean id="stu1" class="class.itheima.entity.Student"></jsp:useBean>
- <jsp:setProperty> 给指定的对象属性赋值
- <jsp:setProperty property="name" name="stu1" value="jerry"/>
- <jsp:getProperty> 取出指定对象的属性值
- <jsp:getProperty property="name" name="stu1"/>
- <jsp:include > 动态包含
- <jsp:forward> 请求转发
- 相当于request.getRequestDis
- <jsp:param> 设置请求参数
- <jsp:param value="123" name="name"/>
- 相当于http://localhost:8080/项目name/1.jsp?name=123
- <jsp:useBean> 创建一个对象
- 7.jsp的9个内置对象
- 指在JSP的<%=%> 和<% %>中可以直接使用的对象
- request(javax.servlet.http.HttpServletRequest)存放的数据一次请求转发有效,使用最多,省内存
- response(javax.servlet.http.HttpServletResponse)
- session(javax.servlet.http.HttpSession)由session="true"开关,存放的数据在一次会话中有效。如:存放用户登录信息,购物车功能。
- application(javax.servlet.ServletContext)存放的数据在整个应用内有效,因为范围太大,少用。
- exception(java.lang.Throwable)由isErrorPage="false"开关
- page(java.lang.Object当前对象this)当前servlet实例
- config(javax.servlet.ServletConfig)当前JSP的配置信息
- out(javax.servlet.jsp.JspWriter)字符输出流,相当于 printWriter对象
- pageContext(javax.servlet.jsp.PageContext)可以得到以上所有的对象,当前界面有效。
- 本身也是一个域对象:它可以操作其它三个域对象(request session application)的数据
- void setAttribute(String name,Object o);
- Object getAttribute(String name);
- void removeAttribute(String name);
- 操作其它域对象的方法
- void setAttribute(String name,Object o,int Scope);
- Object getAttribute(String name,int Scope);
- void removeAttribute(String name,int Scope);
- scpoe的值:PageContext.PAGESCOPE;PageContext.REQUESTSCOPE ;PageContext.SESSIONSCOPE;PageContext.APPLICATIONSCOPE(作用域最大)
- findAttribute(String name);自动从page,request,session,application依次查找,直到找到为止
- 创建其它的8个隐式对象,在普通类中可以通过PageContext获取其他JSP隐式对象。自定义标签时就使用。
- 提供了的简易方法
- pageContext.forward("2.jsp");转发
- pageContext.include("2.jsp");
- 本身也是一个域对象:它可以操作其它三个域对象(request session application)的数据
- 8.El表达式
- 简化jsp中java代码。它不是一种开发语言,是jsp中获取数据的一种规范
- 具体功能
- 获取数据
- EL表达式只能获取存在4个作用域中的数据
- ${u} 原理: pageContext.findAttribute("u");
- EL获取对于null这样的数据,在页面中表现为空字符串
- ${u.name} == u.getName()方法。点(.) 运算符相当于调了getter方法,点后页面跟的是属性名。${u.city.address}属性导航。
- []运算符:点能做的,它也能做; 它能做的,点不一定能做
- EL表达式只能获取存在4个作用域中的数据
- 运算
- empty:判断null,空字符串和没有元素的集合(即使集合对象本身不为null)都返回true
- 三元运算符
- ${empty list ? "你还没买商品":"商品如下"};
- 隐式对象(11个)
- pageContext---javax.servlet.jsp.PageContext---与JSP的pageContext一样的
- ${pageContext.request.contextPath}
- pageScope---java.util.Map<String,Object>---pageContext范围中存放的数据,页面范围
- requestScope---java.util.Map<String,Object>---请求范围数据
- sessionScope---java.util.Map<String,Object>---会话范围数据
- applicationScope---java.util.Map<String,Object>---应用范围数据
- ${applicationScope.p}指定访问
- param---java.util.Map<String,String>---一个请求参数
- ${param.user}==request.getParameter("user");表单数据
- paramValues---java.util.Map<String,String[]>---重名请求参数
- ${paramValues.hobby[0]}
- header---java.util.Map<String,String>---一个请求消息头(浏览器的)
- headerValues---java.util.Map<String,String[]>---重名请求消息头
- initParam---java.util.Map<String,String>---web.xml中全局参数
- cookie----java.util.Map<String,Cookie>---key:cookie对象的name值
- ${cookie.JSESSIONID.value}
- pageContext---javax.servlet.jsp.PageContext---与JSP的pageContext一样的
- 获取数据
- 9.JSTL
- 使用JSTL实现JSP页面中逻辑处理。
- 使用的时候在JSP页面添加taglib指令
- 常用标签介绍
- 核心标签库:
- 通用标签: set声明变量/out输出数据/remove移除
- 条件标签:if/choose
- <c:if test="${5>3}">aaaaa</c:if>
- <c:set var="num" value="${3}"></c:set> <c:choose> <c:when test="${num==1}" >第1名</c:when> <c:when test="${num==3}" >第3名</c:when> </c:choose>
- 迭带标签:foreach
- 普通循环 <c:forEach var="i" begin="1" end="10" step="1"> ${i}</c:forEach>相当于for(var i=1;i<=10;i++)
- 迭带器 <c:forEach items="${集合或数组}"var="你设置的名字" varStatus="vs" > </c:forEach>
- varStatus属性:指向一个字符串,该字符串引用一个对象。
- 底层:map.put("vs",一个对象);
- 这个对象记录着当前遍历的元素的一些信息:
- getIndex():返回索引。从0开始
- getCount():返回计数。从1开始
- isLast():是否是最后一个元素
- isFirst():是否是第一个元素
- 核心标签库:
- 10.javaWeb开发模式
- c/s:客户端、服务器(胖客户端)
- b/s:浏览器、服务器(瘦客户端)
- javabean:无参构造,私有属性,get和set方法
- model模式
- JSP+JavaBean(只适合教学)
- JSP+Servlet+JavaBean
- MVC开发模式:
- model模型 Javabean四种作用域;
- View视图 JSP;
- Controller控制器 servlet
- MVC开发模式:
13jsp、javaWeb开发模式的更多相关文章
- JavaWeb学习笔记(十一)—— JavaWeb开发模式【转】
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...
- JavaWeb chapter10 JavaWeb开发模式
1. 开发模式 (1)开发模式1:JSP+JavaBean (2)开发模式2:Servlet+JSP+JavaBean (MVC) 2.JavaBean 本质上是一个普通的Java类:需要遵循一定的 ...
- javaWeb开发模式
1.发展历程 2.模式分析 JSP+JavaBean模式适合开发业务逻辑不太复杂的web服务程序.这种模式下,JavaBean用于封装业务数据,JSP即负责处理用户请求,又显示数据(JSP编写业务逻辑 ...
- 浅析JavaWeb开发模式:Model1和Model2
一.前言 在学习JavaWeb的过程中,大家都会接触到Model1和Model2,历史的发展过程是Model1 → Model2.那么它们之间有何相同之处和不同之处呢? 二.Model1 Model1 ...
- JavaWeb开发之详解Servlet及Servlet容器
自JavaEE诞生伊始,Servlet容器和Servlet技术,就构成了JavaEE应用的核心,配合其它组件,它们完善了Java企业级开发的全套解决方案.小到一个静态博客网站,大到分布式的集群应用,都 ...
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- javaweb学习总结(二十一)——JavaWeb的两种开发模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...
- javaweb的开发模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...
- JavaWeb学习 (二十一)————基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
随机推荐
- 有banner的uid数, 有logo的uid数 , 交集数
[len(i) for i in [banners_uid_set,logos_uid_set,banners_uid_set&logos_uid_set]] import glob impo ...
- go语言---for range
学习-go语言坑之for range https://www.cnblogs.com/hetonghai/p/6718250.html go只提供了一种循环方式,即for循环,在使用时可以像c那样使用 ...
- 【JSOI 2011】 分特产
[题目链接] 点击打开链接 [算法] 考虑求每个人可以不分的方案 那么,对于每件物品,我们把它分成n份,每一份对应分给每一个人,有C(a[i]+n-1,m-1)种方案,而总方案数就是每种 物品方案数的 ...
- centos 重装docker
docker应该是root用户来使用,因为他连接了底层!!!以下操作默认是root用户来操作的 停止所有正在运行的容器: docker stop $(docker ps -a -q) 删除所有的容器c ...
- 指向“”的 script 加载失败
今天遇到了一个非常奇怪的问题:在某个同时的电脑上,所有浏览器无法打开某个页面,F12查看控制台,发现有一个黄色的 指向“xxxx.js”的 <script> 加载失败 的提示.该外部js文 ...
- redis在linux安装和开机启动和结合php运用方法一
第一部分:安装redis 希望将redis安装到此目录 1 /usr/local/redis 希望将安装包下载到此目录 1 /usr/local/src 那么安装过程指令如下: 1 2 3 4 5 6 ...
- $CF241D\ Numbers$
problem 题目大意: 给你n个数和p,都小于50000要求留下若干个数字,使得剩下的数字异或为0,并且从左到右串联起来可以被p整除,求一种这样的方案. 搜索 #include <bits/ ...
- 洛谷P3383 【模板】线性筛素数 (埃拉托斯特尼筛法)
题目描述 如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入输出格式 输入格式: 第一行包含两个正整数N.M,分别表示查询的范围和查询的个数. 接下来M行每行 ...
- [Qt Creator 快速入门] 第9章 国际化、帮助系统和Qt插件
一.国际化 国际化的英文表述为Internationalization,通常简写为I18N(首尾字母加中间的字符数),一个应用程序的国际化就是使该应用程序可以让其他国家的用户使用的过程. Qt支持现在 ...
- AGC16E Poor Turkeys
输入样例: 10 10 8 9 2 8 4 6 4 9 7 8 2 8 1 8 3 4 3 4 2 7 输出样例#6: 5 话说这题虽然不是很OI但是确实挺锻炼思维的 一开始以为是用并查集之类的东西维 ...