第一章 前言
1.1 JAVA的版本
JAVA版本 | 级别 | 适合开发 |
---|---|---|
JAVASE(J2SE) | 桌面级别 | 桌面开发 |
JAVAEE(J2EE) | 企业级别 | 企业开发 |
JAVAME(J2ME) | 微小版本 | 手机开发 |
1.2 软件的架构
目前主流的软件架构模式两种:C/S架构,B/S架构
架构 | 特点 | 优缺点 |
---|---|---|
C/S(client server)客户端服务器架构 | 必须本地下载特点的软件,像QQ,微信,迅雷 | 1.图形界面3d效果比较好 2.服务器功能一旦升级,强制要求客户端系统更新 |
B/S(browser server)浏览器 服务器架构 | 无需下载客户端,只要有浏览器可直接访问 | 1.服务器功能升级,直接可以升级服务器端 2.图形效果,3d特效不适合,通过HTTP协议访问 |
1.3 浏览器服务架构图
1.4 服务器
1.4.1 什么是web?
万维网,网站。一般网站提供给客户资源:
静态资源:静态网页,不存在数据传输。如HTML,CSS,JS,数据不是动态获取。
动态资源:动态提取数据。JAVAEE中两个核心组件:Servlet,JSP。
1.4.2 什么是web服务器?
web服务器可以使得开发的web应用实现运行和发布,只有部署到服务器下的项目,可以实现从客户端获取到,客户端通过浏览器,基于HTTP协议实现访问。
web服务器为多个客户端提供服务。
1.4.3 常见的服务器
开源的:(开放源码,免费)
Tomcat:主流服务器(简单,适合初学者) jetty:淘宝,运行效率高一点 resin:新浪,开源服务器中,性能比较好的
收费的:(服务以及支持的功能强大,软件大,耗能大)
webLogic:Oracle
webSphere:IBM
Tomcat服务器:
免费开源项目,Apache软件基金会的akarta项目。目前最新10版本。
解压版(8.5版本),安装版
注意:
1,不要解压到层级结构深的文件夹
2,不要解压到中文目录下
Tomcat文件目录结构:
文件目录 | 内容 |
---|---|
bin | 存放可以直接执行的二进制文件,启动服务器,关闭服务器的指令文件 |
conf | 配置文件夹,有重要的配置文件, server.xml 用来配置服务器的,服务器端口,编码。 web.xml用来做项目部署的配置 |
lib | tomcat类库,存放Tomcat运行时所需jar包 |
logs | 用来存放日志文件,记录tomcat的启动,关闭,访问,tomcat错误信息 |
temp | tomcat的临时文件,这个目录在tomcat停止后删除掉 |
webapps | 用来存放web应用,每个文件夹对应一个项目,项目部署到此文件夹 |
work | 运行资源的时候,生成的文件,如:运行JSP时,生成的java和class文件 |
1.4.4 web项目
web项目结构:
文件目录 | 内容 |
---|---|
javaweb01 | web应用名字 |
src | java源代码 |
web | 客户端资源 |
WEB-INF | web.xml:项目全局配置文件 lib 文件夹;存储jar包,如:数据库驱动文件 classes:存储后端编译文件(反射) |
index.jsp | 应用系统的首页面,默认情况访问的是页面 |
配置服务器:
Edit Configurations:
项目输出配置:
1.4.5 关于服务器的访问:
基于HTTP协议,请求(request)响应(response)模型
HTTP请求URL格式:
url : 协议名://ip地址:端口号/项目名/页面名.html?key=value&key=value#锚
例如:localhost:8080/hello.html这里的localhost : 本地ip地址,可以使用127.0.0.1
8080 是tomcat的默认端口,可以更改,建议四位,80以上,防止被占用
request:请求
GET:明文的请求方式POST:密文的请求方式
response:响应
200:响应成功
404:客户端问题,检查请求路径问题存在,服务器是否启动
500:服务器内部出错
第二章Servlet
2.1 Servlet的基本概念
JAVAEE中最核心的组件,Server Applet,服务器端的代码和功能,主要是完成客户端的接收,处理以及响应,基于请求 - 响应模型的组件
2.2 Servlet 作用
1.接收客户端发来的请求(注册,网页填写注册信息)
2.处理请求(增加到数据库当中)
3.响应(反馈给客户端)
2.3 Servlet 创建
创建servlet
//Servlet的访问路径
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("发出了get请求");
System.out.println(request.getParameter("username"));
}
}
通过客户端访问:
url: localhost:8080/MyServlet?username=yushuang
<body>
欢迎学习javaee!!!这是idea 的项目配置,哈哈哈
<form action="MyServlet">
username: <input type="text" name="username">
<input type="submit">
</form>
</body>
总结:
Servlet是一个类,是一个继承了HttpServlet 抽象父类的子类。
2.4 Servlet的配置
1.注解(web3.0版本,推荐使用)
@WebServlet("/MyServlet") //注解添加在Servlet的上方,省略value=
@WebServlet(value = "/MyServlet") //访问路径
注意:
1, url不可以重复的
2, url是客户端访问路径
3,Servlet可以设置多个路径
2.配置文件法web.xml中添加手动配置
<!-- 为servlet手动添加配置-->
<!--servlet类路径-->
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.qf.web.MyServlet</servlet-class>
</servlet>
<!--客户端访问路径-->
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/My</url-pattern>
</servlet-mapping>
注意:
配置文件和注解可以同时使用,url不能重复
2.5 Servlet的访问方式
4种方式:
1.通过URL直接访问
2.通过超级链接访问Servlet
3.通过from表单访问(同步请求)
4.通过脚本访问
location.href = " ";
AJAX(重点,异步请求)
2.5.1 通过URL方式访问
程序员做测试使用,默认发送的GET请求。
后端在接收请求的时候,需要使用doGet()处理请求
http://localhost:8080/MyServlet?username=yushuang&pass=123456
2.5.2 通过超级链接方式访问
默认发送的是GET请求。
<a href="MyServlet?username=yushuang&pass=123456">
点击试试
</a>
2.5.3 通过表单方式访问
默认发送的是GET请求,但是可以通过method属性修改请求方式。
同步请求:
<form action="MyServlet" method="GET/POST">
....
<input type="submit">
</form>
2.5.4 通过脚本方式访问
1,同步请求,通过按钮触发事件,页面跳转的方式,跳转后台
<body>
<button>
点击试试
</button>
</body>
<script src="js/jquery-3.6.0.js"></script>
<script>
$('button').click(function () {
location.href = "FormServlet?username=ys&pass=555";
});
</script>
2,异步请求,通过ajax方式发出请求,设置请求类型:GET/POST
// getJSON() get() post() ajax()
//异步 不会发生页面跳转
$(':button').click(function () {
// $.get('FormServlet',{username:$('#username').val(),pass:$('#pass').val()},function () {
// //响应的时候
// })
$.ajax({
"url":"FormServlet",
"data":{
username:$('#username').val(),pass:$('#pass').val()},
"type":"get"
})
})
2.6 Servlet的体系结构和生命周期
2.6.1Servlet的"家谱"
自定义的Servlet是一个类,继承抽象父类: HttpServlet
Servlet中的方法:
方法名 | 含义 | 参数 |
---|---|---|
init() | Servlet初始化方法,初始化Servlet时会被tomcat容器自动调用 | 有带参数 |
service() | Servlet提供服务调用的方法,在每次被请求的时自动调用,判断请求的类型 | request response |
destory() | Servlet被销毁的时候,容器自动调用,需要清理垃圾,覆盖该方法 | 无参数 |
doGet() | 处理get请求,自动调用 | request response |
doPost() | 处理post请求,自动调用 | request response |
2.6.2Servlet的生命周期
从第一次请求Servlet > 容器创建对象(调用构造方法:1次) > 容器自动初始化 (调用init() 方法 1次) >调用服务方法 (service() n次)
service()方法请求类型GET POST DELETE > doGet() (n次) / doPost() (n次) > 容器关闭 (调用destroy() 1次 ,销毁Servlet对象)
代码:
package com.qf.web;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/LifeServlet")
public class LifeServlet extends HttpServlet {
public LifeServlet(){
System.out.println("servlet被创建了");
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//判断
System.out.println("service提供服务");
if(req.getMethod().equals("GET"<