POST请求注意事项
- POST请求的URL也能够携带参数,和GET一样,存放在Query String Parameters中,Params即URL中携带的参数
- 表单提交的数据存放在Form Data中,Data即请求体中携带的参数
前端ajax.jsp部分代码:
<%--javascript:void(0);含义是既不跳转也不刷新页面,#代表不跳转但刷新页面--%><a id="1" href="javascript:void(0);">params数据获取</a><br><script src="js/jquery-3.3.1.min.js"></script><script>$("#1").click(function () {$.ajax({//访问URL路径url:"pages/ajax1?msg=ok",//访问方式//get Request URL: http://localhost/pages/ajax1?msg=ok&msg=yes//post Request URL: http://localhost/pages/ajax1?msg=oktype:"post",//发送服务器的数据data:"msg=yes",//回调函数success:function (data) {alert(data);}})});</script>
后端控制器代码:
package com.it.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import java.util.Arrays;@Controller@RequestMapping("/pages")public class MyController {/**** @param msg 服务器接收客户端发来的参数* @return 视图跳转,ajax可解析成内容*/@RequestMapping("/ajax1")public String ajax1(String[] msg){ //[ok, yes]// public String ajax1(String msg){ //ok, yesSystem.out.println(Arrays.toString(msg));return "success";}}
测试结果:
- get请求,ajax的url设置为
pages/ajax1?msg=ok,data设置为msg=yes- 请求url最终为
[http://localhost/pages/ajax1?msg=ok&msg=yes](http://localhost/pages/ajax1?msg=ok&msg=yes) - URL数据Query String Parameters为msg:=ok&msg=yes
- 无请求体数据
- 请求url最终为
- post请求,ajax的url设置为
pages/ajax1?msg=ok,data设置为msg=yes
| URL链接示例 | ||||
|---|---|---|---|---|
| 协议 | 服务器IP地址或主机名 | 端口号 | URI(请求的具体资源) | 参数 |
| http:// | localhost: | 8080 | /demo/uriDemo.html | 从”?”开始到”#”为止之间的部分 |
Servlet的xml配置
- 定义Servlet
- 定义servlet名称
- 设置servlet处理类,web容器会根据其全类名反射来创建对象
- 配置servlet启动项(创建的时机),设为1后,servlet处理类对象在web容器启动时就被创建
- 配置Servlet映射
- 指定servlet名称
- url匹配模式
- 配置局部初始化参数
- 通过ServletConfig来配置当前的servlet初始化参数,注意标签顺序
- 初始化参数的key
- 初始化参数的value
配置全局初始化参数
通过ServletContext配置全局初始化参数信息
<?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_3_1.xsd"version="3.1"><!--配置servlet--><!--1、定义servlet--><servlet><!--定义servlet名称--><servlet-name>demoServlet</servlet-name><!--servlet处理类通过全类名反射来创建对象--><servlet-class>com.it.servlet.DemoServlet</servlet-class><!--3、通过ServletConfig来配置当前的servlet初始化信息--><init-param><!--初始化参数的key--><param-name>encoding</param-name><!--初始化参数的value--><param-value>UTF-8</param-value></init-param><!--配置servlet启动项(创建的时机)设为1后,servlet处理类对象在web容器启动时就被创建--><load-on-startuo>1</load-on-startuo></servlet><!--2、配置servlet映射--><servlet-mapping><servlet-name>demoServlet</servlet-name><!--url匹配模式--><url-pattern>/demo</url-pattern></servlet-mapping><!--4、通过ServletContext配置全局初始化参数信息--><context-param><param-name>username</param-name><param-value>admin</param-value></context-param></web-app>
WEB-INF下资源请求
描述:
- 客户端请求不能访问WEB-INF下的资源,只有从服务器端跳转(转发)才可以访问。
- css、img、js文件需要被引用,不可放在WEB-INF目录下
作用:
@WebServlet:修饰Servlet类,用于部署该Servlet类。@WebFilter:修饰Filter类,用于部署该Filter类@WebInitParam:与@WebServlet或@WebFilter注解连用,为它们配置参数@MultipartConfig:修饰Servlet类,指定该Servlet类负责处理multipart/form-data类型的请求(主要用于处理上传文件)@ServletSecurity:修饰Servlet类,与JAAS(Java验证和授权API)有关的注解@HttpConstrait:与@ServletSecurity连用@HttpMethodConstrait:与@ServletSecurity连用ServletContext方法为什么能直接用
问题:ServletContext没有实现类,为什么可以直接调用其方法?
答案:Web容器自动创建实现类对象ApplicationContextFacade,通过多态的特性调用方法
测试代码:
打印结果:@Overridepublic void init() throws ServletException {super.init();ServletContext servletContext = getServletContext();System.out.println("servletContext = " + servletContext);}
servletContext = org.apache.catalina.core.ApplicationContextFacade@62d4ac72
查看端口号占用
使用cmd命令
查看pid 在任务管理器中结束占用端口的进程netstat -a -o
状态码
状态码分类
| | 已定义范围 | 分类 | | —- | —- | —- | | 1XX | 100-101 | 信息提示 | | 2XX | 200-206 | 成功 | | 3XX | 300-305 | 重定向 | | 4XX | 400-415 | 客户端错误 | | 5XX | 500-505 | 服务器错误 |
1XX 信息性状态码
| 状态码 | 状态消息 | 含义 |
|---|---|---|
| 100 | Continue(继续) | 收到了请求的起始部分,客户端应该继续请求 |
| 101 | Switching Protocols(切换协议) | 服务器正根据客户端的指示将协议切换成Update Header列出的协议 |
2XX 成功状态码
| 状态码 | 状态消息 | 含义 |
|---|---|---|
| 200 | OK | 服务器成功处理了请求(这个是我们见到最多的) |
| 201 | Created(已创建) | 对于那些要服务器创建对象的请求来说,资源已创建完毕。 |
| 202 | Accepted(已接受) | 请求已接受, 但服务器尚未处理 |
| 203 | Non-Authoritative Information(非权威信息) | 服务器已将事务成功处理,只是实体Header包含的信息不是来自原始服务器,而是来自资源的副本。 |
| 204 | No Content(没有内容) | Response中包含一些Header和一个状态行, 但不包括实体的主题内容(没有response body) |
| 205 | Reset Content(重置内容) | 另一个主要用于浏览器的代码。意思是浏览器应该重置当前页面上所有的HTML表单。 |
| 206 | Partial Content(部分内容) | 部分请求成功 |
3XX 重定向状态码
| 状态码 | 状态消息 | 含义 |
|---|---|---|
| 300 | Multiple Choices(多项选择) | 多重选择。链接列表。用户可以选择某链接到达目的地。最多允许五个地址。 |
| 301 | Moved Permanently(永久移除) | 请求的URL已移走。Response中应该包含一个Location URL, 说明资源现在所处的位置 |
| 302 | Found(已找到) | 与状态码301类似。但这里的移除是临时的。 客户端会使用Location中给出的URL,重新发送新的HTTP request |
| 303 | See Other(参见其他) | 类似302 |
| 304 | Not Modified(未修改) | 客户的缓存资源是最新的, 要客户端使用缓存 |
| 305 | Use Proxy(使用代理) | 必须通过代理访问资源, 代理的地址在Response 的Location中 |
| 306 | 未使用 | 这个状态码当前没使用 |
| 307 | Temporary Redirect(临时重定向 | 类似302 |
4XX客户端错误状态码
| 状态码 | 状态消息 | 含义 |
|---|---|---|
| 400 | Bad Request(坏请求) | 语义有无,当前请求无法被服务器理解,或请求参数有误 |
| 401 | Unauthorized(未授权) | 需要客户端对自己认证 |
| 402 | Payment Required(要求付款) | 这个状态还没被使用, 保留给将来用 |
| 403 | Forbidden(禁止) | 请求被服务器拒绝了 |
| 404 | Not Found(未找到) | 未找到资源 |
| 405 | Method Not Allowed(不允许使用的方法) | 请求中指定的方法不被允许 |
| 406 | Not Acceptable(无法接受) | |
| 407 | Proxy Authentication Required(要求进行代理认证) | 与状态码401类似, 用于需要进行认证的代理服务器 |
| 408 | Request Timeout(请求超时) | 如果客户端完成请求时花费的时间太长, 服务器可以回送这个状态码并关闭连接 |
| 409 | Conflict(冲突) | 发出的请求在资源上造成了一些冲突 |
| 410 | Gone(消失了) | 服务器曾经有这个资源,现在没有了, 与状态码404类似 |
| 411 | Length Required(要求长度指示) | 服务器要求在Request中包含Content-Length。 |
| 412 | Precondition Failed(先决条件失败) | |
| 413 | Request Entity Too Large(请求实体太大) | 客户端发送的实体主体部分比服务器能够或者希望处理的要大 |
| 414 | Request URI Too Long(请求URI太长) | 客户端发送的请求所携带的URL超过了服务器能够或者希望处理的长度 |
| 415 | Unsupported Media Type(不支持的媒体类型) | 服务器无法理解或不支持客户端所发送的实体的内容类型 |
| 416 | Requested Range Not Satisfiable(所请求的范围未得到满足) | |
| 417 | Expectation Failed(无法满足期望) |
5XX服务器错误状态码
| 状态码 | 状态消息 | 含义 |
|---|---|---|
| 500 | Internal Server Error(内部服务器错误) | 服务器遇到一个错误,使其无法为请求提供服务 |
| 501 | Not Implemented(未实现) | 客户端发起的请求超出服务器的能力范围(比如,使用了服务器不支持的请求方法)时,使用此状态码 |
| 502 | Bad Gateway(网关故障) | 代理使用的服务器遇到了上游的无效响应 |
| 503 | Service Unavailable(未提供此服务) | 服务器目前无法为请求提供服务,但过一段时间就可以恢复服务 |
| 504 | Gateway Timeout(网关超时) | 与状态吗408类似, 但是响应来自网关或代理,此网关或代理在等待另一台服务器的响应时出现了超时 |
| 505 | HTTP Version Not Supported(不支持的HTTP版本) | 服务器收到的请求使用了它不支持的HTTP协议版本。 有些服务器不支持HTTP早期的HTTP协议版本,也不支持太高的协议版本 |
