JavaWeb教程

这篇JavaWeb教程介绍了HTML的基本概念,包括超文本标记语言的定义、第一个HTML程序的编写,以及HTML的规范。文章强调了HTML代码不区分大小写的特点,并指出HTML标签作为容器,通过修改其属性值可以改变内容的样式。还提到了常见的文字标签和注释标签的使用。
摘要由CSDN通过智能技术生成

这里写图片描述
第一天:
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>:是网页的开始
    需要对特殊字符进行转义:
        < 通过 &lt进行转义;
        > 通过 &gt进行转义;
        空格通过 &nbsps进行转义
    代码:
        &lt;html&gt:是&nbsp网页的开始

列表标签:
    比如现在显示这样的效果:
        传智播客
            财务部
            学工部
            人事部
    <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):只有在错误页面中可以使用这个对象,一个顶9request(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">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值