SlideShare una empresa de Scribd logo
1 de 6
Descargar para leer sin conexión
jsp 基础速成精华讲解

Servlet 三个要素:
1.必须继承自 HttpServlet
2.必须实现 doGet()或者 doPost()
3.必须在 web.xml 中配置 Servlet
<servlet>
<servlet-name> </servlet-name>
<servlet-class> </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> </servlet-name>
<url-pattern> </url-pattern>
</servelt-mapping>

HttpServeltRrequest:请求对象
getParameter():获得表单元素的值
getAttribute():获得 request 范围中的属性值
setAttribute():设置 reqeust 范围中的属性值
setCharacterEncoding():设置字符编码

HttpSerletResponse:相应对象
sendRedirect():外部跳转
getWriter():获得输出流对象
setContentType("text/html; charset=utf-8"):设置相应内容格式和编码

四种会话跟踪方式:
1.Session
HttpSession session = request.getSession();
session.setAttribute("name", "zhangsan");
session.setAttribute("pwd", "aaa");
String name = (String) session.getAttribute("name");

2.cookie:
//创建 Cookie
Cookie cookie = new Cookie("name", "zhangsan");
//设置 Cookie 的超时时间
cookie.setMaxAge(24 * 60 * 60 *60);
//把 Cookie 发送到客户端
response.addCookie(cookie);

//得到客户端发送的 Cookie
Cookie [] cookies = request.getCookies();
for(int i=0; i <cookies.length; i++) {
Cookie temp = cookies[i];
String key = temp.getName();
String value = temp.getValue();
}

3.隐藏表单域
<input type="hidden" name="name" value="zhangsan" />
request.getParameter("name");
4.Url 重写
问号传参
LoginServlet?username=zhangsan&pwd=123
String name = request.getParameter("username");
String pwd =request.getPareameter("pwd");

内部跳转:
LoginServlet
request.getRequestDispatcher("index.jsp").forward(request, resposne);
外部跳转:
response.sendRedirect("index.jsp");
内部跳转是一次请求和一次响应
外部跳转是两次请求和两次响应

ServletContext:Servlet 上下文对象
它是一个公共区域,可以被所有的客户端共享
setAttribute():向公共区域里放入数据
getAttribute():从公共区域里取数据

二:
三:三个标准范围:request, session, ServletContext
共同点:都有 setAttribute(), getAttribute()
区别:范围不同,request < session < servletContext
四:四种会话跟踪方式
五:服务器上的五大对象
request, response, servlet, session, servletContext

Jsp:Java Server Page
页面构成:7 种元素
1.静态内容:html
2.指令:page, include, taglib:
<%@ 指令名 属性 1="属性值 1" 属性 2="属性值 2" %>
3.表达式: <%=表达式 %>
4.Scriptlet <% Java 代码 %>
5.声明: <%! %>:变量和方法
6.动作: <jsp:动作名 属性="属性值"> </jsp:动作名>
7.注释:
客户端看不到的: <%-- --%>
客户端可以看到的: <!-- -->


Jsp 的执行过程:
1.转译:Jsp--->Servlet
2.编译:Servlet---->.class
3.执行:.class
第一次访问 jsp 的时候响应速度较慢,后面请求时响应速度快

脚本:
表达式: <%= %>
Scriptlet: <% %>
声明: <%! %>

指令:
page:language, import, errorPage, isErrorpage
include:file
taglib:uri:指定标签库描述符的路径 prefix:指定标签的前缀

隐式对象:
分类:
1.输入和输出对象:request(HttpServletRequest),
response(HttpServletResponse),
out(JspWriter), servlet 中的 out 是 PrintWriter
2.作用域通信对象:pageContext, request,
session(HttpSession),
application(ServletContext)
3.Servlet 对象:page(this), config
4.错误对象:exception

JavaBean:
一个标准的 JavaBean 有三个条件
1.共有的类
2.具有不带参数的公共的构造方法
3.具有 set()和 get()方法
4.私有属性

Jsp 中的标准动作:
1.useBean:创建 JavaBean 的一个实例
<jsp:useBean id="stu" class="com.westaccp.test.Student"
scope="page/session/application/request" />
2.setProperty:给 JavaBean 的属性赋值
<jsp:setProperty name="stu" property="stuName" value="zhangsan" />
<jsp:setProperty name="stu" property="stuName" param="txtName" />
value 和 param 不能同时使用
偷懒的方法: <jsp:setProperty name="stu" property="*" />
这个时候需要注意的是,表单元素的名字必须和 JavaBean 的属性值
一模一样
3.getProperty:获得 JvaBean 的属性值
<jsp:getProperty name="stu" property="stuName" />
4.forward:内部跳转,相当于 request.getRequestDispatcher().forward(request, response);
<jsp:forward page="index.jsp" />
5.include:包含
<jsp:include page="header.jsp" flush="true" />

表达式语言:
EL: Expression Language
语法格式: ${表达式 }
表示式 = 运算符 + 操作数
运算符:跟 Java 比较,多了一个 empty, 少了一个赋值运算符
${empty ""} : true
${empty null} :true
操作数:
-->常量:布尔型(true/false), 整型, 浮点型, 字符串(可以用'', 还可以用""), Null
-->变量:
1.指的是放在四个标准范围里的属性(page, request, session, application)
2.在编准范围内的搜索顺序:page-->request--->session--->application
3.怎么取得变量值:点运算符., 还以用[]
<%
request.setAttribute("name", "lisi");
%>
${requestScope.name}
或者
${requestScope["name"]}
-->隐式对象
1.pageContext:通过它可以访问 request, session, servletContext
2.跟范围由关的:pageScope, requestScope, sessionScope, applicationScope
3.跟输入有关的:param, paramValues
4.其他的:header, cookie, headervalues,

EL 表达式适用的场合:
1.可以在静态文本中使用
2.与自定义标签结合使用
3.和 JavaBean 结合使用
<jsp:userBean id="stu" class="com.westaccp.test.Student" scope="session" />
<jsp:setProperty name="stu" property="stuName" value="hello" />
${stu.stuName}

自定义标签:
1.标签处理程序实现
--->实现:继承自 BodyTagSupport 或者 TagSupport
一般会重写 doStartTag(), doEndTag(), doAfterBody()
--->描述:在标签库描述符文件中描述(.tld)
<taglib>
<tlib-version>1.0 </tlib-version>
<jsp-version>2.0 </jsp-version>
<short-name>simpletag </short-name>

<tag>
<name>showbody </name>
<tag-class>com.westaccp.test.ShowBodyTag </tag-class>
<body-content>empty/jsp </body-content>
<attribute>
<name>color </name>
</attribute>
</tag>
</taglib>
--->使用: <%@ taglib uri="WEB-INF/mytag.tld" prefix="my" %>
<my:showbody />
2.标签文件
--->实现和描述
在.tag 文件中实现
设置主体内容: <%@ body-content="empty/scriptless" %>
设置属性: <%@ attribute name="name" required="true" rtexprvalue="true" %>
有主体内容: <jsp:doBody scope="session" var="theBody" />
<%
String body = (String) session.getAttribute("theBody");
%>
--->使用
WEB-INF/tags/sayhello.tag
<%@ taglib tagdir="/WEB-INF/tags/" prefix="you" %>
<you:sayhello />

标准标签库:
1.核心标签库
-->通用:
set: <c:set var="" value="" scope="" />
out: <c      ut value="" />
remove: <c:remove var="" scope="" />
-->条件:
if: <c:if test="">..... </c:if>
choose: <c:choose>
<c:when test="">... </c:when>
<c:when test="">... </c:when>
<c:when test="">... </c:when>
.....
<c    therwise>... </otherwise>
</c:choose>
-->迭代:
forEach: <forEach var="" items="" varStatus="" begin="" end="">
foTokens: <foTodens var="" items="" delim=",; ¦"> </foTodens>
Java,C#;SQL ¦C
2.I18N 与格式化标签库
-->setLocale:设置本地区域
-->bundle:设置资源包
-->setBundle:设置资源包
-->message:输出消息
3.SQL 标签库
-->setDataSource:设置数据源,用于获得与数据库的连接
-->query:执行查询
-->update:执行增,删,改
-->transaction:事务
-->param:参数
4.XML 标签库

过滤器:
生命周期:
1.实例华:
2.初始化:init()
3.过滤:doFilter()
4.销毁:destroy()
5.不可用

配置:
<filter>
<filter-name> </filter-name>
<filter-class> </filter-class>
</filter>
<filter-mapping>
<filter-name> </filter-name>
<url-pattern> </url-pattern>
</filter-mapping>

几个重要的接口:
1.Filter:init(), doFilter(), destroy()
2.FilterChain: doFilter(request, response)
3.FilterConfig:getFilterName(), getInitParameter(),

过滤器链:--->1--->2--->3--->Servlet 请求
<----1 <---2 <---3 <--- 响应

MvC 设计模式
1.ModelI:jsp+JavaBean
2.ModelII:jsp+Servlet+JavaBean
jsp---view
servlet---control
javabean---model

MVC:
M--Model:模型:访问后台数据库
V--view:视图:展示
C--control:控制器:控制程序流程

ModelII 和 MVC 的关系:
MVC 是一种设计模式,ModelII 它是 MVC 的一种具体的实现

Más contenido relacionado

La actualidad más candente

用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Servicesjavatwo2011
 
LazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHPLazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHPLin Yo-An
 
第一次用 PHPUnit 寫測試就上手
第一次用 PHPUnit 寫測試就上手第一次用 PHPUnit 寫測試就上手
第一次用 PHPUnit 寫測試就上手Yi-Ming Huang
 
Java华为面试题
Java华为面试题Java华为面试题
Java华为面试题yiditushe
 
OpenEJB - 另一個選擇
OpenEJB - 另一個選擇OpenEJB - 另一個選擇
OpenEJB - 另一個選擇Justin Lin
 
Spring 2.0 技術手冊第八章 - View 層方案、Web 框架整合
Spring 2.0 技術手冊第八章 - View 層方案、Web 框架整合Spring 2.0 技術手冊第八章 - View 層方案、Web 框架整合
Spring 2.0 技術手冊第八章 - View 層方案、Web 框架整合Justin Lin
 
Maintainable PHP Source Code
Maintainable PHP Source CodeMaintainable PHP Source Code
Maintainable PHP Source CodeBo-Yi Wu
 
8, bes tables & api
8, bes tables & api8, bes tables & api
8, bes tables & apited-xu
 
網頁設計 - 資料庫存取
網頁設計 - 資料庫存取網頁設計 - 資料庫存取
網頁設計 - 資料庫存取Vincent Chi
 
钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会Zhi Zhong
 
那 Angular 那 AJAX 那 RESTful
那 Angular 那 AJAX 那 RESTful那 Angular 那 AJAX 那 RESTful
那 Angular 那 AJAX 那 RESTful功豪 魏
 
J2ee经典学习笔记
J2ee经典学习笔记J2ee经典学习笔记
J2ee经典学习笔记yiditushe
 
Php for fe
Php for fePhp for fe
Php for fejay li
 
4, workflow tables & api
4, workflow tables & api4, workflow tables & api
4, workflow tables & apited-xu
 
Spring 2.0 技術手冊第十章 - 專案:線上書籤
Spring 2.0 技術手冊第十章 - 專案:線上書籤Spring 2.0 技術手冊第十章 - 專案:線上書籤
Spring 2.0 技術手冊第十章 - 專案:線上書籤Justin Lin
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验QLeelulu
 

La actualidad más candente (20)

PHP
PHPPHP
PHP
 
用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services
 
LazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHPLazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHP
 
第一次用 PHPUnit 寫測試就上手
第一次用 PHPUnit 寫測試就上手第一次用 PHPUnit 寫測試就上手
第一次用 PHPUnit 寫測試就上手
 
Java华为面试题
Java华为面试题Java华为面试题
Java华为面试题
 
OpenEJB - 另一個選擇
OpenEJB - 另一個選擇OpenEJB - 另一個選擇
OpenEJB - 另一個選擇
 
Spring 2.0 技術手冊第八章 - View 層方案、Web 框架整合
Spring 2.0 技術手冊第八章 - View 層方案、Web 框架整合Spring 2.0 技術手冊第八章 - View 層方案、Web 框架整合
Spring 2.0 技術手冊第八章 - View 層方案、Web 框架整合
 
Maintainable PHP Source Code
Maintainable PHP Source CodeMaintainable PHP Source Code
Maintainable PHP Source Code
 
8, bes tables & api
8, bes tables & api8, bes tables & api
8, bes tables & api
 
網頁設計 - 資料庫存取
網頁設計 - 資料庫存取網頁設計 - 資料庫存取
網頁設計 - 資料庫存取
 
钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会
 
那 Angular 那 AJAX 那 RESTful
那 Angular 那 AJAX 那 RESTful那 Angular 那 AJAX 那 RESTful
那 Angular 那 AJAX 那 RESTful
 
J2ee经典学习笔记
J2ee经典学习笔记J2ee经典学习笔记
J2ee经典学习笔记
 
RESTful API Design
RESTful API DesignRESTful API Design
RESTful API Design
 
Php for fe
Php for fePhp for fe
Php for fe
 
4, workflow tables & api
4, workflow tables & api4, workflow tables & api
4, workflow tables & api
 
Json知识分享
Json知识分享Json知识分享
Json知识分享
 
Spring 2.0 技術手冊第十章 - 專案:線上書籤
Spring 2.0 技術手冊第十章 - 專案:線上書籤Spring 2.0 技術手冊第十章 - 專案:線上書籤
Spring 2.0 技術手冊第十章 - 專案:線上書籤
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验
 
JQuery Plugin
JQuery PluginJQuery Plugin
JQuery Plugin
 

Destacado

微软迎来35岁生日:盘点经典时刻
微软迎来35岁生日:盘点经典时刻微软迎来35岁生日:盘点经典时刻
微软迎来35岁生日:盘点经典时刻wensheng wei
 
Windows下22个实用的代码编辑器
Windows下22个实用的代码编辑器Windows下22个实用的代码编辑器
Windows下22个实用的代码编辑器wensheng wei
 
入门-Java运行环境变量的图文教程
入门-Java运行环境变量的图文教程入门-Java运行环境变量的图文教程
入门-Java运行环境变量的图文教程wensheng wei
 
无数据库日志文件恢复数据库方法两则
无数据库日志文件恢复数据库方法两则无数据库日志文件恢复数据库方法两则
无数据库日志文件恢复数据库方法两则wensheng wei
 
存储过程入门与提高
存储过程入门与提高存储过程入门与提高
存储过程入门与提高wensheng wei
 
[转]Java 专业人士必备的书籍和网站列表
[转]Java 专业人士必备的书籍和网站列表[转]Java 专业人士必备的书籍和网站列表
[转]Java 专业人士必备的书籍和网站列表wensheng wei
 
中国矿产资源潜力与勘查前景分析
中国矿产资源潜力与勘查前景分析中国矿产资源潜力与勘查前景分析
中国矿产资源潜力与勘查前景分析wensheng wei
 
Installation of Subversion on Ubuntu,...
Installation of Subversion on Ubuntu,...Installation of Subversion on Ubuntu,...
Installation of Subversion on Ubuntu,...wensheng wei
 
GHOST系统备份图解
GHOST系统备份图解GHOST系统备份图解
GHOST系统备份图解wensheng wei
 
认识一些基于Linux系统的木马病毒
认识一些基于Linux系统的木马病毒认识一些基于Linux系统的木马病毒
认识一些基于Linux系统的木马病毒wensheng wei
 
建立Access数据库的安全门
建立Access数据库的安全门建立Access数据库的安全门
建立Access数据库的安全门wensheng wei
 
原创 读《大话设计模式》---外观模式(Facade) 收藏
原创 读《大话设计模式》---外观模式(Facade) 收藏原创 读《大话设计模式》---外观模式(Facade) 收藏
原创 读《大话设计模式》---外观模式(Facade) 收藏wensheng wei
 
最重要的 Java EE 最佳实践
最重要的 Java EE 最佳实践最重要的 Java EE 最佳实践
最重要的 Java EE 最佳实践wensheng wei
 
Java 操作 Excel (读)
Java 操作 Excel (读)Java 操作 Excel (读)
Java 操作 Excel (读)wensheng wei
 
Java 6中的线程优化真的有效么?
Java 6中的线程优化真的有效么?Java 6中的线程优化真的有效么?
Java 6中的线程优化真的有效么?wensheng wei
 

Destacado (19)

几米语录
几米语录几米语录
几米语录
 
微软迎来35岁生日:盘点经典时刻
微软迎来35岁生日:盘点经典时刻微软迎来35岁生日:盘点经典时刻
微软迎来35岁生日:盘点经典时刻
 
Windows下22个实用的代码编辑器
Windows下22个实用的代码编辑器Windows下22个实用的代码编辑器
Windows下22个实用的代码编辑器
 
CSS规范:
CSS规范:CSS规范:
CSS规范:
 
入门-Java运行环境变量的图文教程
入门-Java运行环境变量的图文教程入门-Java运行环境变量的图文教程
入门-Java运行环境变量的图文教程
 
无数据库日志文件恢复数据库方法两则
无数据库日志文件恢复数据库方法两则无数据库日志文件恢复数据库方法两则
无数据库日志文件恢复数据库方法两则
 
如何学好Java?
如何学好Java?如何学好Java?
如何学好Java?
 
2009语录
2009语录2009语录
2009语录
 
存储过程入门与提高
存储过程入门与提高存储过程入门与提高
存储过程入门与提高
 
[转]Java 专业人士必备的书籍和网站列表
[转]Java 专业人士必备的书籍和网站列表[转]Java 专业人士必备的书籍和网站列表
[转]Java 专业人士必备的书籍和网站列表
 
中国矿产资源潜力与勘查前景分析
中国矿产资源潜力与勘查前景分析中国矿产资源潜力与勘查前景分析
中国矿产资源潜力与勘查前景分析
 
Installation of Subversion on Ubuntu,...
Installation of Subversion on Ubuntu,...Installation of Subversion on Ubuntu,...
Installation of Subversion on Ubuntu,...
 
GHOST系统备份图解
GHOST系统备份图解GHOST系统备份图解
GHOST系统备份图解
 
认识一些基于Linux系统的木马病毒
认识一些基于Linux系统的木马病毒认识一些基于Linux系统的木马病毒
认识一些基于Linux系统的木马病毒
 
建立Access数据库的安全门
建立Access数据库的安全门建立Access数据库的安全门
建立Access数据库的安全门
 
原创 读《大话设计模式》---外观模式(Facade) 收藏
原创 读《大话设计模式》---外观模式(Facade) 收藏原创 读《大话设计模式》---外观模式(Facade) 收藏
原创 读《大话设计模式》---外观模式(Facade) 收藏
 
最重要的 Java EE 最佳实践
最重要的 Java EE 最佳实践最重要的 Java EE 最佳实践
最重要的 Java EE 最佳实践
 
Java 操作 Excel (读)
Java 操作 Excel (读)Java 操作 Excel (读)
Java 操作 Excel (读)
 
Java 6中的线程优化真的有效么?
Java 6中的线程优化真的有效么?Java 6中的线程优化真的有效么?
Java 6中的线程优化真的有效么?
 

Similar a jsp基础速成精华讲解

深入淺出 Web 容器 - Tomcat 原始碼分析
深入淺出 Web 容器  - Tomcat 原始碼分析深入淺出 Web 容器  - Tomcat 原始碼分析
深入淺出 Web 容器 - Tomcat 原始碼分析Justin Lin
 
【第一季•第六期】Ajax & JSONP in Action
【第一季•第六期】Ajax & JSONP in Action【第一季•第六期】Ajax & JSONP in Action
【第一季•第六期】Ajax & JSONP in Actiontbosstraining
 
前端MVC之backbone
前端MVC之backbone前端MVC之backbone
前端MVC之backboneJerry Xie
 
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile ServicesKuo-Chun Su
 
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSPServlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSPJustin Lin
 
运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践Li JianYe
 
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSPJustin Lin
 
异步编程与浏览器执行模型
异步编程与浏览器执行模型异步编程与浏览器执行模型
异步编程与浏览器执行模型keelii
 
Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研lorisjand
 
React vs Flux
React vs FluxReact vs Flux
React vs FluxLC2009
 
香港六合彩
香港六合彩香港六合彩
香港六合彩aaveow
 
Ejb工作原理学习笔记
Ejb工作原理学习笔记Ejb工作原理学习笔记
Ejb工作原理学习笔记yiditushe
 
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascriptjay li
 
中远公司 Java培训资料
中远公司  Java培训资料中远公司  Java培训资料
中远公司 Java培训资料yiditushe
 

Similar a jsp基础速成精华讲解 (20)

深入淺出 Web 容器 - Tomcat 原始碼分析
深入淺出 Web 容器  - Tomcat 原始碼分析深入淺出 Web 容器  - Tomcat 原始碼分析
深入淺出 Web 容器 - Tomcat 原始碼分析
 
Sun java
Sun javaSun java
Sun java
 
【第一季•第六期】Ajax & JSONP in Action
【第一季•第六期】Ajax & JSONP in Action【第一季•第六期】Ajax & JSONP in Action
【第一季•第六期】Ajax & JSONP in Action
 
前端MVC之backbone
前端MVC之backbone前端MVC之backbone
前端MVC之backbone
 
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
 
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSPServlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
 
CRUD 綜合運用
CRUD 綜合運用CRUD 綜合運用
CRUD 綜合運用
 
运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践
 
Jsp
JspJsp
Jsp
 
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSP
 
异步编程与浏览器执行模型
异步编程与浏览器执行模型异步编程与浏览器执行模型
异步编程与浏览器执行模型
 
Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研
 
Structs2簡介
Structs2簡介 Structs2簡介
Structs2簡介
 
React vs Flux
React vs FluxReact vs Flux
React vs Flux
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
ev2oik
ev2oikev2oik
ev2oik
 
Ejb工作原理学习笔记
Ejb工作原理学习笔记Ejb工作原理学习笔记
Ejb工作原理学习笔记
 
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascript
 
中远公司 Java培训资料
中远公司  Java培训资料中远公司  Java培训资料
中远公司 Java培训资料
 

Más de wensheng wei

你会柔软地想起这个校园
你会柔软地想起这个校园你会柔软地想起这个校园
你会柔软地想起这个校园wensheng wei
 
几米语录(1)
几米语录(1)几米语录(1)
几米语录(1)wensheng wei
 
高级PHP应用程序漏洞审核技术
高级PHP应用程序漏洞审核技术高级PHP应用程序漏洞审核技术
高级PHP应用程序漏洞审核技术wensheng wei
 
存储过程编写经验和优化措施
存储过程编写经验和优化措施存储过程编写经验和优化措施
存储过程编写经验和优化措施wensheng wei
 
CentOS5 apache2 mysql5 php5 Zend
CentOS5 apache2 mysql5 php5 ZendCentOS5 apache2 mysql5 php5 Zend
CentOS5 apache2 mysql5 php5 Zendwensheng wei
 
Happiness is a Journey
Happiness is a JourneyHappiness is a Journey
Happiness is a Journeywensheng wei
 
Java JNI 编程进阶
Java JNI 编程进阶     Java JNI 编程进阶
Java JNI 编程进阶 wensheng wei
 
Linux Shortcuts and Commands:
Linux Shortcuts and Commands:Linux Shortcuts and Commands:
Linux Shortcuts and Commands:wensheng wei
 
Java正则表达式详解
Java正则表达式详解Java正则表达式详解
Java正则表达式详解wensheng wei
 
Linux Security Quick Reference Guide
Linux Security Quick Reference GuideLinux Security Quick Reference Guide
Linux Security Quick Reference Guidewensheng wei
 
Android模拟器SD Card映像文件使用方法
Android模拟器SD Card映像文件使用方法Android模拟器SD Card映像文件使用方法
Android模拟器SD Card映像文件使用方法wensheng wei
 
如何硬盘安装ubuntu8.10
如何硬盘安装ubuntu8.10如何硬盘安装ubuntu8.10
如何硬盘安装ubuntu8.10wensheng wei
 
数据库设计方法、规范与技巧
数据库设计方法、规范与技巧数据库设计方法、规范与技巧
数据库设计方法、规范与技巧wensheng wei
 
揭秘全球最大网站Facebook背后的那些软件
揭秘全球最大网站Facebook背后的那些软件揭秘全球最大网站Facebook背后的那些软件
揭秘全球最大网站Facebook背后的那些软件wensheng wei
 
mysql的字符串函数
mysql的字符串函数mysql的字符串函数
mysql的字符串函数wensheng wei
 

Más de wensheng wei (20)

你会柔软地想起这个校园
你会柔软地想起这个校园你会柔软地想起这个校园
你会柔软地想起这个校园
 
几米语录(1)
几米语录(1)几米语录(1)
几米语录(1)
 
我的简历
我的简历我的简历
我的简历
 
高级PHP应用程序漏洞审核技术
高级PHP应用程序漏洞审核技术高级PHP应用程序漏洞审核技术
高级PHP应用程序漏洞审核技术
 
存储过程编写经验和优化措施
存储过程编写经验和优化措施存储过程编写经验和优化措施
存储过程编写经验和优化措施
 
CentOS5 apache2 mysql5 php5 Zend
CentOS5 apache2 mysql5 php5 ZendCentOS5 apache2 mysql5 php5 Zend
CentOS5 apache2 mysql5 php5 Zend
 
Happiness is a Journey
Happiness is a JourneyHappiness is a Journey
Happiness is a Journey
 
Java JNI 编程进阶
Java JNI 编程进阶     Java JNI 编程进阶
Java JNI 编程进阶
 
Linux Shortcuts and Commands:
Linux Shortcuts and Commands:Linux Shortcuts and Commands:
Linux Shortcuts and Commands:
 
Java正则表达式详解
Java正则表达式详解Java正则表达式详解
Java正则表达式详解
 
Linux Security Quick Reference Guide
Linux Security Quick Reference GuideLinux Security Quick Reference Guide
Linux Security Quick Reference Guide
 
issue35 zh-CN
issue35 zh-CNissue35 zh-CN
issue35 zh-CN
 
Android模拟器SD Card映像文件使用方法
Android模拟器SD Card映像文件使用方法Android模拟器SD Card映像文件使用方法
Android模拟器SD Card映像文件使用方法
 
Subversion FAQ
Subversion FAQSubversion FAQ
Subversion FAQ
 
如何硬盘安装ubuntu8.10
如何硬盘安装ubuntu8.10如何硬盘安装ubuntu8.10
如何硬盘安装ubuntu8.10
 
ubunturef
ubunturefubunturef
ubunturef
 
数据库设计方法、规范与技巧
数据库设计方法、规范与技巧数据库设计方法、规范与技巧
数据库设计方法、规范与技巧
 
揭秘全球最大网站Facebook背后的那些软件
揭秘全球最大网站Facebook背后的那些软件揭秘全球最大网站Facebook背后的那些软件
揭秘全球最大网站Facebook背后的那些软件
 
mysql的字符串函数
mysql的字符串函数mysql的字符串函数
mysql的字符串函数
 
Java学习路径
Java学习路径Java学习路径
Java学习路径
 

Último

函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptxNCU MCL
 
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxSymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxNCU MCL
 
20170104 - transaction_pattern
20170104 - transaction_pattern20170104 - transaction_pattern
20170104 - transaction_patternJamie (Taka) Wang
 
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptxNCU MCL
 
20161220 - domain-driven design
20161220 - domain-driven design20161220 - domain-driven design
20161220 - domain-driven designJamie (Taka) Wang
 
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptxNCU MCL
 
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】黑客 接单【TG/微信qoqoqdqd】
 
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptxSymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptxNCU MCL
 
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptxNCU MCL
 
20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLP20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLPJamie (Taka) Wang
 

Último (15)

20161027 - edge part2
20161027 - edge part220161027 - edge part2
20161027 - edge part2
 
20200323 - AI Intro
20200323 - AI Intro20200323 - AI Intro
20200323 - AI Intro
 
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
 
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxSymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
 
20170104 - transaction_pattern
20170104 - transaction_pattern20170104 - transaction_pattern
20170104 - transaction_pattern
 
20200226 - AI Overview
20200226 - AI Overview20200226 - AI Overview
20200226 - AI Overview
 
20151111 - IoT Sync Up
20151111 - IoT Sync Up20151111 - IoT Sync Up
20151111 - IoT Sync Up
 
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
 
20161220 - domain-driven design
20161220 - domain-driven design20161220 - domain-driven design
20161220 - domain-driven design
 
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
 
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
 
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptxSymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
 
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
 
Entities in DCPS (DDS)
Entities in DCPS (DDS)Entities in DCPS (DDS)
Entities in DCPS (DDS)
 
20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLP20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLP
 

jsp基础速成精华讲解

  • 1. jsp 基础速成精华讲解 Servlet 三个要素: 1.必须继承自 HttpServlet 2.必须实现 doGet()或者 doPost() 3.必须在 web.xml 中配置 Servlet <servlet> <servlet-name> </servlet-name> <servlet-class> </servlet-class> </servlet> <servlet-mapping> <servlet-name> </servlet-name> <url-pattern> </url-pattern> </servelt-mapping> HttpServeltRrequest:请求对象 getParameter():获得表单元素的值 getAttribute():获得 request 范围中的属性值 setAttribute():设置 reqeust 范围中的属性值 setCharacterEncoding():设置字符编码 HttpSerletResponse:相应对象 sendRedirect():外部跳转 getWriter():获得输出流对象 setContentType("text/html; charset=utf-8"):设置相应内容格式和编码 四种会话跟踪方式: 1.Session HttpSession session = request.getSession(); session.setAttribute("name", "zhangsan"); session.setAttribute("pwd", "aaa"); String name = (String) session.getAttribute("name"); 2.cookie: //创建 Cookie Cookie cookie = new Cookie("name", "zhangsan"); //设置 Cookie 的超时时间 cookie.setMaxAge(24 * 60 * 60 *60); //把 Cookie 发送到客户端 response.addCookie(cookie); //得到客户端发送的 Cookie Cookie [] cookies = request.getCookies(); for(int i=0; i <cookies.length; i++) { Cookie temp = cookies[i]; String key = temp.getName(); String value = temp.getValue(); } 3.隐藏表单域 <input type="hidden" name="name" value="zhangsan" /> request.getParameter("name");
  • 2. 4.Url 重写 问号传参 LoginServlet?username=zhangsan&pwd=123 String name = request.getParameter("username"); String pwd =request.getPareameter("pwd"); 内部跳转: LoginServlet request.getRequestDispatcher("index.jsp").forward(request, resposne); 外部跳转: response.sendRedirect("index.jsp"); 内部跳转是一次请求和一次响应 外部跳转是两次请求和两次响应 ServletContext:Servlet 上下文对象 它是一个公共区域,可以被所有的客户端共享 setAttribute():向公共区域里放入数据 getAttribute():从公共区域里取数据 二: 三:三个标准范围:request, session, ServletContext 共同点:都有 setAttribute(), getAttribute() 区别:范围不同,request < session < servletContext 四:四种会话跟踪方式 五:服务器上的五大对象 request, response, servlet, session, servletContext Jsp:Java Server Page 页面构成:7 种元素 1.静态内容:html 2.指令:page, include, taglib: <%@ 指令名 属性 1="属性值 1" 属性 2="属性值 2" %> 3.表达式: <%=表达式 %> 4.Scriptlet <% Java 代码 %> 5.声明: <%! %>:变量和方法 6.动作: <jsp:动作名 属性="属性值"> </jsp:动作名> 7.注释: 客户端看不到的: <%-- --%> 客户端可以看到的: <!-- --> Jsp 的执行过程: 1.转译:Jsp--->Servlet 2.编译:Servlet---->.class 3.执行:.class 第一次访问 jsp 的时候响应速度较慢,后面请求时响应速度快 脚本: 表达式: <%= %> Scriptlet: <% %> 声明: <%! %> 指令: page:language, import, errorPage, isErrorpage include:file
  • 3. taglib:uri:指定标签库描述符的路径 prefix:指定标签的前缀 隐式对象: 分类: 1.输入和输出对象:request(HttpServletRequest), response(HttpServletResponse), out(JspWriter), servlet 中的 out 是 PrintWriter 2.作用域通信对象:pageContext, request, session(HttpSession), application(ServletContext) 3.Servlet 对象:page(this), config 4.错误对象:exception JavaBean: 一个标准的 JavaBean 有三个条件 1.共有的类 2.具有不带参数的公共的构造方法 3.具有 set()和 get()方法 4.私有属性 Jsp 中的标准动作: 1.useBean:创建 JavaBean 的一个实例 <jsp:useBean id="stu" class="com.westaccp.test.Student" scope="page/session/application/request" /> 2.setProperty:给 JavaBean 的属性赋值 <jsp:setProperty name="stu" property="stuName" value="zhangsan" /> <jsp:setProperty name="stu" property="stuName" param="txtName" /> value 和 param 不能同时使用 偷懒的方法: <jsp:setProperty name="stu" property="*" /> 这个时候需要注意的是,表单元素的名字必须和 JavaBean 的属性值 一模一样 3.getProperty:获得 JvaBean 的属性值 <jsp:getProperty name="stu" property="stuName" /> 4.forward:内部跳转,相当于 request.getRequestDispatcher().forward(request, response); <jsp:forward page="index.jsp" /> 5.include:包含 <jsp:include page="header.jsp" flush="true" /> 表达式语言: EL: Expression Language 语法格式: ${表达式 } 表示式 = 运算符 + 操作数 运算符:跟 Java 比较,多了一个 empty, 少了一个赋值运算符 ${empty ""} : true ${empty null} :true 操作数: -->常量:布尔型(true/false), 整型, 浮点型, 字符串(可以用'', 还可以用""), Null -->变量: 1.指的是放在四个标准范围里的属性(page, request, session, application) 2.在编准范围内的搜索顺序:page-->request--->session--->application 3.怎么取得变量值:点运算符., 还以用[] <% request.setAttribute("name", "lisi"); %> ${requestScope.name}
  • 4. 或者 ${requestScope["name"]} -->隐式对象 1.pageContext:通过它可以访问 request, session, servletContext 2.跟范围由关的:pageScope, requestScope, sessionScope, applicationScope 3.跟输入有关的:param, paramValues 4.其他的:header, cookie, headervalues, EL 表达式适用的场合: 1.可以在静态文本中使用 2.与自定义标签结合使用 3.和 JavaBean 结合使用 <jsp:userBean id="stu" class="com.westaccp.test.Student" scope="session" /> <jsp:setProperty name="stu" property="stuName" value="hello" /> ${stu.stuName} 自定义标签: 1.标签处理程序实现 --->实现:继承自 BodyTagSupport 或者 TagSupport 一般会重写 doStartTag(), doEndTag(), doAfterBody() --->描述:在标签库描述符文件中描述(.tld) <taglib> <tlib-version>1.0 </tlib-version> <jsp-version>2.0 </jsp-version> <short-name>simpletag </short-name> <tag> <name>showbody </name> <tag-class>com.westaccp.test.ShowBodyTag </tag-class> <body-content>empty/jsp </body-content> <attribute> <name>color </name> </attribute> </tag> </taglib> --->使用: <%@ taglib uri="WEB-INF/mytag.tld" prefix="my" %> <my:showbody /> 2.标签文件 --->实现和描述 在.tag 文件中实现 设置主体内容: <%@ body-content="empty/scriptless" %> 设置属性: <%@ attribute name="name" required="true" rtexprvalue="true" %> 有主体内容: <jsp:doBody scope="session" var="theBody" /> <% String body = (String) session.getAttribute("theBody"); %> --->使用 WEB-INF/tags/sayhello.tag <%@ taglib tagdir="/WEB-INF/tags/" prefix="you" %> <you:sayhello /> 标准标签库: 1.核心标签库 -->通用: set: <c:set var="" value="" scope="" />
  • 5. out: <c ut value="" /> remove: <c:remove var="" scope="" /> -->条件: if: <c:if test="">..... </c:if> choose: <c:choose> <c:when test="">... </c:when> <c:when test="">... </c:when> <c:when test="">... </c:when> ..... <c therwise>... </otherwise> </c:choose> -->迭代: forEach: <forEach var="" items="" varStatus="" begin="" end=""> foTokens: <foTodens var="" items="" delim=",; ¦"> </foTodens> Java,C#;SQL ¦C 2.I18N 与格式化标签库 -->setLocale:设置本地区域 -->bundle:设置资源包 -->setBundle:设置资源包 -->message:输出消息 3.SQL 标签库 -->setDataSource:设置数据源,用于获得与数据库的连接 -->query:执行查询 -->update:执行增,删,改 -->transaction:事务 -->param:参数 4.XML 标签库 过滤器: 生命周期: 1.实例华: 2.初始化:init() 3.过滤:doFilter() 4.销毁:destroy() 5.不可用 配置: <filter> <filter-name> </filter-name> <filter-class> </filter-class> </filter> <filter-mapping> <filter-name> </filter-name> <url-pattern> </url-pattern> </filter-mapping> 几个重要的接口: 1.Filter:init(), doFilter(), destroy() 2.FilterChain: doFilter(request, response) 3.FilterConfig:getFilterName(), getInitParameter(), 过滤器链:--->1--->2--->3--->Servlet 请求 <----1 <---2 <---3 <--- 响应 MvC 设计模式