文章目录

  • javaweb课堂笔记(一)
    • 一、tomcat服务器
    • 二、JSP
      • 1、JSP执行特点
      • 2、JSP语法特点
        • 4.指令
          • 1)page
          • 2)指令
    • 三、表单(登录)
      • 1、表单
      • 2、异常
      • 3、登录界面 1.0
    • 四、九大内置对象
      • 1)request
      • 2)response
      • 3)session:表明用户的存在
    • 五、request

javaweb课堂笔记(一)

一、tomcat服务器

  • 1、服务端组件
    控制层:接收、分析、分发请求,转向视图组件,封装用户请求参数
    业务层:Bean 处理请求
    持久层:Dao 数据访问层,封装对外部数据的操作(数据库 文件)
    视图层:对数据进行处理(渲染)处理结果数据,将处理结果用response回传
    业务层与持久层分开:外部存储数据变换,降低业务层和持久层的耦合
    web中间件:能自动执行web程序的程序,tomcat就是一个web中间件
    初选模型:对象(只有属性没有方法)eg.结构体

  • 2、环境变量
    环境变量配置目的?
    如果不配就要在bin目录下执行java、javac;配置环境变量可以在任何地方执行java、javac
    注意:
    CLASSPATH一定要配,虚拟机在执行过程中找到标准类库 eg. java.lang包
    标准类库:JDK的lib目录下以jar为后缀的文件中 dt.jar tools.jar

    .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar

  • 3、端口
    端口:在服务器中区别于其他应用程序的逻辑地址
    mysql:3306
    oracel:1521
    sql Server:1433

  • 4、客户端与服务端
    客户端:发送请求 显示
    HTTP:封装请求
    服务端:接受请求 处理数据 显示结果
    客户端->http->tomcat->组件

  • 5、tomcat
    概念:由java编写的一组程序
    作用:自动通过web项目执行web组件
    web服务器种类:tomcat WebLogic WebSphere(后两款性能更好)

  • 6、配置虚目录:
    < Context path=“虚目录名” docBase=“真实地址”>

  • 7、注意问题
    1.动态代码由浏览器执行
    2.为什么要配置虚目录?
    1)存在名字的不安全性(通过项目名知道文件名)
    2)存在位置的不安全性(在webapps下)
    3)出现存储溢出的问题;
    3.在哪配置虚目录?
    在tomcat中conf中找server.xml,在所有标签的结束符之前
    4.如何配虚目录?
    context标签中path属性=项目的虚名 用户在访问项目的虚名
    docBase=项目对应的真实目录及路径
    要重启tomcat 注意:一个真实目录可以对应多个虚项目名,一个虚项目名不可以访问多个目录
    5.什么是虚目录?
    用户访问的是虚的 用虚项目名访问真正项目对应目录就叫虚目录
    6.System
    System.out:标准字节输出流对象
    将信息发给控制台(客户端)
    System.in:标准字节输入流对象

二、JSP

1、JSP执行特点

由服务器执行,动态代码(原生Java程序),把执行结果嵌入到静态代码中,发给浏览器进行处理
静态代码+动态代码 (浏览器执行的都是静态代码)
JPS:作用:煊然 处理结果信息

2、JSP语法特点

  • 1.注释
    1)作用:便于维护、便于调试、便于开发
    2)种类:
    a.静态注释:对静态代码的注释,语法:<!-- --> 浏览器执行
    b.动态注释:对动态代码的注释,语法:<%-- --%> 服务器执行
  • 2.变量
<%    //  加! 全局变量:只初始化一次,本次是用的值是下次使用的初值,写在类中,要隐藏private//  不加! 局部变量
%>

对象没有名字,有地址,对象的值就是地址
变量有名字

  • 3.表达式
    语法:<%= %> 向浏览器输出
    两种输出的比较:
    相同点:都由浏览器输出数据
    不同点:
    1)语法不同
    java原生输出:<% out.println() %>
    表达式输出:属于JSP语法
    2)语法范畴不同
    3)输出主体不同
    out.println() out内置对象 优缺点:安全性不高,可维护性不好

作业:打印99乘法表(右上三角)

 <table border=1><%for (int i = 9; i >= 1; i--) {%><tr><%for (int k = 1; k <= (9 - i); k++) {%><td>&nbsp;</td><%}for (int j = i; j >= 1; j--) {if (i % 2 == 0) {%><td><%} else {%><td><%}%><%=i * j%></td><%}}%></tr></table></body>

4.指令

  • 1.指令由什么执行?
    jsp属于动态代码,由服务器执行

  • 2.三种配置指令
    语法:<%@ %>

1)page

<%@page %> 对当前页面属性进行处理(eg.静态编码 导包)

<%@ page contentType="text/html;charset=gb2312"%>

作用: 对当前页面的html和静态代码进行编码,所以配置指令使用静态编码
服务器端对静态代码做处理,配置指令只对当前页面有效
执行特点:只能写在上面,且只能写一条

2)指令
  • A:include 指令
    <%@include %> 包含页面至当前页面
    语法:<%@include file="uri"%> 把file指定内容包含到当前页面, 为什么包含? 拥抱需求
    动态注释:<%-- --%>
    执行特点:1)先包含后执行 2)对被包含的页面类型没有要求
    缺点
    1)被包含页面不能与当前页面有相同的变量定义,否则tomcat出问题
    2)被包含页面不能再出现html body,否则浏览器出问题
<%@ page contentType="text/html;charset=gb2312"%><body><%@include file="hello.jsp"%></body>
  • B:include标签
    1)标签include 属于Java语法范畴
    2)先执行后包含,避免变量冲突 前提:动态页面
    3)缺点:执行只执行动态代码
    4)当前页面可以通过request页面向被包含页面传参

    如果被包含页面为静态页面:
    1)不能向当前页面传参
    2)先包含,不执行

    eg. txt文件if 执行:退化成指令includeif 不执行:直接将动态代码发给浏览器
    
  • C:指令包含和标签包含区别 == (考试原题2)==
    相同点:把被包含页面包含到当前页面
    不同点:
    1)语法不同
    写法不同

    <%@ include file="uri"%> jsp
    <jsp:include page="uri">  java
    

    语法范畴不同
    指令:jsp
    标签:java
    2)执行流程不同
    指令:先包含,后执行
    标签:
    动态页面:先执行后包含
    静态页面:先包含不执行
    3)对被包含页面是否识别
    指令:不识别被包含页面类型
    标签:识别被包含页面类型
    4)传参
    指令:当前页面不能向被包含页面传参
    标签:动态:能
    静态:不能
    5)各自缺点
    指令:
    1.被包含页面不能和当前页面有相同变量名
    2.被后包含页面不能由html body
    标签:
    1.避免被包含页面为静态页面,如果为静态页面,可能会向浏览器发送动态代码
    2.不管被包含页面为动态或静态,都不能含有< html>< body>标签
    结论:
    如果没包含页面为动态页面,则采用标签包含,前提:把静态页面改为动态页面(没有html body)

    <%@ page contentType="test/html;charset=gb2312"%>
    <html><body>
    int i = 100;
    %>
    <h1>i:<%%=i></h1>
    <%--jsp库下的include标签--%>
    <jsp:include page="include.jsp"/></body>
    </html>
    
  • 标签
    java标签 => 找到标签描述文件 -t/d =>找到java程序
    1.java程序
    2.定义标签
    3.将标签与Java程序关联

    标签执行的Java程序
    标签相当于Java语法范畴

    标签语法特点:
    <标签库:标签 />
    为什么使用标签
    不要在jsp中些原生java程序,用标签表示

  • tag标签
    <%@taglib%> 引入标签库到当前页面

  • 3、JSP的执行流程 (考试原题1)
    1)启动tomcat
    2)浏览器发请求 http://127.0.0.1:8080/hello.jsp
    3)hello.jsp => hello_jsp.java (在work目录下)
    4)调用javac把hello_jsp.java转换成hello_jsp.class
    5)调用java执行字节码文件class,只执行动态代码
    6)tomcat把动态代码的执行结果嵌入到静态代码中,发回给浏览器显示

  • 4、JSP注意事项
    1.jsp由谁来执行?
    JSP:由服务器执行的页面

    2.修改jsp页面?
    第二次修改.jsp文件,页面还是显示原来的,因为没有改变.class文件,而执行的是.class文件
    做法:1)删除work文件 2)重启服务器

    3.jsp页面有什么组成?
    JSP页面 = 静态代码+动态代码

    4.jsp能访问数据库吗?
    JSP可以访问数据库,但最好不要用JSP访问数据库,难维护

    5.代码调试工具?
    Junit

    6.如果jsp没有动态代码 或者 html内由动态代码,服务器将如何处理?
    如果JSP没有动态代码,服务器也会处理,打开JSP文件,进行扫描,找动态代码,会占用服务器的时间
    如果html有动态代码,服务器不会执行,直接跳过

    7.配置文件由谁来处理?
    配置文件是由服务器来处理
    配置文件的信息是思想、指导

    8.对象在哪里创建?
    堆中不创建对象,在对象的属性空间开辟空间

    9.垃圾回收机制回收的是哪里的空间?
    垃圾回收机制回收的是堆的空间

三、表单(登录)

1、表单

1.表单的优点?
1)方便接收用户请求参数,方便交互
2)自动生成http协议

2.表单请求内容?

http://127.0.0.1:8080/test/printTable01.jsp?rownum=5&colnum=8

post请求参数放在http协议体中,get请求参数放在协议头
post请求只能表单发送 优点: 安全不可见

3.socket采用的什么协议?
TCP协议

4.表单执行流程?
1)服务器请求 (服务器接收无状态的协议)
2)创建request,接收请求
3)tomcat通过项目到目录下找到处理请求的组件
4)request.getParameter(String rownum) 得到参数值
取得参数 => 转换参数 (int col = Integer.parseInt())=> 使用参数(for)
5)response

5.请求结束后会怎样?
1)所有请求结果放到http中,送回到浏览器
2)request response消失

2、异常

1、目的
使程序继续运行

2、try内代码有问题该怎么执行?
try内有问题代码,后面都不执行,直接进入catch

3、异常种类
算术异常类:ArithmeticExecption
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件已结束异常:EOFException
文件未找到异常:FileNotFoundException
字符串转换为数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException
方法未找到异常:NoSuchMethodException

4、空串和空的区别?
空串 “”:是对象,有属性和方法
null:不是

3、登录界面 1.0

login.jsp

用户名:username
密码:password
登录

control.jsp
1)取得用户名uname 取得密码upass
2)比较 if((“zhangshan”.equals(uname) ) && (“12346”.equals(upass)))
3) true => success.jsp <jsp:forward page=“success.jsp”> 取得用户名,登录成功
false => error.jsp <jsp:forward page=“error.jsp”> </jsp:forward>

四、九大内置对象

  • 1、为了处理用户请求,由tomcat自动创建
    作用:实现用户和服务器端数据的交互和传递

  • 2、内置对象种类(九大内置对象)

    1)request

    请求范围:请求开始时开始 请求结束时销毁 ==> 请求范围,只在请求有效
    作用:1)接收请求数据并进行传递 ;2)设定并传递后台属性
    注意点:
    1)服务端跳转 控制层向视图层跳转
    2)一个用户在同一时刻只能发一个

    2)response

    请求范围:request response 同时创建 同时结束
    作用:1)把结果信息发给浏览器显示(jsp页面里)
    2)设置协议头(可控制浏览器自动发请求)
    3)完成客户端跳转,设置cookie

    3)session:表明用户的存在

    1)生存周期:用户范围
    第一次发请求访问服务器动态组件时创建,一个用户可以发多个请求,用户不存在销毁(用户下线)
    2)作用:传递验证信息(安全性)
    3)为什么不用session传递数据?
    一个用户可有多个请求request
    生存周期比request长,由用户决定,一个用户拥有唯一的session,当有多个用户时有多个session,则浪费内存空间
    用户有多个session,使内存使用率过重,容易使内存崩溃
    4)pageContext
    1)生存周期:页面范围
    2)作用:存放临时数据,不能传递数据
    5)application (***)
    1)生存周期:tomcat启动就创建application(一个),服务器关闭时销毁,服务范围
    2)作用:存放公共信息
    6)config
    1)生存周期:服务范围
    2)作用:传递配置信息
    7)out(少)
    向浏览器输出信息,尽量用reponse传递信息
    不安全,不好用
    8)exception(不用)
    1)生存周期:服务范围
    2)作用:传递异常信息
    tomcat创建时会创建:application config exception,不依赖于用户请求

    j2ee jar包:tomcat/lib/servlet-api.jar
    j2se j2ee api

五、request

  • 1、request对象只接受http协议请求

  • 2、request:形参类型与实参类型

    // 持久层:数据库 变化会造成业务层变化
    HttpServletRequestWrapper req = request //耦合性过强,增加维护的工作量
    // HttpServletRequest  接口
    HttpServletRequest req = request //降低耦合性
    
  • 3、接收参数,传递参数(前提:服务端跳转,用户只发一次请求)

  • 4、执行流程

    requestDemo01.jsp<%request.setAttribute("name", "ZTE");request.setAttribute("password", "123456");%><jsp:forward page="requestDemo02.jsp"/>

=> 浏览器发送请求
=> 创建request内置对象 => 将参数放入request参数区 (key=age value=“String类型”)
=> 找到requestDemo01.jsp处理请求
=> 通过request设定属性,在属性区,值的类型为object (key=name value=“ZTE” key=password value=“123456” )
=> 服务端跳转到requestDemo02.jsp 用户不知道,还是之前那个请求
=> request拿到参数属性

  • 5、跳转方式
    1、服务端跳转(一次请求,在各个组件进行参数和属性的传递)
    属性的保存范围
    1) ☆ 最重要的概念:四种属性保存范围
    1-1public void setAttribute(String name,Object value)
    属性名称为字符串
    属性值可以为任意对象
    1-2public Object getAttribute(String name)
    1-3前台参数getPrameter,后台属性setAttribute

    2) request
    2-1 参数区:来自于Http请求
    Key=age value=20
    类型String
    2-2 属性区:来自于服务端后台组件
    Key=name value=”zte”
    Key=password value=”123”
    类型Object

    3)将属性保存在一次请求范围之内:
    ☆ 前提:必须使用服务器端跳转<jsp:forward/>

    应用点:MVC设计模式、Struts、Webwork
    例:requestDemo01.jsp、requestDemo02.jsp、requestDemo03.jsp

    3-1执行request01.jsp
    http请求一来,Tomcat为请求创建request参数对象,Tomcat将请求数据设定在request参数区,request自动接收Tomcat设定的请求参数。
    3-2服务器跳转到request02.jsp
    取得参数,请求未结束,取得的参数结果不显示在浏览器
    3-3服务器跳转到request03.jsp
    执行request03.jsp,将参数结果传到浏览器上显示

    Tip 接收参数,传递参数,设定属性,服务端跳转。用户请求只发一次,传递的时候(服务端跳转,用户不知道)需要造型(强转)。

2、 客户端跳转(多次请求)
2-1 参数区:来自于Http请求
Key=age value=20
类型String
2-2 属性区:来自于服务端后台组件
Key=name value=”zte”
Key=password value=”123”
类型Object

3-1执行request01.jsp
http请求一来,Tomcat为请求创建request参数对象,Tomcat将请求数据设定在request参数区,request自动接收Tomcat设定的请求参数。

3-2服务器跳转到request02.jsp
取得参数,执行静态代码,取得的参数结果显示在浏览器,请求结束,则request销毁,

3-3服务器跳转到request03.jsp
用户再次发请求,创建一个新的request,里面参数为空,执行request03.jsp,将参数结果传到浏览器上显示为空。

Tip request在各个组件进行参数和属性的传递必须是服务端跳转。(getRequsetParame)
客户端跳转用户需要重新发请求,服务端跳转服务器自动在后台发请求。

在服务端,更安全,在服务端运行效率更高

request优点:
请求参数只有用request才能拿到用户信息,只有他有参数区,安全性高,执行效率高节省内存

六、Page
Page:只是存放临时数据,不能传递数据。
属性区:来自于Http请求
Key=age value=20
类型String
发送Http请求,Tomcat创建request内置对象,设定参数
访问JSP页面即创建page内置对象
一访问进入page02.jsp即创建新的page内置对象,因为page01.jsp内的page内置对象销毁,所以创建新的page对象参数值为空。
page返回页面创建,离开页面销毁

page范围:
在JSP中设置一个页的属性范围,必须通过pageContext完成

session
利用session来保存用户的信息
服务范围:用户范围
作用 只保留一个用户,主要用于验证用户是否登录

Application:
服务范围 Tomcat一启动就创建到服务器关闭时销毁,跨项目、用户、请求传数据
作用 传递公共信息
生命周期长,内存占用高,易使系统崩溃,安全性过低。
一般验证信息用session,分步收集用session(requset解决不了)。

动态编码:
动态静态代码区别
<%@ page contentType=“text/html;charset=gb2312”%> 只能处理静态编码(text/html)
<%汉字%>动态代码中的汉字成为动态编码

变成比特流,用ISO8859-1统一编码
String name = request.getParameter();
bytes[];
b = name.getBytes(“ISO8859-1”);变成字节数组对象
name = new String(b)

request.setCharacterEncoding(“GBK”)
String name = request.getParameter(“username”)
只对post请求 即协议体里面的汉字做编码
优点:代码量少
缺点:编码成功率不高
只对协议体里面的的汉字做编码

javaweb课堂笔记(一)相关推荐

  1. JavaWeb学习笔记(十)--HttpServletRequest

    1. HttpServletRequest简介 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中 2. Ht ...

  2. 管理系统中计算机应用第四章重点,管理系统中计算机应用课堂笔记第四章(4)...

    管理系统中计算机应用课堂笔记第四章(4) 分类:自考 | 更新时间:2016-07-08| 来源:转载 这个分析和抽象工作可分以下三步进行: 5.2.1数据流程图的绘制 数据流程图既是对原系统进行分析 ...

  3. AI公开课:19.04.10颜水成—360副总裁《人工智能:观察与实践》课堂笔记以及个人感悟—191017再次更新

    AI公开课:19.04.10颜水成-360副总裁<人工智能:观察与实践>课堂笔记以及个人感悟 导读       颜水成,新加坡国立大学副教授.360集团副总裁.人工智能研究院院长. 颜水成 ...

  4. AI公开课:19.05.16漆远-蚂蚁金服集团CF《金融智能的深度与温度》课堂笔记以及个人感悟—191017再次更新

    AI公开课:19.05.16漆远-蚂蚁金服集团CF<金融智能的深度与温度>课堂笔记以及个人感悟-191017再次更新 导读         漆远,麻省理工学院博士后,39岁被评为美国普渡大 ...

  5. AI英特尔杯公开课:2019.06.27在线直播《研究生人工智能创新大赛—AI赋能,创新引领》课堂笔记和感悟(二)

    AI英特尔杯公开课:2019.06.27在线直播<研究生人工智能创新大赛-AI赋能,创新引领>课堂笔记和感悟(二) 导读      讲解总体不错,知识点比较基础,适合入门,各种主流框架都有 ...

  6. AI英特尔杯公开课:2019.06.27在线直播《研究生人工智能创新大赛—AI赋能,创新引领》课堂笔记和感悟(一)

    AI英特尔杯公开课:2019.06.27在线直播<研究生人工智能创新大赛-AI赋能,创新引领>课堂笔记和感悟(一) 导读      讲解总体不错,知识点比较基础,适合入门,各种主流框架都有 ...

  7. AI公开课:19.05.29 浣军-百度大数据实验室主任《AutoDL 自动化深度学习建模的算法和应用》课堂笔记以及个人感悟

    AI公开课:19.05.29 浣军 百度大数据实验室主任<AutoDL 自动化深度学习建模的算法和应用>课堂笔记以及个人感悟 导读        浣军博士,汉族,1975年出生于江苏苏州, ...

  8. AI公开课:19.05.15施尧耘-达摩院量子实验室主任《量子计算:前景与挑战》课堂笔记以及个人感悟

    AI公开课:19.05.15施尧耘-达摩院量子实验室主任<量子计算:前景与挑战>课堂笔记以及个人感悟 导读         施尧耘1997年本科毕业于北京大学,后在普林斯顿大学取得计算机科 ...

  9. AI公开课:19.05.22 Aya Soffer—IBM AI Tech VP《Advanced, scalable, and trusted AI 》课堂笔记以及个人感悟

    AI公开课:19.05.22 Aya Soffer-IBM AI Tech VP<Advanced, scalable, and trusted AI >课堂笔记以及个人感悟 Introd ...

最新文章

  1. javascript 获取光标所选中的内容并插入到另一个文本框中(兼容ie和ff)
  2. CompletableFuture框架
  3. django下载excel,使用django-excel插件
  4. Windows phone 8 学习笔记
  5. java基础数据结构查询最快_Java 数据结构快速入门
  6. vue项目中的跑马灯的使用
  7. IT 已成为最疯狂的加班行业,没有之一
  8. python 部署模型,关于python:机器学习模型python在线服务部署的两种实例
  9. java矩阵相乘泛型_21.8 实例学习:泛型矩阵类
  10. 【编译原理】递归下降语法分析设计原理与实现
  11. 搜狗输入法界面简化设置
  12. JAVA之MySQL数据库增删改查【Java入门练手】
  13. java 抽象属性 设计_设计模式之抽象文档模式
  14. 延时关机命令 linux,Ubuntu自动定时关机的方法
  15. 5G无线技术基础自学系列 | 新多址接入
  16. uni-app 页面中的背景图片高度和宽度自适应
  17. 联想e480怎么一键恢复_Lenovo笔记本电脑如何使用一键恢复
  18. Qt:一个简洁漂亮的高仿网易云播放器
  19. 左方之地 - 结论 - 组合计数
  20. win10更新后我的电脑属性界面显示系统正在监控并保护你的电脑如何解决

热门文章

  1. Coursera视频无法播放
  2. ACM四五周学习总结
  3. 程序员的三年创业之路
  4. [图文]历届奥斯卡影后(下)
  5. 京东最爱考的前端面试题,html5移动web开发实战
  6. 2019前端最全面试题
  7. SpringBoot 和 Vue 前后端分离教程(附源码)
  8. PDF能编辑吗,怎样去掉PDF上的水印
  9. unity 手机上获取手指触摸位置_Unity 操作检测的各种实现#2手机端 - 触屏与手势...
  10. 《Python语言程序设计》考试试题(A卷)【附答案】