• 课程网址:https://www.bilibili.com/video/av29086718?p=6
  • JSP:动态网页
    • 静态和动态的区别:

      • 不用和是否有“动感”混为一谈
      • 和是否随着时间,地点,用户操作的改变而改变有关
    • 动态网页需要服务端脚本脚本语言(jsp)
    • 架构:
      • b/s:浏览器/服务端

        • 不足:不够美观,个性化不足
      • c/s:客户端/服务端
        • 不足:如果软件升级,所有软件都得升级;维护困难,需要维护每一台客户端软件;每一台客户都需要安装客户端软件
  • tomcat
    • 解压后目录:

      • bin:可执行文件(startup.bat shutdown.bat)
      • cong:配置文件(server.xml)
      • lib:tomcat依赖的jar包
      • log:日志文件(记录出错等信息)
      • temp:临时文件
      • webapps:可执行项目(开发的项目)
      • work:存放由jsp翻译成的java以及编译成的calss文件:jsp->java->class
    • 双击startup.bat常见错误:
      • 与其他服务器端口冲突,默认8080,在cong下的server.xml中修改
      • localhost:端口号
    • 常见状态码:
      • 404:资源不存在
      • 200:一切正常
      • 300/301:页面重定向(跳转)
      • 403:权限不足(访问a目录,a目录不可见)
      • 500:服务器内部错误(代码有误)
    • 项目目录:
      • web-inf:

        • calsses:编译后字节码文件
        • lib:依赖的jar包
        • web.xml:配置信息
      • jsp文件:
<html>
<head>
<title></title>
</head>
<body>
<%  java代码   %>
</body>
</html>
  • jsp认知:

    • jsp:页面中嵌套的java文件
    • 在项目/web-inf/web.xml的welcome-file-list中设置初始访问页面
  • 虚拟路径:
    • 作用:将web项目配置到webapps以外的目录
    • 配置方法:
      • 需要重启:在server.xml文件的标签中加<Context docBase(实际路径)="" path(虚拟路径,携程绝对路径/相对路径(相对于webapps的路径))="" />
      • 不需要重启:在conf/Catalina/localhost下创建一个项目名.xml文件,写入上面的标签(将文件名改成root,则在浏览路径中不用写ROOT)
  • 虚拟主机
    • 发送网址现在本地解析将网址转换为域名,存在直接访问本机
    • 域名解析(西部数码/新网/万网):将输入的网址转换为映射的域名
    • 配置
      • 在server.xml文件中增加一个标签

        • appBase=“项目实际位置”
        • name=“名字”
        • 子标签:如上
      • 修改标签中的defaultHost属性即修改默认引擎
      • 修改“C:\Windows\System32\drivers\etc”下的hosts文件,添加“127.0.0.1 上面的属性name值”增加映射
    • 访问是name属性值+端口号
    • 流程:网址->host找映射关系->server.xml找ENGINE的默认引擎->通过path属性值映射到指定项目
  • jsp执行流程:
    • 客户端通过浏览器发出请求
    • 服务端解析请求回应客户端
      • 第一次访问:jsp->java->class
      • 第二次访问:直接访问class文件(如果服务端代码修改,则会重新翻译和编译)
    • JSP和servlet可以相互转换
  • 使用eclipse开发web项目
    • WebContent目录下的文件可直接通过项目名/文件名访问
    • WEB-INF的访问权限比较高,无法通过浏览器访问,只能通过请求转发访问
      • 注意:内部跳转中只有请求转发可以访问,重定向不可以
    • 如果想要同时可以运行jsp和servlet
      • 项目增加一个在tomcat/lib下的jar包:servlet-api.jar
      • 在项目右键build path中add library添加server runtime把tomcat/lib文件夹加入
    • 统一字符集编码
      • 编码分类:

        • 设置jsp文件的编码(jsp文件中的pageEncoding):jsp->java的转码操作根据
        • 设置浏览器读取jsp文件的编码(jsp王文建中content)
        • 文本编码:
          • 统一设置:将eclipse中的文件一致设置:window->refrences->jsp files->encoding
          • 设置某一个项目。右键项目resource-text file->other设置
          • 设置单独文件右键文件proerpties
        • 前两种需要一致
    • 当tomcat配置入eclipse之后,会重新创建一个tomcat,原有tomcat和eclipse中的互不相关
      • 关联方法:第一个使用servers之前通过双击eclipse中的tomcat修改 server location选择第二个托管选项
  • jsp的页面元素
    • 脚本:javascript

      • <% 局部变量定义,常见java语句 %>
      • <%! 定义全局变量,定义方法 %>
      • <%= 输出表达式 %> 没分号
      • jsp中out.println不会换行,可以通过+"
        "换行
    • 指令
      • page指令:定义网页依赖属性<%@ page … %>

        • language:jsp使用的脚本语言
        • import:导入类
        • contentType:浏览器解析jsp的编码
        • pageEncoding:jsp文件自身编码 jsp->java
      • include:包含其他文件 <%@ include file=“文件相对url地址”%>
      • taglib:引入标签库的定义 <%@ taglib uri=“标签库位置” prefix=“指定标签库前缀” %>
    • 注释:
      • html
      • java:// // -->客户浏览器可查看
      • jsp:<%-- --%>
  • 一般而言,修改web.xml,配置文件,java文件需要重启tomcat
  • jsp内置对象(自带的,不需要new,也能使用的对象)
    • out:向客户端输出
    • !request:请求对象,存储“客户端向服务端发送请求信息”
      • 常见方法:

        • String getParameter(String name):根据请求的字段名key,返回一个值value
        • String[] getParameterValues(String name):根据请求的字段名key,返回多个字段值value(checkbox)
        • setCharacterEncoding(“编码格式”):设置post方式请求编码,(不设置根据tomcat默认,7以前是iso-8859-1,8以后是utf-8)
        • getRequestDispatcher(“b.jsp”).forward(request,response):请求转发 A->B
        • getServerletContext():获取项目的ServerletContext对象
      • 表单提交的get(地址栏请求方式,超链接方式也是)和post的区别
        • get在地址栏上显示请求信息(地址栏可容纳信息有限:4-5kb,容纳不下会报错),post不显示
        • 文件上传操作必须是post
      • 统一请求的编码request
        • get方式请求出现乱码

          • 对每一个变量进行修改:new String(变量名.getBytes(“原编码”,“现编码”));
          • 修改server.xml,修改tomcat默认get提交方式:URIEncoding=“UTF-8”
        • post方式请求出现乱码
          • setCharacterEncoding(“编码格式”)
    • response:响应对象
      • 方法:

        • addCookie(Cookie cookie):服务端向客户端增加cookie对象
        • sendRedirect(String location) throws IOException:页面跳转的一种方式
        • setContentType(String type):设置服务端响应的编码
      • 重定向和请求转发的区别:
        • 请求转发的地址栏不改变,重定向会改变
        • 请求转发会保留第一次请求时的数据,重定向不保留
        • 请求转发客户端发送一次请求,重定向客户端发送两次请求
    • Cookie(客户端,非内置对象):由服务端生成,在发送给客户端保存
      • 相当于本地缓存的作用:客户端请求,服务端将请求内容发给客户端,客户端下次不需要再请求服务端
      • 作用:提高访问服务端的效率,安全性差
      • 方法属性
        • Cookie: name=value
        • javax.servlet.http.Cookie
        • public Cookie(String name, String value)
        • String getName()
        • String getValue()
        • void setMaxAge(int expiry):最大有效期,单位是s
      • 服务端发送给客户端
        • 准备cookie:response.addCookie(Cookie cookie)
        • 页面跳转(转发,重定向)
        • 客户端获取cookie:request,getCookies()—>获取只会全部获取
      • cookie中使用英文
      • 使用cookie实现自动记住用户名
        • 创建cookie对象,将获取的用户名保存到cookie中
        • 通过response将cookie对象加入,通过重定向发送到客户端
        • 在客户端创建用户名的全局变量,通过获得的cookie集合去除对应value,在form表单中value=<%=value%>显示
      • 服务端在相应客户端时,自动发送一个带有JESSIONID的cookie
      • Cookie:
        • 不是内置对象,使用时需要创建,但服务端会自动创一个带JESSIONID的cookie对象
    • !Session(会话,服务端发起的)
      • session实现机制:

        • SessionID:当客户端第一次请求时,(,服务端先用cookie保存的jsessionID与服务端保存session的sessionID匹配失败)服务端产生session对象(用于保存客户端信息)自带sessionID,将sessionID赋值给JESSONID在cookie中,服务端响应将cookie传递给客户端,jsessionid和sessionID对应
        • 客户端之后访问时,服务端先用cookie保存的jsessionID与服务端保存session的sessionID对应,确认不是第一次访问则不需要再次传递客户信息
      • session机制:
        • session存储在服务端
        • session同一客户请求时共享
        • 实现机制
      • session方法
        • String getId():获取sessionID
        • boolean isNEW():确认是否是新用户(第一次访问)
        • void invalidate():使session失效(退出登录,注销)
        • void setAttribute(“属性名”,“属性值”),Object getAttribute():获取设置session中保存的属性
        • void setMacInactiveInterval(秒):设置最大有效非活动时间
        • int getMacInactiveInterval():获取最大有效非活动时间
        • invalidate():注销,清除所有信息
        • removeAttribute(“指定属性”):清除指定属性信息
      • 对于服务端,一个浏览器是一个客户端
      • cookie和session的区别:
        • cookie在客户端,session在服务端
        • session比cookie安全
        • cookie保存key-value的String session(HttpSession):String-Object
    • !application:
      • String getContextPath():虚拟路径
      • String getRealPath(String name(虚拟路径)):虚拟路径的绝对路径
    • !PageContext:JSP页面容器
    • page:当前jsp页面对象(相当于java中的this)
    • exception:异常对象
    • out:输出对象
    • config:配置对象(副武器配置信息)
  • 四种范围对象(小->大)
    • 范围对象

      • PageContext:页面容器–>当前页面(页面跳转后失效)
      • request:请求对象–>同一次请求,页面跳转有效,重定向(重新发送请求)失效
      • session:回话对象–>同一次会话(不关闭或者切换浏览器,登录->退出之间有效),重定向有效
      • application:全局对象—>整个项目运行期间有效(切换浏览器不影响),关闭服务或其他项目无效—>多个项目共享或重启有效,通过JNDI实现
    • 共有方法:setAttribute(属性名,属性值)—>新增或修改,Object getAttribute(String 属性名),void removeAttribute(属性名):删除属性
    • !对象范围越大,造成的性能损害越大

JDBC:JAVA DATABASE CONNECTIVITY,可以为多种关系型数据库DBMS提供统一的访问方式