JavaWeb准备工作和部分环境配置
JavaWeb
基本概念
web开发:
-
web:网页的意思
-
静态web:提供的数据资源不会发生改变
-
动态web:数据是不断变化的,现代网站几乎都是动态网站技术栈: Servlet/JSP:基于java,主推B/S架构,可以
承载高并发,语法类似ASP
ASP:微软,国内早期流行。在html中嵌入VB脚本, c#
PHP:开发速度快,功能强大,但是无法承载大访问量的情况
在java中动态web资源开发的技术统称JavaWeb
web应用程序:
-
可以提供浏览器访问的程序,多个web资源例如a.html ,这些资源可以被外界访问,对外界提供服务,这些统一的web资源会被放在同一个文件夹下,组成web应用程序
-
web应用程序若想提供给外界访问需要一个的服务器来统一
Web服务器
处理用户请求和返回响应
包括:
- IIS:微软,ASP,windows中自带
- Tomcat:Apache项目,技术先进,稳定且免费,属于轻量级应用服务器,实际上运行JSP和Servlet。对于初学者它是首选。
- 等
Tomcat
之后我们将使用Tomcat进行学习,具体按照教程可以自行百度
下载好后自行配置相关环境变量
Tomcat安装包配置文件介绍:
启动:bin中的startup.bar
关闭:bin中的shutdown.bar
服务器核心配置文件(更改端口默认8080,主机名默认locahost等):conf/server.xmf
如更改端口(找到下面):
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxParameterCount="1000"
/>
浏览器主页面文件:webapps/ROOT
如何访问到网站
- 输入域名
- 检测本机下面的C:\Windows\System32\drivers\etc\hosts下面的配置文件有没有相关域名的映射(如127.0.0.1 localhost),如果本机有直接访问
- 如果没有去DNS服务器寻找
发布的第一个web文件
进入webapps创建一个自己的网站文件夹
保留相关配置文件(WEB-INF文件夹/classes:java程序和lib:配置文件和web.xml网站配置文件)同时编写自己的web界面
因为localhost:8080是webapps文件夹,加上自己创建文件夹的路径即可(index.html可以省略)
另外localhost:8080/examples 是官方给与的相关例子
在IDEA配置Tomcat
点击fix清除警告
添加tomcat中webapps中需要使用的相关的网站
之后点击运行
http
HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
文本:由可打印字符组成,人可以直接阅读和理解其形式。 记事本文件
超文本:除了文本文件外如视频,音频,html等
- 默认端口80
- https:安全的,端口443
请求
常规
请求 URL:
https://img-s.msn.cn/tenant/amp/entityid/BB14xOMT?w=20&h=0&q=60&m=6&f=png&u=t
请求方法:
GET
状态代码:
200 成功
3** 请求重定向(让你去找别人)
4** 找不到资源
5** 服务器代码错误 例如502网关错误
远程地址:
184.26.43.88:443
引用者策略:
strict-origin-when-cross-origin
-
请求行:
- 请求
- 请求方式:get,post等
- get:请求能够携带的参数比较少,大小有限制,会在浏览器URL地址栏显示数据内容,高效但不安全
- post:请求能够携带的参数没有限制,大小没有限制,安全但不高效
-
请求头
Accept:*/* 告诉浏览器支持的内容 Accept-Encoding:gzip, deflate, br 告诉浏览器支持的编码 Accept-Language:zh-CN,zh;q=0.9 支持的语言环境 Cache-Control: 缓存控制 Connection:keep-alive 告诉浏览器请求完成是断开还是保持连接 Content-Length:7903 Content-Type:text/plain;charset=UTF-8 Cookie:USRLOC=; _EDGE_V=1; Refrush: 告诉客户端多久刷新一次 Location:让网页重新定位
响应
Access-Control-Allow-Origin:* 缓存控制
Connection:keep-alive 连接
Content-Type:image/png 类型
Content-Encoding:gzip 编码
Maven
- 一个项目架构管理工具
- 用来方便导入jar包
- Maven核心思想:约定大于配置,即有约束不要去违反
自行百度下载Maven – Welcome to Apache Maven
- 为其配置环境变量:
- M2_HOME:maven目录下的bin目录
- MAVEN_HOME:maven目录
- 系统path中配置指向bin目录
mvn -version查看是否安装成功
- 配置阿里云镜像:复制下面一段到conf/setting.xml中的
中
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun-maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
-
建立本地仓库:新建一个文件夹作为仓库,并且到setting.xml中相应位置配置如下
IDEA使用Maven
创建一个maven web项目
另外默认的为idea自带的maven
之后等待构建导入完成
- idea中设置maven相关配置
创建一个普通的maven项目
直接点下一步不选或者勾选任何东西创建一个普通maven项目
结构:
标记文件夹功能
注意在idea配置maven项目过程中会出现导入错误,搞了半天我才发现因为idea不兼容该版本的maven,换成低版本解决
pom文件
pom.xml是maven的核心文件
具体内容介绍:
<?xml version="1.0" encoding="UTF-8"?>
<!--Maven版本和头文件-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--这是刚才项目选项的相关-->
<groupId>org.example</groupId>
<artifactId>Maven2</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 项目的打包方式
jar:java应用
war:javaWeb应用
-->
<packaging>war</packaging>
<!--名称-->
<name>Maven2 Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<!--配置-->
<properties>
<!-- 默认编码-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 编译版本-->
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<!--项目依赖,以后可以在这里导入依赖,maven还会自动导入这个jar包所依赖的其他jar包-->
<dependencies>
<!-- 具体依赖的jar包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
</dependencies>
<!--项目构建相关-->
<build>
</build>
另外由于maven的约束,自己写的噢诶这文件很有可能不能导出这就需要:
<!--在build中配置resources,来防止我们资源导出失败的问题-->
<build>
<resources>
<!--选择需要导出资源的路径,可以选择多个-->
<resource>
<directory>src/main/resources</directory>
<!--写入需要导出的什么类型的文件-->
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!--不去过滤这些文件-->
<filtering>false</filtering>
</resource>
</resources>
</build>
idea可以生成目录树: