概述
Maven:专家、内行
groupId:定义了项目属于那个组,这个组往往和项目所在的位置和公司相关联
artifactId:定义了当前maven项目在组中的唯一ID(项目名).
version:版本
下载地址:
http://maven.apache.org/download.html
jdk版本需要11及以上
解压后要去系统变量中配置MAVEN_HOME,这个值就是你安装maven的地址,然后就去pass中添加一个%MAVEN_HOMEbin
打开dos窗口(wir+r)输入mvn -v,如果出来一大堆,那就好了
创建一个文件夹作为项目的根目录:
pom.xml
<?xml version="1.0" encoding="utf-8"?>
<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>com.yjxxt</groupId>
<artifactId>maven01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>maven01</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
然后编译主函数:mvn compile,如果你创建的Java文件已经编译,则编译成功,没成功则需要回去忙活,执行main方法:
mvn exec:java -Dexec.mainClass="com.yjxxt.demo.Hello"
出现BUILD SUCCESS则完成
1.1.
修改默认仓库位置
打开
maven
目录
-> conf -> settings.xml
添加仓库位置配置
<localRepository>
F:/m2/repository
</localRepository>
注:仓库位置改为自己本机的指定目录,
"/"
不要写反
1.2.
更换阿里镜像
,
加快依赖下载
<mirror>
<id>
nexus-aliyun
</id>
<mirrorOf>
central
</mirrorOf>
<name>
Nexus aliyun
</name>
<url>
http://maven.aliyun.com/nexus/content/groups/public
</url>
</mirror>
如果编译不成功,可能出现的问题:
1.不是使用的管理员权限执行的dos命令
2.jdk环境配置有问题,需要重装个jdk
3.代码编写的时候,类里面没有设置包名(如果编译时类没有包名,执行时也不需要)
Http:
Method:表示请求方法:Request-URL是一个统一资源标识符
Http-version:表示请求的Http协议版本
Http协议是一个超文本传输协议,用于从万维网(www:World Wide Web)服务器传输超文本到本地浏览器的传输协议。
Http是一个基于TCP/IP通信协议来传输数据(HTML文件、图片文件、查询结果等)。
Http的工作原理:
1.Http是无缝连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
2.Http是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过Http发送,客户端以及服务器指定使用合适的MIME-type内容类型.
3.Http是无状态:Http协议是无状态协议。无状态是指协议对于事物处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则他必须重传,这样可能导致每次 连接传输的数据量都很大。另一方面,在服务器不需要先前信息时它的应答就较快.
Http请求消息:一个Http请求报文由请求行(request line)、请求行(header)、空行和请求数据4个部分组成。
请求行:
请求行由请求方法字段、URL字段和Http协议版本字段3个字段组成,他们用空格分隔。例如,GET/index.http Http/1.1.
根据Http标准,Http请求可以使用多种请求方法。
Http1.0定义了三种请求方法:GET、POST和HEAD方法
常见的:
1.GET
最常见的一种请求方式,当客户端要从服务器中读取文档时,当点击网页上的连接或者通过在浏览器的地址栏输入网址来浏览网页的,使用的都是GET方式。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号("?")代表URL的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?name=zhangsan&age=12,这样通过GET方式传递的数据直接表示在地址中,所以我们可以把请求结果以链接的形式发送给他人。
而且GET的方式的请求一般不包括"请求内容"部分,请求数据以地址的形式表现在请求行。地址中的"?"之后的部分就是通过GET发送的请求数据,我们可以在地址栏中清楚地看到,各个数据之间用"&"符号隔开。显然,这种方式不适合传送
私密数据,另外,由于不同的浏览器对地址的字符限制也有所不同,一般最多只能识别1024个字符,所以如果需要传送大量数据的时候,也不适合GET方式。
2.post
对于上面提到的不适合使用GET方式的情况下,可以考虑使用post方式,因为使用post方法可以允许客户端提供信息较多。post方法将请求参数封装在http请求数据中,以名称/值得形式出现。可以传输大量的数据,这样的post方式对传输数据的大小没有限制,而且也不会显示在URL中。post方式请求行中不包含数据字符串,这些数据保存在"请求内容"部分,各个数据之间也是使用"&"符号隔开。post方式大多用于用于表单中。因为post也能完成GET的功能,因此多数人在设计表单的时候一律使用post方式,其实这算是一个误区,GET也有自己的特点和优势,我们应该根据不同的情况来选择是使用GET还是post。
3.head
head就像GET,只不过服务器接收到head请求后只返回响应头,而不会发送响应内容。当我们只需要查看某个页面的状态的时候,使用head是非常高效的,因为在传输的过程中省去了页面内容。
请求头(客户端-->服务端[request])
:
请求头部由关键字/值对组成,每行一对,关键字和使用英文冒泡":"分隔。请求头部通知服务器有关客户端请求的信息,典型的请求头有;
1.User-Agent:产生请求的浏览器类型
2.Accept:客户端可识别的内容类型列表
3.Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。
空行:最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。
请求数据:请求数据不在GET方法中使用,而是在post方法中使用。post方法适用于需要客户填写表单的场合。与请求数据相关的最常见的请求头是Content-Type和Content-length.
实例:
1.GET
//请求首行
GET /hello/index.jsp HTTP/1.1
//请求头信息,因为GET请求没有正文
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Cookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98
//空行
//因为GET没有正文,所以下面为空
2.POST
// 请求首行
POST /hello/index.jsp HTTP/1.1
//请求头信息
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: http://localhost/hello/index.jsp
Cookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98
Content-Type: application/x-www-form-urlencoded
Content-Length: 14
// 这里是空行
//POST有请求正文
username=hello
Accept:*/*(客户端能接受的语言类型)
Accept-Language:en-us(客户端接收的语言类型)
Connection:Keep-Alive(维护客户端和服务端的连接关系)
Host:localhost:8080(连接的目标主机和端口号)
Referer:http://localhost/links.asp(从哪来的)
UserAgent:Monzilla/4.0(客户端版本号的名字)
Accept-Encoding:gzip,deflate(客户端能接受的压缩数据的类型)
if-Modified-Since:Tue,8 Jul 2021 10:20:21 GMT(缓存时间)
Cookie(客户端暂存服务端的信息)
Date:Tue,8 Jul 2021 10:20:21 GMT(客户端请求服务端的时间)
响应头:(服务端-->客户端[response]):
HTTP/1.1(响应采用的协议和版本号) 200(状态码) OK(描述信息)
302(客户端请求服务端,但服务端没有对应的资源,服务端要客户端再次请求找其它的服务端,即客户端二次请求,重定向)
307(客户端请求服务端,但服务端没有对应的资源,服务端自行再次请求找其它的服务端,即客户端一次请求,转发)
304(客户端请求服务端,此时客户端缓存中有,无需再从服务端下载新的内容,服务端叫客户端自行找缓存,优化)
500(客户端请求的资源,服务端存在,但在执行时出错)
Location: http://www.baidu.com(服务端需要客户端访问的页面路径)
Server:apache tomcat(服务端的Web服务端名)
Content-Encoding: gzip(服务端能够发送压缩编码类型)
Content-Length: 80(服务端发送的压缩数据的长度)
Content-Language: zh-cn(服务端发送的语言类型)
Content-Type: text/html; charset=GB2312(服务端发送的类型及采用的编码方式)
Last-Modified: Tue, 11 Jul 2015 18:23:51 GMT(服务端对该资源最后修改的时间)
Refresh: 1;url=http://www.it315.org(服务端要求客户端1秒钟后,刷新,然后访问指定的页面路径)
Content-Disposition: attachment; filename=aaa.zip(服务端要求客户端以下载文件的方式打开该文件)
Transfer-Encoding: chunked(分块传递数据到客户端)
Set-Cookie:SS=Q0=5Lb_nQ; path=/search(服务端发送到客户端的暂存数据)
Expires: -1//3种(服务端禁止客户端缓存页面数据)
Cache-Control: no-cache(服务端禁止客户端缓存页面数据)
Pragma: no-cache(服务端禁止客户端缓存页面数据)
Connection: close(1.0)/(1.1)Keep-Alive(维护客户端和服务端的连接关系)
Date: Tue, 11 Jul 2015 18:23:51 GMT(服务端响应客户端的时间)
Content-Type:表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置Content-Type,因此HttpServletResponse提供了一个专用的方法setContentTyep。
Date:当前的GMT时间。你可以用setDateHeader来设置这个头以避免转换时间格式的麻烦。
Expires:应该在什么时候认为文档已经过期,从而不再缓存它?
Last-Modified:文档的最后改动时间。客户可以通过If-Modified-Since请求头提供一个日期,该请求将被视为一个条件GET,只有改动时间迟于指定时间的文档才会返回,否则返回一个304(Not Modified)状态。Last-Modified也可用setDateHeader方法来设置。
Location:表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302。
Refresh:表示浏览器应该在多少时间之后刷新文档,以秒计。除了刷新当前文档之外,你还可以通过setHeader("Refresh", "5; URL=http://host/path")让浏览器读取指定的页面。注意这种功能通常是通过设置HTML页面HEAD区的<META HTTP-EQUIV="Refresh" CONTENT="5;URL=http://host/path">实现,这是因为,自动刷新或重定向对于那些不能使用CGI或Servlet的HTML编写者十分重要。但是,对于Servlet来说,直接设置Refresh头更加方便。注意Refresh的意义是“N秒之后刷新本页面或访问指定页面”,而不是“每隔N秒刷新本页面或访问指定页面”。因此,连续刷新要求每次都发送一个Refresh头,而发送204状态代码则可以阻止浏览器继续刷新,不管是使用Refresh头还是<META HTTP-EQUIV="Refresh" ...>。注意Refresh头不属于HTTP 1.1正式规范的一部分,而是一个扩展,但Netscape和IE都支持它。
Server:服务器名字。Servlet一般不设置这个值,而是由Web服务器自己设置。
Set-Cookie:设置和页面关联的Cookie。Servlet不应使用response.setHeader("Set-Cookie", ...),而是应使用HttpServletResponse提供的专用方法addCookie。参见下文有关Cookie设置的讨论。
WWW-Authenticate :客户应该在Authorization头中提供什么类型的授权信息?在包含401(Unauthorized)状态行的应答中这个头是必需的。例如,response.setHeader("WWW-Authenticate", "BASIC realm="executives"")。注意Servlet一般不进行这方面的处理,而是让Web服务器的专门机制来控制受密码保护页面的访问(例如.htaccess)。
servlet:服务器小程序
如何创建:继承HttpServlet 或者是 实现接口Servlet
配置:@WebServlet("/abc")
xml配置
客户端(http://localhost:8080/web?age=20name=zhangsan)-->(请求)服务器tomcat,jetty
内置对象方法的使用:HttpServletRequest req
HttpServletResponse resp:1.resp.getWriter().print("你好鸭");
2.Type("text/http;charset=utf-8")
3.重定向
生命周期:
init初始化 service destory();
单例模式:饿汉式:类加载的时候就实例化,并且创建单例对象
懒汉式(默认):默认不会实例化,什么时候用什么时候new
饿汉式和懒汉式的区别: 饿
汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变。懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的。
乱码的问题:分为:请求式乱码和响应式乱码
解决:Help-->custom vm options --> -Dile.encoding=utf-8
req.setCharacterEncoding=utf-8;
resp.setContextType("text/http;charset=utf-8");
如果出现什么....当前版本不支持源版本5,要6什么的就需要看看系统环境的配置和setting了,详情看网上的
转发和重定向:
1.转发一次请求,重定向2次请求
2.转发在项目的内部,不可以跨域,重定向可以跨域
3.重定向由于两次请求,req作用域不可以再带值
转发:req.getRequestDispatchar("index.jsp").forword(req,resp);
重定向:resp.sendRedired("index.jsp");
最后
以上就是花痴荷花为你收集整理的Maven和Servlet的全部内容,希望文章能够帮你解决Maven和Servlet所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复