JavaWeb技术栈:
B/S架构;Browser/server:浏览器/服务器架构模式
,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端,浏览器只需要请求服务器,获取Web资源,服务器把Web资源发送给浏览器即可
好处:易于维护升级:服务器升级后,客户端无需任何部署就可以使用到新版本
静态资源:HTML,CSS,JavaScript,图片等,负责页面展现 动态资源:Servlet,JSP等,负责逻辑处理 数据:负责存储数据 HTTP协议:定义通信规则 Web服务器:负责解析HTTP协议,解析请求数据,并发送响应数据
HTTP协议:
概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则
HTTP协议特点:
1:基于TCP协议:面向连接,安全
2:基于请求-响应模型的:一次请求对应一次响应
3:HTTP协议是无状态的协议:对于事务处理没有记忆能力,每次请求-响应都是独立的
缺点:多次请求不能共享数据 优点:速度快
HTTP–请求数据格式:
请求数据分为3部分:
1:请求行:请求数据的第一行,其中GET表示请求方式,/表示请求资源路径,HTTP/1.1表示协议版本 2:请求头:第二行开始,格式为:key:value形式 3:请求体:POST请求的最后一部分,存放请求参数
举例:
常见HTTP请求头:
GET请求和POST请求的区别:
1:GET请求请求参数在请求行中,没有请求体 POST请求请求参数在请求体中 2:GET请求请求参数大小有限制,POST没有
举例:
HTTP–响应数据格式:
响应数据分为3部分:
响应行:响应数据的第一行,其中HTTP/1.1表示协议版本,200表示响应状态码,OK表示状态码描述 响应头:第二行开始,格式为key:value形式 响应体:最后一部分,存放响应数据
常见的响应头:
常见的响应码:
常见的响应状态码:
Web服务器—Tomcat:
web服务器是一个应用程序(软件),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让web开发更加便捷,主要功能是"提供网上信息浏览服务"
概念:
Tomcat是Apache 软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范
JavaEE:
Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和,包含13项技术规范: JDBCJNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAFTomcat 也被称为 Web容器、Servlet容器,Servlet 需要依赖于 Tomcat才能运行
Tomcat的安装及使用:
由于TomCat是绿色软件,因此我们只需要将其解压到当前目录即可,解压完成后打开bin目录下的该文件
有很多的小伙伴在打开时,会遇到闪退问题[包括我也是],大家可通过这篇文章查看解决方法
如果打开该文件后显示如下内容,则证明你已启动成功啦!
但仔细看,我们会发现其中有很多乱码,是由于TomCat和JDK编码不一致所导致的!
解决TomCat中的乱码问题:
找到apache-tomcat-8.5.85文件中的conf目录,打开下述文件:
找到文件中的这行代码:
将其修改为如下所示:
修改完成后再次打开TomCat,乱码问题被解决
关于TomCat的关闭,有以下三种方式:
1:直接点击右上角的"×":这种方法是强制关闭,并不是我们推荐的,因为很多数据都来不及保存 2:bin\shutdown.bat:正常关闭:这种方法虽然可以正常关闭,但很麻烦,每次都要找到该目录,因此也不是最优选择 3:Ctrl+C:正常关闭,这种使我们最推荐的
修改TomCat端口号:
打开conf目录下的下述文件:
找到该行代码:
将8080修改为80,关闭并保存
HTTP协议默认端口号为80,如果将Tomcat端口号改为80,则将来访问TomCat时,将不用输入端口号
端口号的配置范围为 0-65535,但0-1024 基本都是系统配置,为了避免端口号冲突,我们应尽量不要用这些端口号去进行配置,此外还有一些特殊的端口号,例如:3306(数据库),8080(HTTP)这些端口号都属于特别容易发生冲突的,尽量不要去进行配置,可以自定义一些不是很特殊的端口号,例如:1982, 3456 等等
打开TomCat后,在浏览器输入如下:
TomCat—部署项目:
TomCat部署项目:将项目放置到webapps目录下,即部署完成
一般JavaWeb项目会被打包成war包,然后将war包放到webapps目录下,TomCat会自动解压war文件
IDE中创建Maven Web项目:
编译后的Java字节码文件和resources的资源文件,放到WEB-INF下的classes目录下
pom.xml中依赖坐标对应的jar包,放到WEB-INF下的lib目录下
创建Maven Web项目:
File-new-project:
等待加载成功即可,网络不好的小伙伴需要耐心等待哦
加载完成后是这个样子!
右击:
如果在打包的过程中出现下述这种错误:
解决方法为:在.xml文件中加入下述代码
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.1</version> </plugin> </plugins> </build>
再次打包,打包成功!
在IDE中使用Tomcat—集成本地Tomcat:
点击file—>settings:
下载插件
在pom.xml文件中添加下述代码:
<build> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> </plugin> </plugins> </build>
右击进入下述步骤,运行即可
右击:
显示如下:
为什么会出现个helloworld呢?
这实际是系统自动生成的,如下所示:
Servlet:
Servlet是Java提供的一门动态web资源开发技术
Servlet是JavaEE规范之一。其实就是一个接口,将来我们需要定义Servlet类实现Servlet接口,并由web服务器运行Servlet
public interface Servlet Defines methods that all servlet must implement A servlet is a small Java program that runs within a Web server
访问servlet:
创建web项目,导入servlet依赖坐标:
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency>
创建servlet类:实现servlet接口,并重写接口中的所有方法,并在service方法中输入一句话
import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException; //在类上使用@WebServlet注解,配置该servlet的访问路径 @WebServlet("/demo1") public class Myservlet implements Servlet { public void init(ServletConfig servletConfig) throws ServletException { } public ServletConfig getServletConfig() { return null; } public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { //最终会在控制台输出 System.out.println("hello"); } public String getServletInfo() { return null; } public void destroy() { } }
导入后,启动Tomcat,浏览器输入URL,访问该servlet