JavaWeb基础
概念:Java Web,是用Java技术来解决相关web互联网领域的技术栈。
web分为静态web和动态web,静态web包括css和html这种,设定后就不会变了,动态简单理解就是数据会随时改变,比如淘宝,每个人在不同时间不同地点看到的信息是不一向的,对于java来讲,动态web资源开发技术就统称为javaweb。
tomcat详解
下载就不用说了,直接去官网下载就行
-
tomcat文件夹作用
- bin文件里面是 启动 关闭的脚本文件(startup.bat就是启动文件,启动后就可以通过http://localhost:8080/ 进入)
- conf文件里面是 配置文件
- lib文件里面是依赖的jar包
- logs里面是日志
- webapps文件里面是存放网站的
-
tomcat配置文件详解
下图这个文件就是写配置的
其中可以改端口号(比如8080改成8081),修改相应的端口号是可以进入的
但是直接改host中的name(或者说,这里就是更改主机名称),就不能进入
详解:
其实就是因为没有解析,在C:\Windows\System32\drivers\etc 这个路径下有个hosts文件
在127.0.0.1 localhost这里看的出来localhost对应的是什么,新加一行127.0.0.1 xxx,xxx,xx(你想要的名字)就可以更改Host中的name了,这个 name就是你刚更改的名字
HTTP
HTTP概念: 超文本传输协议是一个简单的请求-响应协议,它通常运行在TCP之上。
端口号是80
超文本就包括图片,声音,视频,定位等
HTTPS是安全的,端口号是443
关于http请求
用访问百度举例,一次请求可以得到的信息总结如下
Request URL:https//www.baidu.com/ 请求地址
Request Method: get/post 包含gat方法和post方法
status Code:200 0K 状态码: 200
Remote (远程) Address:14.215.177.39 :443 地址
Accept:text/html
Accept-Encoding:gzip,deflate,br 编码方式
Accept-Language:zh-CN,zh;g=0.9 语言
Icache-Control:max-age=0
Connection :keep-aTive
请求行中的请求方式:GET
请求方式包括:Get,Post,HEAD,DELETE,PUT,TRACT等
- get: 请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效
- post: 请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全但不高效。
消息头信息
Accept:告诉浏览器它所支持的数据类型
Accept-Encoding:支持的编码格式
Accept-Language:浏览器的语言环境
Icache-Control:缓存控制
Connection :连接状态,即是否还是保持连接
HOST:主机,,,
关于HTTP响应
一次服务器响应可以得到的信息总结如下
Cache-Control:private 缓存控制
Connection:Keep-ATive 连接
Content-Encoding:gzip 编码
Content-Type:text/html 类型
响应体
Accept:告诉浏览器它所支持的数据类型
Accept-Encoding:支持的编码格式
Accept-Language:浏览器的语言环境
Icache-Control:缓存控制
Connection :连接状态,即是否还是保持连接
HOST:主机,,,
Refresh: 告诉客户端,多久刷新一次;
Location; 让网页重新定位;
响应状态码
- 200:响应成功
- 3**:重定向
- 重定向:到指定的新位置
- 4xx::找不到资源
- 404:资源不存在
- 5xx:服务器代码错误
- 502:网关错误
Maven
本体下载安装
(成功后在cmd中用MAVEN -version测试就行)
- 官网下载zip文件
- 解压后需要配置环境变量如下
- M2_HOME(新建) MAVEN下的bin目录
- MAVEN_HOME(新建) MAVEN的目录
- PATH(系统自带) %MAVEN_HOME%\bin
配置阿里云镜像
镜像:mirros
作用:加速下载
建议:使用阿里云镜像,百度都有,设置在maven的conf文件夹的setting文件的mirros 配置中
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>
<name>Nexus aliyun</name>
<url>https://maven.aliyun.com/nexus/content/groups/public </url>
</mirror>
配置本地仓库
有本地仓库和远程仓库,我们需要建立一个本地仓库localRepository
maven的setting文件中,有注释掉的localRepository的相关配置,可以自己加地址,在maven的安装目录(bin同级的目录)下加一个maven-repo文件夹,然后把这个地址复制进去就行,如下
<localRepository>E:\environment\maven\apache-maven-3.9.4-bin\apache-maven-3.9.4\maven-repo</localRepository>
在IEDA中启动maven
-
首先单独创建一个maven项目(很简单就不演示了)
创建成功后,要去setting中看一眼maven配置,是否和自己设置的一样或者设置其他的配置
-
点击右上角bug调试和运行嘴边的那个地方,创建tomcat
创建成功后点击运行启动
IDEA中maven的POM文件相关
pom.xml是Maven的核心配置文件
使用一个用模板创建的maven项目的pom.xml文件举例
<?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>
<!--这里就是自己配置的GAV-->
<groupId>com.axu</groupId>
<artifactId>javaweb-01-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<!--项目的打包方式-->
<packaging>war</packaging>
<name>javaweb-01-maven 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>
<!-- 项目依赖 -->
<dependencies>
<!-- 具体依赖的jar包配置文件 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<!-- 下面是自己百度的spring的东西 -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
</dependencies>
<!-- 项目构建所需 -->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
但是使用模板有个问题是,约定大于配置,所以我们自己修改或者写的配置文件可能无法导出或者生效。
解决方案:配置resources 在pom中加入以下配置 (将上面的bulid中的东西替换,而且build中的文件本来就可以不要)
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
其他问题
如果不想每次建maven都要重新设置的话,就在File->New Projects Settings-> Settings for New Projects->Maven中设置一些通用设置,如图
Servlet
定义
- Servlet就是sun公司开发动态web的一门技术
- Sun在这些API中提供一个接口叫做: Servlet,如果你想开发一个Servlet程序,只需要完成两个步骤:
- 编写一个类,实现Servlet接口
- 把开发好的lava类部署到web服务器中
把实现了Servlet接口的Java程序叫做,Servlet
新建项目需要注意的问题
也是建立maven项目,需要注意的事项和之前一样,但是maven项目自带的web.xml文件要更改,改成tomcat中的web.xml的内容(为了使tomcat一定运行起来)
更改前如下
更改后如下
将一些不必要的内容和注释删除之后,留下的如下
<?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"
metadata-complete="true">
</web-app>
一个很重要的点!!!!!!!!
如果新建项目没有iml文件的话,是会出问题的,用cmd进入当前项目的根目录,然后输入以下命令就可以有新的iml文件了
mvnidea:module
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"
metadata-complete="true">
</web-app>
一个新的servlet项目的构建过程
- 构建一个普通的Maven项目,删掉里面的src目录,以后我们的学习就在这个项目里面建立Moudel; 这个空的工程就是Maven主工程,然后用模板再建立一个MAVEN项目,这个maven就是子工程的maven;
- 关于Maven父子工程的理解:
父项目中会有
<modules>
<module>servlet-01</module>
</modules>
子项目中会有(没有的话可以手动添加)
<parent>
<groupId>com.axu</groupId>
<artifactId>javaweb-03-servlet</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
以上即java中的继承关系
-
MAVEN环境优化
- 修改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" metadata-complete="true"> </web-app>
- 将maven结构搭建完整,即添加java文件夹和resources文化夹
-
开始编写一个servlet的class文件(重点就是继承HttpServlet接口)
-
编写一个普通类
-
继承HttpServlet接口
-
重写doGet和doPost方法
public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //super.doGet(req, resp); PrintWriter writer = resp.getWriter(); writer.println("Hello Servlet"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doPost(req, resp); } }
-
-
在web.xml中编写servlet映射
为什么需要映射: 我们写的是AVA程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要再web服务中注册我们写的Servlet,还需给他一个浏览器能够访问的路径;
所以完整的web.xml如下(url-pattern里面一定要加/)
<?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" metadata-complete="true"> <servlet> <servlet-name>Hello</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/Hello</url-pattern> </servlet-mapping> </web-app>
以下是解析版本
<?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" metadata-complete="true"> <!--web.xml是配置web的核心应用--> <!--注册servlet--> <servlet> <servlet-name>HelloServlet</servlet-name> <!--servlet-class是对应的class类--> <servlet-class>com.axu.servlet.HelloServlet</servlet-class> </servlet> <!--一个servlet对应一个映射。即mapping--> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <!--下面这个是访问路径--> <url-pattern>/axu</url-pattern> </servlet-mapping> </web-app>
-
配置Tomcat
注意:配置项目发布的路径就可以了
以上配置结束后就可以测试了
标签:xml,web,JavaWeb,文件,基础,Accept,maven,Servlet From: https://www.cnblogs.com/LazyJay/p/17712895.html