JavaWeb (了解底层原理,面试用)
Web页面可以动态更新;所有用户看到都不是同一个页面;与数据库交互(持久化)
PHP
PHP开发速度快、功能强大、跨平台、代码简单(中小企业很多用这个)
无法承载三高(高并发、高可用、高性能)
Web服务器 ——Tomcat
Tomcat服务器(属于Apache公司)运行JSP和Servlet
hosts
首先在本机的域名映射文件hosts里找,如果找不到,就会去DNS服务器去找域名ip
Tomcat下载文件夹:
Maven:环境搭建+IDEA操作
遇到要导包,就去官网 https://mvnrepository.com/搜,然后填在pom.xml
Maven用于导入jar包
核心思想:约定大于配置
第一次使用需要配置:
还有环境变量M2_HOME MAVEN_HOME
还需要在IDEA里面配置maven:
pom.xml文件
项目依赖:从https://mvnrepository.com/ 找需要的包以及版本
build用于静态资源导出
maven中jar包的关系依赖图:
Servlet 原理
Servlet:实现servlet接口的java程序
用于开发动态Web,提供java接口。
我们自己写的类 -->继承HttpServlet -->继承GenericServlet -->继承Servlet (后面三个是现成的轮子)
自己写的类里面重写HttpServlet里面的doGet、doPost就可以了
写HelloServlet的全流程:
1.构建普通Maven项目,删掉src,然后建立Module,然后这个空的工程就是maven主工程
2.修改web.xml,将版本换成最新的
3.编写Servlet程序:编写普通类,实现HttpServlet接口的继承
4.编写Servlet映射:java程序,在web服务中注册Servlet,然后给浏览器一个路径 连接到web服务器。(类似于@requestmapping、@postmapping的url路径)
5.配置Tomcat:配置项目发布的路径
6.启动测试
请求转发requestDispatcher
HttpServletResponse
下载文件(简单看下就好):
重定向
场景:页面切换
HttpServletRequest
获取前端传递的参数:req.getparameter /req.getparameterValues参数数组
Cookie
Session 会话(重点)
服务器给每一个用户创建一个Session,SessionID唯一
两个浏览器模仿两个客户端(两种不同的浏览器,而不是开两个浏览器窗口)
浏览器不关闭,Session和Cookie就一直存在
使用场景:保存用户的登录信息、高频数据
JSP
Java Server Pages
- html只提供静态的数据
- 嵌入的java代码,为用户提供动态数据
JSP原理:本质上就是Servlet(继承自servlet,内嵌out.write(html代码)
JSP基础语法
<%= 表达式 %> //不能使用分号来结束表达式
<% 代码片段 %>
<%! 声明 %>
<%-- 注释 --%>
指令标签:<%@ %>
JSP 9大隐含对象:
4个用于保存数据的对象(作用域不同):
request:
session:用户用完一会还有用,如:购物车
application:一个用户用完了,其他用户还可能使用,如:聊天数据
JSTL(JSP标准标签库)
https://www.runoob.com/jsp/jsp-jstl.html
核心标签:
EL(Express Language)表达式 ${ }
- 获取数据
- 执行运算
- 获取web开发常用对象
JavaWeb的MVC
过滤器Filter
用来过滤网站的数据(统一处理,不用每个地方都写):
- 处理中文乱码
- 登录验证(权限)
SpringBoot里面用Shiro
处理格式:
监听器Listener(一般在GUI编程中使用)
JDBC
标准maven工程目录 base_dir |---pom.xml //工程构建配置文件,如第三方件依赖、插件依赖等 |---target //工程输出目录,代码库默认不存在,构建时自动生成 |---script //可选,构建入口目录,使用build.suffix作为构建入口时创建 |---build.suffix //可选,构建入口文件,suffix为对应脚本后缀 |---config.suffix //可选,构建配置文件,suffix为对应配置后缀 |---config |---settings.xml //可选,Maven配置文件 |---module1 //模块目录,多模块工程用于存放子模块工程和代码,多模块工程支持嵌套 |---pom.xml //模块构建配置文件 |---target //模块工程输出目录,代码库默认不存在,构建时自动生成 |---src //可选,模块的源代码目录,工程仅用于打包时此目录可不存在 |---main |---java //模块的.java文件目录 |---resources //模块资源文件目录,如spring, hibernate配置文件 |---script //模块特殊配置文件目录,如ant/shell/bat等脚本 |---test |---java //模块所有测试.java文件目录,如JUnit测试类 |---resources //模块测试资源文件目录 |---assembly //模块assembly打包描述文件目录 |---module2 //可选,用于自定义配置目录 |---module3