一.web知识点
1.1web资源
静态资源:不会随着时间的改变而改变
动态资源:随时间变化而变化 比如servlet
静态和动态的连接: 同步连接 异步连接 通过前台浏览器发送请求给服务器,服务器响应返回数据给浏览器
1.2 服务器
用户=========>通过网络========>(静态资源=====动态资源)
1.3web资源和服务器的关系
输入资源地址去哪里找?
资源存放在服务器
访问web资源:浏览器===》访问地址==》服务器===》要访问的资源==》处理返回==》浏览器解析==》展示页面
服务器:应用软件安装在配置比较高的主机,
1.4网络访问三要素
① http(https相对安全加密了 HyperText Transfer Protocol )协议:浏览器提交请求数据需要遵循http协议,HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)
② 域名(domain):服务器的唯一标识,因为域名本质是ip地址 ,在网络中 ip 地址是唯一的 测试以管理员身份打开dos命令窗口ipconfig/all
③ 端口(port):就是个整数,用来区分硬件服务器上面相同的多个软件服务器jdbc:mysql://localhost:3306(如果电脑中下载了2个数据库,3306就会冲突,另一个端口3308来区分)
二、Tomcat
1.Apache介绍
https://apache.org/非盈利性组织全球最大的开源基金会,明星软件产品:Tomcathttps://tomcat.apache.org/
2.web服务器产品
weblogic:大型的web服务器软件 oracle
webShere:IBM公司
Tomcat:Apache公司
3.Tomcat 安装和卸载
https://tomcat.apache.org/地址 Download ==>which version 看一下下载的tomcat 和jdk对应的版本
Tomcat 运行==》path:JAVA_HOME===>jdk路径
tomcat 运行常见的问题及解决方案:
① JAVA_HOME环境变量配置有问题,去系统=》高级设置=》环境变量中=》配置对应的JAVA_HOME
②:正常启动,输入地址https://localhost:8080,无法访问,因为没有配置https ,写http
③ 启动一个tomcat ,又启动一个就会产生端口占用 如果发生错误=》log 文件夹下=》看一下刚刚报错时间段的
Caused by: java.net.BindException: Address already in use: bind at sun.nio.ch.Net.bind0(Native Method)
解决:conf 目录下找到server.xml 修改port ,记得管理员权限修改,修改后再重新启动当前的tomcat
4.集成工具idea创建tomcat 的web项目
新建一个java项目,然后点击右键add framework support 点击web application ==》ok
配置tomcat 服务器的环境 ,add configiture =>点击左上角+号 选择Tomcat Server=》填写我们的Tomcat的服务配置信息,application server 是Tomcat 的根目录,注意端口号如果重复了 可以更改,另外在deployment部署servlet.api.jar 包,将aplication context填写外面的项目名
三、Servlet
3.1 定义:
servlet 是运行在 Web 服务器中的小型 Java 程序。servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。
3.2 入门程序步骤
-
idea 创建web项目
-
src 创建cn.tedu.web.Demoservlet 实现接口servlet 并重写方法
-
在自定义类里配置访问路径,比如:/demo01
-
测试 http://localhost:8080/项目名/访问的资源路径
-
注意事项:导入servlet.api.jar包
3.3servlet生命周期
intit()初始化 servlet 对象
service() 响应数据给浏览器
destroy()销毁servlet 对象
/**
* 生命周期方法: 作用接收浏览器请求,响应数据给浏览器
* @param servletRequest: 请求对象,处理请求数据
* @param servletResponse: 响应对象, 处理响应数据
* @throws ServletException: 异常信息对象
* @throws IOException
*/
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("service method ----");
}
/**
* 生命周期方法: 创建servlet对象,执行init()方法
* @param servletConfig
* @throws ServletException
*/
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init servlet object--1");
}
/**
* 生命周期方法: 在servlet对象销毁以后,执行该方法
*/
public void destroy() {
System.out.println("destroy method--------");
}
/**
获取servletConfig配置类对象,了解
*/
@Override
public ServletConfig getServletConfig() {
return null;
}
/**
获取servlet的信息,了解
比如: servlet的访问路径,servlet的名称
*/
public String getServletInfo() {
return null;
}
}
3.4 Tomcat 为什么会弹出浏览器?
在tomcat =>conf=》web.xml文件下最后面能解释
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
3.5 servlet 体系结构
-
顶层接口 Servlet
-
GenericServlet 抽象子类
-
HttpServlet 抽象类继承GenericServlet
开发者定义一个类,实现s接口需要重写所有的方法,最好的方式就是继承HttpServlet 的抽象类
1.自定义类继承=》HttServlet
重写service方法的代码块
@WebServlet(urlPatterns="/demo05") public class Demo4Servlet extends HttpServlet { /** * 服务方法:浏览器每次访问都会执行该方法 * @param req 请求对象 * @param resp 响应对象 * @throws ServletException * @throws IOException */ @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // super.service(req, resp); System.out.println("browser请求"); resp.getWriter().write("你好啊!!hello "); } }
总结:service 方法:get和post都能接收 存在很多问题
get请求提交中文的处理和post 请求提交中文处理不一样,而service 不好判断浏览器是get还是post 所以不好处理请求的代码
2.在实际开发中 重写doGet 和doPost 方法来处理
① doGet()接受浏览器发送的get请求
② doPost()接受浏览器发送的post请求
public class Demo5HttpS extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doGet(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doPost(req, resp); } }
3.6 热部署热加载
如果电脑配置高,热部署速度会快一些
z总结:
① 运行在web服务器的java动态资源 用来接收浏览器的请求,响应数据给浏览器
②自定义servlet 类
方式一:自定义类实现servlet 需重写接口所有的方法
方式二:自定义类继承GenericServlet ,不推荐,不清楚是不是浏览器发送的请求
方式三:自定义类继承HttpServlet 重写对应请求方式的方法如:doGet() 、doPost()、…
③ 常见请求状态码:
404 找不到路径,路径写错
500 代码出异常
405 请求方式不支持