第一天:
1、Html的简介
HyperText Mark Language(超文本标记语言),网页语言
超文本:超出文本的范畴
标记:html所有的操作都是通过标记实现的,标记就是标签
第一个html程序:
html后缀是:.html
直接通过浏览器就可以运行
<font size = "5" color = "red">这是我的第一个html程序!</html>
html的规范(遵循)
1、一个html文件有开始标签和结束的标签<html></html>
2、html包含两部分内容
(1)<head>设置相关信息</head
(2)<body>显示在页面上的内容都写在body里面</body>
3、html的标签有开始标签,也要有结束标签
<head></head>
4、html代码不区分大小写
5、有些标签,没有结束标签,在标签內结束<br>
html的操作思想
网页中很多数据,不同的数据可能需要不同的显示效果,这个时候需要使用标签把要操作的数据包起来,通过修改标签的属性值实现标签內数据样式的变化。
一个标签相当于一个容器,想要修改容器内数据的样式,只需要改变容器的属性值,就可以实现容器内数据样式的改变。
html中常用的标签
文字标签和注释标签
文字标签:修改文字的样式
<font></font>
属性:
size:文字的大小,取值范围1 - 7。超出了7,默认还是7
color:颜色
两种表示方式
英文单词:red green blue
十六进制数:#ff00ff:RGB
注释标签:
html的注释<!-- 注释 -->
标题标签、水平标签和特殊字符
标题标签:
<h1>标题</h1>
...
<h6>标题</h6>
从h1到h6,大小是依次变小,同时会自动换行
水平线标签:
<hr/>
属性
size:水平线的粗细
color:水平线的颜色
代码:
<hr size = "5" color = "blue">
特殊字符标签:
想要在页面上显示这样的内容:<html>:是网页的开始
需要对特殊字符进行转义:
< 通过 <进行转义;
> 通过 >进行转义;
空格通过  s进行转义
代码:
<html>:是 网页的开始
列表标签:
比如现在显示这样的效果:
传智播客
财务部
学工部
人事部
<dl></dl>:表示列表的范围
在dl里面 <dt></dt>:上层内容
在dl里面 <dd></dd>:下层内容
代码:
<dl>
<dt>传智播客</dt>
<dd>财务部</dd>
<dd>学工部</dd>
<dd>人事部</dd>
</dl>
想要在页面上显示这样的效果
1.财务部
2.学工部
3.人事部
a.财务部
b.学工部
c.人事部
i.财务部
ii.学工部
iii.人事部
<ol></ol>:有序列表的范围
--属性 type:设置排序方式 1(默认是) a i;
在<ol>标签里面<li>具体内容</li>
代码:
<ol type = "a">
<li>财务部</li>
<li>学工部</li>
<li>人事部</li>
</ol>
想要在网页上显示这样的效果:
特殊符号(方框) 财务部
特殊符号(方框) 学工部
<ul></ul>:表示无序列表的范围
属性:type:空心圆circle、实心圆disc、实心方块square,默认是disc
在ul里面 <li></li>
代码:
<ul type = circle>
<li>财务部</li>
<li>学工部</li>
<li>人事部</li>
</ul>
图像标签:
<img src = "图片的路径"/>
属性:
src:图片的路径
width:图片的宽度
heigth:图片的高度
alt:图片上显示的文字,把鼠标移动到图片上时显示的内容
代码:
<img src = "02.jpg" width = "300" height = "500">
路径的介绍:
分类:两类
绝对路径:
完全的地址
相对路径:
一个文件相对于另外一个文件的位置
三种写法:
-html文件和图片在一个路径下,可以直接写文件名称
<img src = "2.jpg" alt="这是一个美女">
在html文件中,使用img文件夹下的a.jpg
-2.html和img在一个路径下
<img src = "img/a.jpg" alt="这是一个美女">
-图片在html文件的上层目录
图片和html的所在目录的上层目录
怎么表示上层路径 ../
如果想要上层的上层:
../../
超链接标签:
链接资源:
<a href = "链接到资源的路径">显示在页面上的内容</a>
属性:
href:链接的属性的路径
target:设置打开的方式,默认是在当前页面打开
_blank:在一个新窗口打开
_self:在当前也打开(默认)
当超链接不需要到任何的地址 在href里面加#
<a href = "#"这是一个超链接></a>
定位资源:
如果想定义资源:定义一个位置
<a name = "top">顶部</a>
回到这个位置
<a href="#top">回到顶部</a>
表格标签:
可以对数据进行格式化,使数据显示更加清晰
<table></table>:表示表格的范围
在table里面<tr></tr>(行)
设置显示方式:align:left center right
<tr align = "center">
在tr里面<td><td>(格)
<td align = "center">
使用th也可以表示单元格,表示可以实现居中和加粗。
属性:
border:表格线
bordercolor:表格线的颜色
cellspacing:单元格之间的距离
width:表格的宽度
height:表格的宽度
代码:
<table border="1" bordercolor="blue" cellspacing="0" width = "400" height = "150">
表格的标题:
<caption>标题</caption>
合并单元格:
rowspan:跨行
代码:
<td rowspan = "3">人员信息</td>
colspan:跨列
代码:
<td colspan = "3">人员信息</td>
表单标签(重要):
<form></form>定义表单的范围
属性:
action:提交到地址,默认提交到当前的页面
method:表单提交方式
常用的有两种:
get和post,默认是get请求
1、get请求地址栏会携带提交的数据,post不会携带
2、get请求安全性较低,post请求安全性较高
3、get请求有数据大小的限制,post没有限制
enctype:一般请求下不需要这个属性,在文件上传时候需要设置这个属性。
输入项:可以输入内容或者选择内容的部分
大部分的输入项 使用<input type="输入项的类型"/>
普通的输入项:<input type = "text"/>
密码输入项:<input type = "password"/>
单选输入项:<input type = "radio"/>
在里面必须要有属性name
name的属性值必须相同
必须要有一个value值
实现默认选中的属性:
checked = "checked"
代码:<input type = "radio" name = "sex" value = "nv"/>女
<input type = "radio" name = "sex" value = "nan"/>男
复选输入项:<imput type = "checkbox" value = "">
在里面必须要有属性name
name的属性值必须相同
必须要有一个value值
实现默认选中的属性:
checked = "checked"
文件输入项:
<input type = "file"/>
下拉输入项:
默认选中:selected = "selected"
<select name = "birth">
<option value="0">请选择</option>
<option value="1991">1991</option>
<option value="1992">1992</option>
<option value="1993">1993</option>
</select>
文本域:
<textarea>cols="10" rows="10"</textarea>
隐藏项:(不会显示在页面上,但是显示在Html代码里面)
<input type = "hidden"/>
提交按钮:
<input type = "submit" value = "注册"/>
使用图片来提交:
<input type = "image" src = "图片路径"/>
重置按钮:回到输入项的初始状态
<input type = "reset" value = "重置"/>
普通按钮:(和js一起使用的)
<input type = "button" value = ""/>
html中的其他的常用标签的使用:
b 粗体 u 下划线 i 斜体 s 删除线
pre : 原样输出
sub : 下标
sup : 上标
p : 段落标签
div : 自动换行
span : 在一行显示
html的头标签的使用
html两部分组成 head和body
在head里面的标签就是头标签
title : 表示在标签上显示的内容
<meta>标签 : 设置页面一些相关的内容
<meta name = "keyword" content = "熊出没">
<meta http-equiv="refresh" content="3";url=hello.html />
base标签:设置超链接的基本设置
可以统一设置超链接的打开方式
<base target = "_blank" />
link:引入外部文件
可以使用link标签引入css文件
框架标签:
<frameset>
-rows:按照行进行划分
<frameset rows = "80,*">
-cols:
<frameset cols = "80,*">
具体显示的页面
<frame name = "low_left" src = "b.html">
使用框架标签时候,不能写在body里面,使用了框架标签,需要把body去掉。
代码:
<frameset rows = "100,*> //把页面划分成上下两部分
<frame name = "top" src = "a.html">。 //上面的页面
<frameset rows = "150,*>. //把下面的部分划分成左右两部分
<frame name = "lower_left" src = "b.html"> //左边页面
<frame name = "lower_right" src = "b.html"> //右边页面
</frameset>
</frameset>
如果在左边的页面超链接,想让内容显示在右边的页面中
设置超链接里面的属性,target值设置frame成名称
<a href = "hello.html" target = "right">超链接</a>
第二天:
css
层叠样式表
层叠:一层一层的
样式表:很多属性和属性值
使页面显示效果更加好
css将网页内容和显示样式进行分离,提高了显示功能。
css和html的结合方式(四种结合方式)
(1)在每个html标签上面都有一个属性,把css和html结合在一起
<div style = "background-color=red;color=green;">
(2)使用html的一个标签实现 <style>标签,写在head里面
<style type = "text/css">
div
{
background-color:blue;
color:red;
}
</style>
(3)在style标签里面 使用语句
@import url(css文件的路径);
第一步,创建一个css文件
div
{
background-color:blue;
color:red;
}
第二步,导入进去
<style type = "text/css">
@import url(div.css);
</style>
(4)使用头标签 link,引入外部css文件
第一步,创建一个css文件
div
{
background-color:blue;
color:red;
}
第二步
<link rel = "stylesheet" type = "text/css" href="css_3.css" />
第三种结合方式,缺点:在某些浏览器下不起作用,一般使用第四种方式
css样式优先级:
优先级(一般情况下)
由上到下,由外到内。优先级由低到高。
JavaScript的简介
基于对象和事件驱动的语言,应用于客户端。
基于对象:
提供好了很多对象,可以直接拿过来使用
事件驱动:
html做网站静态效果,javascript做网站动态效果
客户端:专门指的是浏览器
js的特点:
(1)交互性
信息的动态交互
(2)安全性
js不能访问本地磁盘的文件
(3)跨平台性
java里面跨平台,虚拟机
只要能够支持js的浏览器,都可以运行
javascript和java的区别(雷锋和雷峰塔)
(1)java是sun公司,现在是oracle;js是网景公司
(2)javaScript是基于对象的,java是面向对象的
(3)java是强类型的语言,js是弱类型的语言
比如java语言 int i = "10";
ja:var i = 10;var m = "10";
(4)javaScrpit只需要解析就可以执行,而java需要先编译成字节码文件,再执行
javaScript的组成
三部分组成
(1)ECMAScript
ECMA:欧洲计算机协会
由ECMA组织执行的js的语法,语句...
(2)BOM
browser object model:浏览器对象模型
(3)DOM
先学习JavaWeb吧,上面的等需要的时候再深入学习:
Servet概述
1、什么是Servlet(中文意思是小服务程序)
Servlet是JavaWeb三大组件之一,它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要:
接收请求数据
处理请求
完成相应
例如:客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Servlet需要我们自己来编写,每个Servlet必须实现javax.servlet.Servlet接口。
2、实现Servlet的方式:
实现Servlet由三种方式:
(1)实现javax.servlet.Servlet接口;
(2)继承javax.servlet.GenericServlet类;
(3)继承javax.servlet.http.HttpServlet类;
通常我们会去继承HttpServletl类来完成我们的Servlet,但学习Servlet还要从javax.servlet.Servlet接口开始学习。
Servlet.java
public interface Servlet
{
public void init(ServletConfig config) throws ServletException;
public ServletConfig getServletConfig();
public void service(ServletRequest req,ServletResponse res) throws ServletException,IOExceotion;
public String getServletInfo();
public void destroy();
}
如何让浏览器访问servlet
1、给Servlet指定一个Servlet路径(让Servlet与一个路径绑定在一起)
2、浏览器访问Servlet路径
给Servlet配置Servlet路径!
这需要在web.xml中对Servlet进行配置
web.xml
<servlet>
<servlet-name>XXX</servlet>
<servlet-class>cn.itcast.web.servlet.Aservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XXX</servlet-name>
<url-pattern>/AServlet</url-pattern>
</servlet-mapping>
一个ServletConfig对象,对应一段web.xml中Servlet的配置信息
<servlet>
<servlet-name>XXX</servlet>
<servlet-class>cn.itcast.web.servlet.Aservlet</servlet-class>
<init-param>
<param-name>p1</param-name>
<param-value>v1</param-value>
</init-param>
<init-param>
<param-name>p2</param-name>
<param-value>v2</param-value>
</init-param>
</servlet>
API:
String getServletName(),获取<servlet-name>中的内容;
ServletContext getServletContext():获取Servlet上下文对象!
String getInitParameter(String name):通过名称获取指定初始化参数的值
Enumeration getInitParameterNames():获取所有初始化参数的名称
代码:
/*
* 获取初始化参数
*/
System.out.println(arg0.getInitParameter("p1"));
System.out.println(arg0.getInitParameter("p2"));
Enumeration e = arg0.getInitParameterNames();
while(e.hasMoreElements())
{
System.out.println(e.nextElement());
}
让服务器在启动时就创建Servlet
默认情况喜爱,服务器会在某个Servlet第一次收到请求时创建它,也可以在web.xml中对servlet进行配置,使服务器启动时就创建Servlet
Day11
Jsp
1、jsp的作用
Servlet:
缺点:
不适合设置html响应体,需要大量的 response.getWrite().print("html");
优点:
动态资源,可以编程
html
缺点:html是静态页面,不能包含动态信息
优点:不用为输出html标签而发愁
jsp(java servet pages):
优点:在原有html的基础上添加java脚本,构成jsp页面
2、jsp和Servlet的分工:(服务员和厨师)
jsp:
作为请求发起页面,例如显示表单、超链接
作为请求结束页面,例如显示数据
Servlet:
作为请求中处理数据的环节
3、jsp的组成
jsp = html + java脚本 + jsp标签(指令)
jsp中无需创建即可使用的对象一共有9个,被称之为9大内置对象。例如:request对象、out对象
3中java脚本:
<%..%>:java代码片段(常用),用于定义java语句
<%=..%>:java表达式,用于输出(常用),用于输出一条表达式(或变量)的结果
<%!..%>:声明,用来创建类的成员变量和成员方法(基本不用,但容易被考到)
form.jsp
<form action = "/day11_1/AServlet" method = "post" >
整数1:<input type = "text" name = "num1"/></br>
整数2:<input type = "text" name = "num2"/></br>
<input type = "submit" value = "提交">
</form>
AServlet
@WebServlet("/AServlet")
public class AServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取参数
String s1 = request.getParameter("num1");
String s2 = request.getParameter("num2");
//转换成int类型
int num1 = Integer.parseInt(s1);
int num2 = Integer.parseInt(s2);
//运算
int sum = num1 + num2;
//把结果保存到request域中
request.setAttribute("result", sum);
//转换到result.jsp
request.getRequestDispatcher("result.jsp").forward(request, response);
}
}
result.jsp
<%
Integer result = (Integer)request.getAttribute("result");
%>
<%=
result
%>
jsp原理(理解)
jsp其实是一种特殊的Servlet
当jsp页面第一次被访问时,服务器会把jsp编译成java文件(这个java其实是一个Servlet类)
然后再把java编译成.class
然后创建改类对象
最后调用它的service()方法
第二次请求同一jsp时,直接调用service()方法
Cookie
JavaWeb中使用Cookie
便捷方式(精通):
使用response.addCookie()方法向浏览器保存Cookie
使用request.getCookies()方法获取浏览器归还的Cookie
Cookie不能垮浏览器
Cookie第一例:
一个jsp保存cookies a.jsp
另一个jsp获取浏览器归还的cookie! b.jsp
a.jsp
<body>
<h1>保存cookie</h1>
<%
Cookie cookie1 = new Cookie("aaa","AAA");
response.addCookie(cookie1);
Cookie cookie2 = new Cookie("bbb","BBB");
response.addCookie(cookie2);
%>
</body>
b.jsp
<body>
<h1>获取Cookie</h1>
<%
Cookie[] cookies = request.getCookies();
if( cookies != null )
{
for(Cookie c:cookies){
out.print(c.getName() + "=" + c.getValue() + "<br>");
}
}
%>
</body>
Cookie详解
Cookie不只有name和value两个属性
Cookie的maxAge(掌握):Cookie的最大生命,即Cookie可保存的最大时长。以秒为单位,例如cookie.setMaxAge(60)表示这个Cookie会被浏览器保存到硬盘一分钟
maxAge > 0:浏览器会把Cookie保存到客户机硬盘上,有效时长为maxAge的值决定
maxAge < 0:Cookie只会在浏览器内存中存在,当用户关闭浏览器时,浏览器进程结束,同时Cookie也就死亡了
maxAge = 0:浏览器会马上删除这个Cookie
Cookie的path(理解)
Cookie的path并不是设置这个Cookie在客户端的保存路径!!!
Cookie的path由服务器创建某个Cookie时设置
当浏览器访问服务器某个路径时,需要归还哪些Cookie给服务器呢?这由Cookie的path决定。
浏览器访问服务器的路径,如果包含某个Cookie的路径,那么就会归还这个Cookie
例如:
aCookie.path = /day11_1/;bCookie.path=/day11_1/jsps/;cCookie.path = /day11_1/jsps/cookie/;
访问:/day11_1/index.jsp时,归还:aCookie
访问:/day11_1/jsps/a.jsp时,归还:aCookie、bCookie
访问:/day11_1/jsps/cookie/b.jsp时,归还:aCookie、bCookie、cCookie
Cookie的path默认值:当前访问路径的父路径。例如在访问/day11_1/jsps/a.jsp时,响应的cookie,那么这个cookie的默认path为/day11_1/jsps/
Cookie的domain(了解)
domain用来指定Cookie的域名!当多个二级域中共享Cookie时才有用
例如:www.baidu.com、zhidao.baidu.com、news.baidu.com之间共享Cookie时可以使用domain
设置domain为cookie.setDomain(".baidu.com");
设置path为:cookie.setPath("/");
HttpSession
1、HttpSession概述
HttpSession是由JavaWeb提供的,用来会话跟踪的类。session是服务器端对象,保存在服务器端!!!
HttpSession是Servlet三大域之一(request、session、application(ServletContext)),所有它也有setAttribute()、getAttribute、removeAttribute()
HttpSession底层依赖Cookie,或是URL重写,
2、HttpSession的作用
会话范围:会话范围是某个用户从某次访问服务器开始,到该用户关闭浏览器结束!
会话:一个用户对服务器的多次连贯性请求!所谓连贯性请求,就是该用户多次请求中间没有关闭浏览器!
服务器会为每个客户端创建一个session对象,session就好比客户在服务器端的账户,他们被服务器保存到一个Map中,这个Map被称之为session缓存!
Servlet中得到session对象:HttpSession session = request.getSession();
Jsp中得到session对象:session是jsp的内置对象之一,不用创建久可以直接使用!
session域相关方法:
void setAttribute(String name,Object value);
Object getAttribute(String name);
void removeAttribute(String name);
3、案例:演示session中会话的多次请求中共享数据
AServlet:向session域中保存数据
BServlet:从Session域中获取数据
演示:
第一个请求:访问AServlet
第二个请求:访问BServlet
a.jsp
<body>
<h1>向session域保存数据</h1>
<%
session.setAttribute("aaa", "AAA");
%>
</body>
b.jsp
<body>
<h1>获取session中的数据</h1>
<%
String s = (String)session.getAttribute("aaa");
%>
<%=
s
%>
</body>
案例2:演示保存用户登录信息(精通)
案例相关页面和Servlet:
login.jsp:登录页面
succ1.jsp:只有登录成功才能访问的页面
succ2.jsp:只有登录成功才能访问的页面
LoginServlet:检验用户是否登录成功
各页面和Servlet内容:
login.jsp:提供登录菜单,提交表单请求LoginServlet
LoginServlet:获取请求参数,校验用户是否登录成功
失败:保存错误信息到request域中,转发到login.jsp(login.jsp显示request域中的错误信息)
成功:保存用户信息到session中,重定向到succ1.jsp页面,显示session域中的用户信息
succ1.jsp:从session域获取用户信息,如果不存在,显示“您还没登录”。存在则显示用户登录信息
succ2.jsp:从session域获取用户登录信息,如果不存在,显示“您还没登录”。存在则显示用户登录信息。
只要用户没用关闭浏览器,session就一直存在,那么保存在session中的用户登录信息也就一直存在!那么用户访问succ1和succ2就会通过!
HttpSession原理(理解)
request.getSession()方法:
获取Cookie中的JSESSIONID:
int getMaxInactiveInterval:
如果sessionId不存在,创建session,把session保存起来,把新创建的sessionId保存到Cookie中
如果sessionId存在,通过sessionId查找session对象,如果没有查找到,创建session,把session保存起来,把新创建的sessionId保存到Cookie中
如果sessionId存在,通过sessionId查找到了session对象,那么就不会再创建session对象了
如果创建了新的session,浏览器会得到一个包含了sessionId的Cookie,这个Cookie的生命为-1,即只在浏览器内存中存在,如果不关闭浏览器,消失,
下次请求时,再次执行request.getSession()方法时,因为可以通过Cookie中的session对象,所有与上一次请求使用的是同一个session对象。
HttpSession其他方法:
String getId():获取sessionID
int getMaxInactiveInterval():获取session可以的最大不活动时间,默认是30分钟。当session在30分钟内没有使用,那么Tomcat会在sesion池中移除
void invalidate():让session失效!调用这个方法会使session失效,当session失效后,客户端再次请求,服务器会给客户端创建一个新的session
boolean isNew:查看session是否为新。
web.xml中配置session的最大不活动时间
<session-config>
<session-timeout>30</session-timeout>
</session-config>
URL重写(理解)
sessoin依赖Cookie,目的是让客户端发出请求时归还sessionId,这样才能找到对应的session
如果客户端禁用了Cookie,那么就无法得到sessionId,那么session也就无用了
也可以使用URL重写来替代Cookie
让网站的所有超链接、表单中都添加一个特殊的请求参数,即sessionId
这样服务器可以通过获取请求参数得到sessionId,从而找到session对象
response.encodeURL(String url)
该方法会对url进行智能的重写:当请求中没有归还sessionid这个cookie,那么该方法会重写url,否则不重写,当然url必须是指向本站的url.
Day12
JSP三大指令
1 page
pageEncoding和contentType:
pageEncoding:它指定当前jsp页面的编码,只要不说谎,就不会有乱码!在服务器把jsp编译成.java时需要使用pageEncoding!
contentType:它表示添加一个响应头:Content-Type!等同于response.setContentType("text/html";charset="utf-8");
如果两个属性只提供一个,那么另一个的默认值为设置的那一个。
如果两个属性都没有设置,那么默认iso
import:导包!可以出现多次
errorpage和isErrorPage
errorpage:当前页面如果抛出异常,那么要转发到哪一个页面,由errorPage指定
isErrorPage:它指定当前页面是否为处理错误的页面!当该属性为true时,这个页面会设置状态码为500!而且这个页面可以使用9大内置对象中的exception!
2 include
静态包含,与RequestDispatcher的include()方法的功能相似!
<%include> 它是在jsp编译成java文件时完成的!它们共同生成一个java(就是一个servlet)文件,然后再生成一个class!
RequestDispatcher的include()是一个方法,包含和被包含的是两个servlet,即两个.class!它们只是把响应的内容在运行时合并了!
3 taglib
导入标签库
JSP九大内置对象
在JSP中无需创建就可以使用的9个对象,它们是:
out(JspWriter):等同与response.getWrite(),用来向客户端发送文本数据
config(ServletConfig):对应“真身”中的ServletConfig
page(当前JSP的真身类型):当前jsp页面的"this",即当前对象
pageContext(PageContext):页面上下文对象,它是最后一个没有讲的域对象
exception(Throwable):只有在错误页面中可以使用这个对象,一个顶9个
request(HttpServletRequest):即HttpServletRequest类的对象
response(HttpServletRespopne):即HttpServletReponse类的对象
application(SevletContext):即ServletContext类的对象
session(HttpSession):即HttpSession类的对象,不是每个JSP页面都可以使用,如果在某个JSP页面设置<%@page session = "false"%>,说明这 个页面不能使用session
这9个对象中有很多是极少被使用的,例如:config、page、exception基本不会使用
这9个对象中有两个对象不是每个JSp页面都可以使用的:exceprion、session
这9个对象中有很多前面已经学过的对象:out request response application session config
1、pageContext
一个顶9个
Servlet中有三大域,而JSP中有四大域,它就是最好一个域对象!
ServletContext:整个应用程序
session:整个会话(一个会话中只有一个用户)
request:一个请求链
pageContext:一个jsp页面!这个域是在jsp页面和当前jsp页面中使用的标签之间共享数据
是域对象
可以代理其他域:pageContext.setAttribute("xxx","XXX",PageContext.SESSION_SCOPE);
获取其他8个内置对象:
全域查找:pageContext.findAttribute("xxx"); 从小到大,依次查找
JSP动作标签
这些jsp的动作标签,与html提供的标签有本质的区别。
动作标签是由tomcat(服务器)来解释执行!它与java代码一样,都是在服务器端执行的!
html由浏览器来执行
<jsp:forward>:转发!它与RequestDispatch的forward方法是一样的,一个是在Servlet中使用,一个是在jsp中使用。
<jsp:include>:包含!它与RequestDispatch的include方法是一样的,一个是在Servlet中使用,一个是在jsp中使用。
<jsp:param>:它用来作为forward和include的子标签!用来给转发或包含的页面传递参数!
JavaBean
1、必须要有一个默认的构造器
2、提供get/set方法,如果只有get方法,那么这个属性是只读属性!
commons-beanutils
导包:
commons-beanutils.jar
commons-logging.jar
BeanUtils.getProperty(Object bean,String propertyName);
BeanUtils.setProperty(Object bean,String propertyName,String propertyValue)
BeanUtils.populate(Map map,Object bean)
CommontUtils.toBean(Map map,Class class)
jsp中与javaBean相关的标签!
<jsp:usebean> 创建或查询bean,创建之
在session域中查找名为user1的bean,如果不存在
<jsp:useBean id = "User" class = "cn.itcast.domain.User" scope = "session">
<jsp:getProperty>
设置名为user1的这个javabean的username属性值为admin
<jsp:setProperty property="username" name = "user1" value = "admin">
<jsp:getPropeyty>
获取名为user1的javabean的名为username属性值
<jsp:getProperty property="username" name = "user1">