JAVA WEB学习笔记(一)
- 课程网址:https://www.bilibili.com/video/av29086718?p=6
- JSP:动态网页
- 静态和动态的区别:
- 不用和是否有“动感”混为一谈
- 和是否随着时间,地点,用户操作的改变而改变有关
- 动态网页需要服务端脚本脚本语言(jsp)
- 架构:
- b/s:浏览器/服务端
- 不足:不够美观,个性化不足
- c/s:客户端/服务端
- 不足:如果软件升级,所有软件都得升级;维护困难,需要维护每一台客户端软件;每一台客户都需要安装客户端软件
- b/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文件:
- web-inf:
- 解压后目录:
<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值”增加映射
- 在server.xml文件中增加一个标签
- 访问是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=“指定标签库前缀” %>
- page指令:定义网页依赖属性<%@ page … %>
- 注释:
- html
- java:// /…/ -->客户浏览器可查看
- jsp:<%-- --%>
- 脚本:javascript
- 一般而言,修改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(“编码格式”)
- get方式请求出现乱码
- 常见方法:
- 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
- session实现机制:
- !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提供统一的访问方式
- JDBC API:提供了多种操作的访问接口,Connction,statement,PreparedStatement
- 主要功能:
- 与数据库建立连接
- 发送sql语句
- 返回处理结果
- 实现方式
- DriverManager:管理jdbc驱动
- Connection:建立连接
- Statement(PrparedStatement):增删改查(通过Connection产生)
- CallableStatement:调用数据库中的存储过程/存储函数(通过Connection产生)
- result:结果集
- 具体步骤:
- 导入驱动,加载具体驱动类(Class.forName(驱动类))
- 与数据库建立连接(DriverManager.getConnection(连接字符串, username,pwd))
- 发送sql,执行,增删改(Statement stmt = connection.createStatement();
- 增删改int count(增删改记录数) = stmt.executeUpadate(sql语句)
JAVA WEB学习笔记(一)相关推荐
- 2019年Java Web学习笔记目录
Java Web学习笔记目录 1.Java Web学习笔记01:动态网站初体验 2.Java Web学习笔记02:在Intellij里创建Web项目 3.Java Web学习笔记03:JSP元素 4. ...
- java web学习笔记(持续更新)
java web学习笔记 一.Java Web简介 二.认识Servlet 1.什么是Servlet? 2.请求路径 3.tomcat 4.Servlet的使用 三.Servlet简单应用 1.创建S ...
- [原创]java WEB学习笔记02:javaWeb开发的目录结构
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- [原创]java WEB学习笔记48:其他的Servlet 监听器:域对象中属性的变更的事件监听器 (3 个),感知 Session 绑定的事件监听器(2个)...
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- [原创]java WEB学习笔记58:Struts2学习之路---Result 详解 type属性,通配符映射
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- 1、JAVA web学习笔记
以下内容是在学习某机构视频过程中记录的笔记,不准确的地方请大家评论指正. JavaWeb是使用Java语言开发基于互联网的项目. 资源分类有两类: 静态资源: 使用静态网页开发技术发布的资源. 特点: ...
- [原创]java WEB学习笔记86:Hibernate学习之路-- -映射 n-n 关系,单向n-n,双向n-n
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记36:Java Bean 概述,及在JSP 中的使用,原理
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- [原创]java WEB学习笔记54:Struts2学习之路--- 编写Struts2 的第一个程序,HelloWord,简述 package ,action,result...
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记18:java EE 中的MVC 设计模式(理论)
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
最新文章
- linux条件判断:常用练习添加用户
- 记录call、apply、bind的源码
- Android--使用XMLPull解析xml
- folders默认配置 shell_更改windows默认的User Shell Folders
- 有一种爱情叫永不改变_设计就像爱情一样,总是在寻找一种方式
- switch语句使用注意事项
- 中断处理函数_ARM的中断处理 [二]
- 随想录(cmake编译)
- JustForFly struts2标签s:generator
- 如何简单描述java中的代理模式
- Nginx自签名证书的配置
- 说说传统的软件销售案例
- My SQL中PK、NN、UQ、BIN、UN、ZF、AI、G所代表的意义
- 喜马拉雅产品分析报告
- 微软研发类实习生面试
- 信用风险建模 in Python 系列 7 - ASRF 模型
- C语言-复制特定的字符串
- 力天创见客流热区图分析
- 锐化 清晰度 对比度的区别
- 王者五一节系统服务器,王者荣耀2017年五一活动
热门文章
- 博弈逻辑与布尔判断题
- c++ overload
- HTML:Marked-js+Bootstarp简单实现Markdown文本编辑器
- 计算机设置了分组用户怎么切换,怎么弄微信小号-不单止换小号,另外这些微信小技巧也一定让你“相见恨晚”...
- 【Matlab】根据excel画折线图和柱状图
- 一步一步学JAVA(16)-IO流
- JAVA后台判断是否重复(编辑)
- coding部署博客 + 腾讯云 cdn 踩坑日记
- vc707 MicroBlaze Helloworld 实验
- 主流编程语言的特点以及优缺点(一)
- 2019年Java Web学习笔记目录
- 增删改int count(增删改记录数) = stmt.executeUpadate(sql语句)
- 主要功能: