济源建设工程管理处网站,网站付费推广有哪些,网站建设方案范本,云南网络科技公司排名JavaWeb
Java Web
1、基本概念
1.1、前言
web开发#xff1a;
web#xff0c;网页的意思 #xff0c; www.baidu.com静态web html#xff0c;css提供给所有人看的数据始终不会发生变化#xff01; 动态web 淘宝#xff0c;几乎是所有的网站#xff1b;提供给所有人…JavaWeb
Java Web
1、基本概念
1.1、前言
web开发
web网页的意思 www.baidu.com静态web htmlcss提供给所有人看的数据始终不会发生变化 动态web 淘宝几乎是所有的网站提供给所有人看的数据始终会发生变化每个人在不同的时间不同的地点看到的信息各不相同技术栈Servlet/JSPASPPHP
在Java中动态web资源开发的技术统称为JavaWeb
1.2、web应用程序
web应用程序可以提供浏览器访问的程序
a.html、b.html…多个web资源这些web资源可以被外界访问对外界提供服务你们能访问到的任何一个页面或者资源都存在于这个世界的某一个角落的计算机上。 URL
这个统一的web资源会被放在同一个文件夹下web应用程序–Tomcat服务器一个web应用由多部分组成 静态web动态web htmlcssjsjspservletJava程序jar包配置文件 Properties
web应用程序编写完毕后若想提供给外界访问需要一个服务器来统一管理
1.3、静态web *.htm, *.html,这些都是网页的后缀如果服务器上一直存在这些东西我们就可以直接进行读取。通络 静态web存在的缺点 Web页面无法动态更新所有用户看到都是同一个页面 轮播图点击特效伪动态JavaScript [实际开发中它用的最多]VBScript 它无法和数据库交互数据无法持久化用户无法交互 它无法和数据库交互数据无法持久化用户无法交互
1.4、动态web
页面会动态展示 “Web的页面展示的效果因人而异”
缺点
加入服务器的动态web资源出现了错误我们需要重新编写我们的后台程序,重新发布 停机维护
优点
Web页面可以动态更新所有用户看到都不是同一个页面它可以与数据库交互 数据持久化注册商品信息用户信息… 新手村–魔鬼训练分析原理看源码– PK场
2、web服务器
2.1、技术讲解
ASP: 微软国内最早流行的就是ASP 在HTML中嵌入了VB的脚本 ASP COM 在ASP开发中基本一个页面都有几千行的业务代码页面极其换乱 维护成本高 C# IIS 点击查看代码
h1h1h1h1h1h1h1%System.out.println(hello)%h1h1h1h1
h1**php**
PHP开发速度很快功能很强大跨平台代码很简单 70% , WP无法承载大访问量的情况局限性
**JSP/Servlet : **
B/S浏览和服务器
C/S: 客户端和服务器
sun公司主推的B/S架构基于Java语言的 (所有的大公司或者一些开源的组件都是用Java写的)可以承载三高问题带来的影响语法像ASP ASP–JSP , 加强市场强度
2.2、web服务器
服务器是一种被动的操作用来处理用户的一些请求和给用户一些响应信息
IIS
微软的 ASP…,Windows中自带的
Tomcat 面向百度编程
Tomcat是Apache 软件基金会Apache Software Foundation的Jakarta 项目中的一个核心项目最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现因为Tomcat 技术先进、性能稳定而且免费因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可成为目前比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器属于轻量级应用服务器在中小型系统和并发访问用户不是很多的场合下被普遍使用是开发和调试JSP 程序的首选。对于一个Java初学web的人来说它是最佳的选择
Tomcat 实际上运行JSP 页面和Servlet。Tomcat最新版本为9.0。
…
工作3-5年之后可以尝试手写Tomcat服务器
下载tomcat
安装 or 解压了解配置文件及目录结构这个东西的作用
3、Tomcat
3.1、 安装tomcat
tomcat官网http://tomcat.apache.org/
3.2、Tomcat启动和配置
文件夹作用 启动。关闭Tomcat 访问测试http://localhost:8080/
可能遇到的问题
Java环境变量没有配置闪退问题需要配置兼容性乱码问题配置文件中设置
3.3、配置 可以配置启动的端口号
tomcat的默认端口号为8080mysql3306http80https443 点击查看代码
Connector port8081 protocolHTTP/1.1connectionTimeout20000redirectPort8443 /可以配置主机的名称
默认的主机名为localhost-127.0.0.1默认网站应用存放的位置为webapps 点击查看代码 Host namewww.MrSun.com appBasewebappsunpackWARstrue autoDeploytrue#### 高难度面试题
请你谈谈网站是如何进行访问的 输入一个域名回车 检查本机的 C:\Windows\System32\drivers\etc\hosts配置文件下有没有这个域名映射 有直接返回对应的ip地址这个地址中有我们需要访问的web程序可以直接访问 127.0.0.1 www.syb.com 没有去DNS服务器找找到的话就返回找不到就返回找不到 3.可以配置一下环境变量可选性
3.4、发布一个web网站
不会就先模仿
将自己写的网站放到服务器(Tomcat)中指定的web应用的文件夹webapps下就可以访问了
网站应该有的结构 点击查看代码
--webapps Tomcat服务器的web目录-ROOT-study 网站的目录名- WEB-INF-classes : java程序-libweb应用所依赖的jar包-web.xml 网站配置文件- index.html 默认的首页- static -css-style.css-js-img-.....HTTP协议 面试
Maven构建工具
Maven安装包
Servlet 入门
HelloWorldServlet配置原理
4、Http
4.1、什么是HTTP
HTTP超文本传输协议是一个简单的请求-响应协议它通常运行在TCP之上。
文本html字符串~ ….超文本图片音乐视频定位地图…….80
Https安全的
443
4.2、两个时代 http1.0 HTTP/1.0客户端可以与web服务器连接后只能获得一个web资源断开连接 http2.0 HTTP/1.1客户端可以与web服务器连接后可以获得多个web资源。‘
4.3、Http请求
客户端—发请求Request—服务器
百度 点击查看代码
Request URL:https://www.baidu.com/ 请求地址
Request Method:GET get方法/post方法
Status Code:200 OK 状态码200
Remote远程 Address:14.215.177.39:443点击查看代码
Accept:text/html
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q0.9 语言
Cache-Control:max-age0
Connection:keep-alive#### 1、请求行
请求行中的请求方式GET请求方式GetPostHEAD,DELETE,PUT,TRACT… get请求能够携带的参数比较少大小有限制会在浏览器的URL地址栏显示数据内容不安全但高效post请求能够携带的参数没有限制大小没有限制不会在浏览器的URL地址栏显示数据内容安全但不高效。
2、消息头 点击查看代码
Accept告诉浏览器它所支持的数据类型
Accept-Encoding支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-Language告诉浏览器它的语言环境
Cache-Control缓存控制
Connection告诉浏览器请求完成是断开还是保持连接
HOST主机..../.4.4、Http响应
服务器—响应-----客户端
百度 点击查看代码
Cache-Control:private 缓存控制
Connection:Keep-Alive 连接
Content-Encoding:gzip 编码
Content-Type:text/html 类型1.响应体 点击查看代码
Accept告诉浏览器它所支持的数据类型
Accept-Encoding支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-Language告诉浏览器它的语言环境
Cache-Control缓存控制
Connection告诉浏览器请求完成是断开还是保持连接
HOST主机..../.
Refresh告诉客户端多久刷新一次
Location让网页重新定位2、响应状态码
200请求响应成功 200
3xx请求重定向
重定向你重新到我给你新位置去
4xx找不到资源 404
资源不存在
5xx服务器代码错误 500 502:网关错误
常见面试题
当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来经历了什么
5、Maven
我为什么要学习这个技术 在Javaweb开发中需要使用大量的jar包我们手动去导入 如何能够让一个东西自动帮我导入和配置这个jar包。 由此Maven诞生了
5.1 Maven项目架构管理工具
我们目前用来就是方便导入jar包的
Maven的核心思想约定大于配置
有约束不要去违反。
Maven会规定好你该如何去编写我们的Java代码必须要按照这个规范来
5.2 下载安装Maven
官网;https://maven.apache.org/ 下载完成后解压即可
友情建议电脑上的所有环境都放在一个文件夹下方便管理
5.3 配置环境变量
在我们的系统环境变量中
配置如下配置
M2_HOME maven目录下的bin目录MAVEN_HOME maven的目录在系统的path中配置 %MAVEN_HOME%\bin 测试Maven是否安装成功保证必须配置完毕 镜像mirrors 作用加速我们的下载 国内建议使用阿里云的镜像 点击查看代码
mirroridnexus-aliyun/id mirrorOf*,!jeecg,!jeecg-snapshots/mirrorOf nameNexus aliyun/name urlhttp://maven.aliyun.com/nexus/content/groups/public/url
/mirror### 5.5 本地仓库
在本地的仓库远程仓库
**建立一个本地仓库**localRepository localRepositoryD:\Environment\apache-maven-3.6.2\maven-repo/localRepository
5.6、在IDEA中使用Maven 启动IDEA 创建一个MavenWeb项目 3.等待项目初始化完毕
观察maven仓库中多了什么东西
5 IDEA中的Maven设置
注意IDEA项目创建成功后看一眼Maven的配置 6.1. 到这里Maven在IDEA中的配置和使用就OK了!
5.7、创建一个普通的Maven项目 这个只有在Web应用下才会有
5.8 标记文件夹功能 5.9 在 IDEA中配置Tomcat 解决警告问题
必须要的配置为什么会有这个问题我们访问一个网站需要指定一个文件夹名字
5.10 pom文件
pom.xml 是Maven的核心配置文件 !--Maven版本和头文件--
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersion!--这里就是我们刚才配置的GAV--groupIdcom.kuang/groupIdartifactIdjavaweb-01-maven/artifactIdversion1.0-SNAPSHOT/version!--Package项目的打包方式jarjava应用warJavaWeb应用--packagingwar/packaging!--配置--properties!--项目的默认构建编码--project.build.sourceEncodingUTF-8/project.build.sourceEncoding!--编码版本--maven.compiler.source1.8/maven.compiler.sourcemaven.compiler.target1.8/maven.compiler.target/properties!--项目依赖--dependencies!--具体依赖的jar包配置文件--dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.11/version/dependency/dependencies!--项目构建用的东西--buildfinalNamejavaweb-01-maven/finalNamepluginManagement!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --pluginspluginartifactIdmaven-clean-plugin/artifactIdversion3.1.0/version/plugin!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --pluginartifactIdmaven-resources-plugin/artifactIdversion3.0.2/version/pluginpluginartifactIdmaven-compiler-plugin/artifactIdversion3.8.0/version/pluginpluginartifactIdmaven-surefire-plugin/artifactIdversion2.22.1/version/pluginpluginartifactIdmaven-war-plugin/artifactIdversion3.2.2/version/pluginpluginartifactIdmaven-install-plugin/artifactIdversion2.5.2/version/pluginpluginartifactIdmaven-deploy-plugin/artifactIdversion2.8.2/version/plugin/plugins/pluginManagement/build
/project maven由于他的约定大于配置我们之后可以能遇到我们写的配置文件无法被导出或者生效的问题解决方案
buildresourcesresourcedirectorysrc/main/resources/directoryincludesinclude**/*.properties/includeinclude**/*.xml/include/includesfilteringtrue/filtering/resourceresourcedirectorysrc/main/java/directoryincludesinclude**/*.properties/includeinclude**/*.xml/include/includesfilteringtrue/filtering/resource/resources
/build5.12 IDEA操作 5.13 解决遇到的问题 Maven 3.6.2 解决方法降级为3.6.1 Tomcat闪退 IDEA中每次都要重复配置Maven 在IDEA中的全局默认配置中去配置 4… Maven项目中Tomcat无法配置 maven默认web项目中的web.xml版本问题 6.替换为webapp4.0版本和tomcat一致
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0metadata-completetrue/web-app7.Maven仓库的使用 地址https://mvnrepository.com/
6、Servlet
6.1、Servlet简介
Servlet就是sun公司开发动态web的一门技术Sun在这些API中提供一个接口叫做Servlet如果你想开发一个Servlet程序只需要完成两个小步骤 编写一个类实现Servlet接口把开发好的Java类部署到web服务器中。
把实现了Servlet接口的Java程序叫做Servlet
6.2、HelloServlet
Serlvet接口Sun公司有两个默认的实现类HttpServletGenericServlet 构建一个普通的Maven项目删掉里面的src目录以后我们的学习就在这个项目里面建立Moudel这个空的工程就是Maven主工程 关于Maven父子工程的理解 父项目中会有 moduleservlet-01/module/modules子项目会有 artifactIdjavaweb-02-servlet/artifactIdgroupIdcom.son/groupIdversion1.0-SNAPSHOT/version/parent父项目中的java子项目可以直接使用
son extends fatherMaven环境优化 修改web.xml为最新的将maven的结构搭建完整 编写一个Servlet程序 编写一个普通类 实现Servlet接口这里我们直接继承HttpServlet
public class HelloServlet extends HttpServlet {//由于get或者post只是请求实现的不同的方式可以相互调用业务逻辑都一样Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//ServletOutputStream outputStream resp.getOutputStream();PrintWriter writer resp.getWriter(); //响应流writer.print(Hello,Serlvet);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
5.编写Servlet的映射
为什么需要映射我们写的是JAVA程序但是要通过浏览器访问而浏览器需要连接web服务器所以我们需要再web服务中注册我们写的Servlet还需给他一个浏览器能够访问的路径
!--注册Servlet--servletservlet-namehello/servlet-nameservlet-classcom.kuang.servlet.HelloServlet/servlet-class/servlet!--Servlet的请求路径--servlet-mappingservlet-namehello/servlet-nameurl-pattern/hello/url-pattern/servlet-mapping配置Tomcat 注意配置项目发布的路径就可以了 启动测试OK
6.3、Servlet原理
Servlet是由Web服务器调用web服务器在收到浏览器请求之后会 6.4、Mapping问题
一个Servlet可以指定一个映射路径
servlet-mappingservlet-namehello/servlet-nameurl-pattern/hello/url-pattern/servlet-mapping2.一个Servlet可以指定多个映射路径 servlet-mappingservlet-namehello/servlet-nameurl-pattern/hello/url-pattern/servlet-mappingservlet-mappingservlet-namehello/servlet-nameurl-pattern/hello2/url-pattern/servlet-mappingservlet-mappingservlet-namehello/servlet-nameurl-pattern/hello3/url-pattern/servlet-mappingservlet-mappingservlet-namehello/servlet-nameurl-pattern/hello4/url-pattern/servlet-mappingservlet-mappingservlet-namehello/servlet-nameurl-pattern/hello5/url-pattern/servlet-mapping3.一个Servlet可以指定通用映射路径
servlet-mappingservlet-namehello/servlet-nameurl-pattern/hello/*/url-pattern/servlet-mapping4.默认请求路径 !--默认请求路径--servlet-mappingservlet-namehello/servlet-nameurl-pattern/*/url-pattern/servlet-mapping5.指定一些后缀或者前缀等等…. !--可以自定义后缀实现请求映射注意点*前面不能加项目映射的路径--
servlet-mappingservlet-namehello/servlet-nameurl-pattern*.xiaowang/url-pattern
/servlet-mapping6.优先级问题 指定了固有的映射路径优先级最高如果找不到就会走默认的处理请求
!--404--
servlet servlet-nameerror/servlet-name servlet-classcom.kuang.servlet.ErrorServlet/servlet-class
/servlet
servlet-mapping
servlet-nameerror/servlet-name url-pattern/*/url-pattern
/servlet-mapping6.5、ServletContext
web容器在启动的时候它会为每个web程序都创建一个对应的ServletContext对象它代表了当前的web应用
1、共享数据
我在这个Servlet中保存的数据可以在另外一个servlet中拿到
public class HelloServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//this.getInitParameter() 初始化参数//this.getServletConfig() Servlet配置//this.getServletContext() Servlet上下文ServletContext context this.getServletContext();String username 小王; //数据context.setAttribute(username,username); //将一个数据保存在了ServletContext中名字为username 。值 username}}
public class GetServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext context this.getServletContext();String username (String) context.getAttribute(username);resp.setContentType(text/html);resp.setCharacterEncoding(utf-8);resp.getWriter().print(名字username);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
servletservlet-namehello/servlet-nameservlet-classcom.wang.servlet.HelloServlet/servlet-class/servletservlet-mappingservlet-namehello/servlet-nameurl-pattern/hello/url-pattern/servlet-mappingservletservlet-namegetc/servlet-nameservlet-classcom.wang.servlet.GetServlet/servlet-class/servletservlet-mappingservlet-namegetc/servlet-nameurl-pattern/getc/url-pattern/servlet-mapping
测试访问结果 2、获取初始化参数