HTTP简介
●WEB浏 览器与WEB服务器之间的- -问一答的交互过程必须遵循-定的规则, 这个规则就是HTTP协议。
●HTTP是hypertext transfer protocol (超文本传输协议)的简写,它是TCP/IP协议集中的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程
●HTTP协议 的版本HTTP/1.0、HTTP/1.1、HTTP-NG
传递参数的两种方式POSS & GET
例如:在一个html 文件中一个form 表单
post
<body>
<form action="SigInServlet" method="post">
<input type="text" name="user"/>
<input type="password" name="password"/>
<input type="submit" name="submit">
</form>
</body>
web.xml 文件中实现服务器配置
<servlet>
<servlet-name>SigInServlet</servlet-name>
<servlet-class>day0128.javaweb.SigInServlet</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SigInServlet</servlet-name>
<url-pattern>/SigInServlet</url-pattern>
</servlet-mapping>
注:url-pattern 中写的必须和表单跳转一致
在请求的正文中,可看到传递的参数
get
请求正文为空
区别
1).使用GET方式传递参数:
①。在浏览器地址栏中输入某个URL地址或单击网页上的一个超链接时,浏览器发出的HTTP请求消息的请求方式为GET.
②。如果网页中的表单元素的method 属性被设置为了“GET",浏览器提交这个FORM表单时生成的HTTP请求消息的请求方式也为GET.
③使用GET请求方式给WEB服务器传递参数的格式:
http://www. abcf. com/ counter . jsp?name=1c&password=123
④.使用GET方式传送的数据量一 般限制在1KB以下。
2).使用POST方式传递参数:
①POST请求方式主要用于向WEB服务器端程序提交FORM表单中的数据: form表单的method 置为POST
②POST方式将各个表单字段元素及其数据作为HTTP消息的实体内容发送给WEB服务器,传送的数据量要比使用GET方式传送的数据量大得多。
servletRequest & servletResponse
这两个接口的实现类都是服务器给予实现的,并在服务器调用service方法时传入.
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
System.err.println("service");
}
- ServletRequest: 封装了请求信息。可以从中获取到任何的请求信息.
- Serv1etResponse: 封装了响应信息,如果想给用户什么响应,具体可以使用该接口的方法实现.
servletResquest 常用方法
- String getParameter(String name)
根据参数的名字,返回参数值,若请求参数含有多个值(例如checkbox),只能获得第一个提交的值
.html 中的代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="SigInServlet" method="get">
<input type="text" name="user"/>
<input type="password" name="password"/>
<input type="submit" name="submit">
<br><br>
<input type="checkbox" name="character" value="A">A
<input type="checkbox" name="character" value="B">B
<input type="checkbox" name="character" value="C">C
<input type="checkbox" name="character" value="D">D
</form>
</body>
</html>
类SigInServlet(继承了Servlet类) 中的 server方法
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("get Service");
String user = req.getParameter("user");
String pass = req.getParameter("password");
System.out.println("user :"+user);
System.out.println("password :" + pass);
}
web.xml中的配置
<servlet>
<servlet-name>SigInServlet</servlet-name>
<servlet-class>day0128.javaweb.SigInServlet</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SigInServlet</servlet-name>
<url-pattern>/SigInServlet</url-pattern>
</servlet-mapping>
结果:
- String[] getParameterValues(String name)
根据请求参数的名字,返回请求参数对应的字符串数组.
(web.xml , html文件均不改变)
server 中代码:
String[] sports = req.getParameterValues("character");
for (String string : sports) {
System.out.println("The checked spoerts include :"+string);
}
结果:
- Enumeration getParaneterNames()
返回参数名对应的Enumeration对象,类似于ServletConfig(或ServletContext)的getInitParameterNames()方法.
(web.xml , html文件均不改变)
server 中代码:
Enumeration<String> names = req.getParameterNames();
while (names.hasMoreElements()) {
String name = names.nextElement();
System.out.println(name +"--->"+req.getParameter(name));
}
结果:
(character 得到第一个提交的)
- Map getParameterMap()
返回请求参数的键值对: key: 参数名,value:参数值,String 数组类型。
(web.xml , html文件均不改变)
server 中代码:
Map<String, String[]> map = req.getParameterMap();
for (Map.Entry<String, String[]> string : map.entrySet()) {
System.out.println(string.getKey()+"::"+Arrays.asList(string.getValue()));
}
结果:
–对 servletResquest 进行强制转换成 HttpServletResquest
对于在网页中发出的请求的所有参数都可以获得
以下列举几个常用参数
//强制类型转换
HttpServletRequest hsr = (HttpServletRequest) req;
//得到请求的 URL
String requstUrl = hsr.getRequestURI();
System.out.println(requstUrl);
//得到 method
String method = hsr.getMethod();
System.out.println(method);
//得到QueryString
String queryString = hsr.getQueryString();
System.out.println(queryString);
//得到 servletPath
String servletpathString = hsr.getServletPath();
System.out.println(servletpathString);
System.out.println("service-end:");
.
servletResponse
//得到response
//得到 writer
PrintWriter pw = res.getWriter();
//在返回的页面中打印 HelloWorld
pw.print("helloWorld");
下是将返回的“HelloWorld ”以word 文件的形式进行下载
//得到一个 word
res.setContentType("application/x-abiword");
PrintWriter pw = res.getWriter();
pw.print("helloWorld");
res.setContentType(“application/x-abiword”);