目录
一、基础知识
1、概念
JavaWeb方面的知识在整个JavaEE方向的学习中起着承上启下的作用,在JavaWeb中将学习跟web开发相关的技术:html、css、javascript、tomcat、servlet、JSP、jdbc、mysql等等,在实际企业开发中,有些小项目会直接使用这些技术来完成,说的简单一些,其实JavaWeb的学习就是教大家如何做一个动态的网站
2、软件架构
(1)C/S架构:客户端/服务----QQ , Typora ,腾讯会议。
(2)B/S架构: 浏览器/服务器----京东,爱奇艺, B站。
3、资源分类
(1)静态资源:所有用户访问后,得到的结果都是一样的。( HTML. CSS,JS,图片,音频,视频..)
(2)动态资源:每个用户访问相同的资源,得到的结果可能不一样。动态资源被访问后,需要先转换为静态资源,再返回给浏览器,通过浏览器来进行解析。
二、常见的web服务器
1、概念
(1)服务器:安装了服务器软件的计算机。
(2)服务器软件:接收用户的请求,处理请求,给出响应。【 接请求,给响应】
(3)web服务器软件:接收用户的请求,处理请求,给出响应。【在web服务器软件中,可以部署web项目,让用户通过浏览器访问这些项目。】
2、常见的服务器软件
(1)动态服务器
●webLogic : oracle公司出品,大型的web服务器,几乎支持了所有的avaEE规范,收费的。
●webSphere : IBM公司,大型的web服务器,几乎支持了所有的avaEE规范,收费的。
●JBOSS : JBOSS公司,中型的JavaEE服务器,几乎支持了所有的JavaEE规范,收费的。
●Tomcat : Apache基金会,中小型的web服务器,支持了少量的JavaEE规范,开源免费。(2)静态服务器
●Nginx(代理,反向代理,动静分.离.. )极高的并发
●Apache
三、 Tomcat
下载apache-tomcat文件,可去官网下载。
1、apache-tomcat文件中的内容及作用
bin 存放一些批处理脚本文件,可执行文件。 conf 用来存放tomcat的相关配置文件。 lib Tomcat依赖的jar包。 logs 存放日志。 temp 临时文件目录。 webapps Tomcat默认的Web应用部署目录。 work Web应用JSP代码生成和遍历的临时目录。
2、测试Tomcat
相关知识点链接:测试Tomcat
(1)Tomcat的启动
双击bin/startup. bat文件
(2)Tomcat的停止
双击bin/shutdown. bat文件
(3)访问
http://127.0.0.1:8080或者localhost:8080
3、***IDEA整合tomcat步骤***
(1)创建一个普通的Java工程
(2)点击settings--->project structure
(3)点击Moduls,点击+号,选择web,点击OK
创建web还有一种方法
(4)点击idea运行处的Edit Configurations
(5)再点击左上角的+号,在列表中选择tomcat server下的,
注意,不要选择TomEE Server
。
(6)点击右侧的Configure,配置Tomcat的本地路径。
路径到Tomcat根目录就可以
。点击ok。
(7)点击settings--->project structure【和②步骤一样】
(8)点击Artifacts,点击+号,选择web Application Exploded:From
(9)修改output directory为tomcat下的webapps,点击OK
(10)点击idea运行处的Edit Configurations,点击Deployment选项卡,点击+号,选择Artifact,自动添加了。
(11)回到Server选项卡,可以修改端口号以及服务器的两个配置改为update classes and resources。
(12)在web目录下新建HTML文件,点击启动服务器,通过
http://localhost:8888/JavaWEB20220829/index.html
地址来访问自己的项目。
四、Servlet
1、任务
(1)Servlet就是一个普通的Java类而已。
(2)处理请求,给出响应的类。2、创建Sevlet
(1)实现javax. servlet . Servlet接口
(2)继承javax. servlet . GenericServlet类
(3)继承javax. servlet .http . HttpServlet类
我们在开发中一般会使用第三种方法来创建Servlet.我们需要导包,去Tomcat中找到lib,复制servlet-api.jar。
然后在WEB-INF中创建文件夹lib,将servlet-api.jar粘贴到lib中
![]()
记得把lib中的库添加上。
之后我们就可以继承类了,继承之后。HttpServlet方法父类中已经给我们准备好了,我们就进行方法重写就可以。
package com.jsoft.morning.servlet; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.IOException; @WebServlet() public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理get请求 System.out.println("doget方法"); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("topost方法"); } }
3、***Servlet生命周期***
(1)初始化---init方法。
(2)实例化---构造器。
(3)调用service方法,处理请求。
(4)销毁--destory方法。4、Servlet的配置----注册servlet
注册servlet的两种方式,不能同时用,会出错。现在大部分都是用注解的方法。
(1)web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>hello</servlet-name> <servlet-class>com.jsoft.morning.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello.do</url-pattern> </servlet-mapping> </web-app>
(2)注解
在servlet文件中加个注解
package com.jsoft.morning.servlet; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.IOException; @WebServlet("/hello.do")//注解 public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理get请求 System.out.println("doget方法"); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("topost方法"); } }
5、最终结果---实现java前后端交互
前端html文件内容:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <a href="hello.do">get请求</a> <h1>太难了……</h1> </body> </html>
(1)后端控制台结果
(2)前端结果显示
五、get和post的区别面试:
1、url可见性:
get,参数url可见;
post,url参数不可见
2、数据传输上:
get,通过拼接url进行传递参数;
post,通过body体传输参数
3、缓存性:
get请求是可以缓存的
post请求不可以缓存
4、后退页面的反应
get请求页面后退时,不产生影响
post请求页面后退时,会重新提交请求
5、传输数据的大小
get一般传输数据大小不超过2k-4k(根据浏览器不同,限制不一样,但相差不大)
post请求传输数据的大小根据php.ini 配置文件设定,也可以无限大。
6、安全性
这个也是最不好分析的,原则上post肯定要比get安全,毕竟传输参数时url不可见,但也挡不住部分人闲的没事在那抓包玩。安全性个人觉得是没多大区别的,防君子不防小人就是这个道理。对传递的参数进行加密,其实都一样