J2EE Http GET POST study

来源:互联网 发布:图书馆数据库需求分析 编辑:程序博客网 时间:2024/04/28 02:59
1.http是一个基于请求响应的模式,无状态的协议,基于tcp基础之上的;2.tcp是一个基于连接的协议,它能够提供两台计算机之间可靠的数据流,http,ftp,telnet等应用都需要这种可靠的通讯通道http1.0的连接步骤:当建立连接之后,浏览器发送一个请求,服务器回应一个消息,之后连接就关闭。确定(不断连接,开销很大,由于图片,视频,音频的加入,就容易产生堵塞)。1>.客户发起连接2>.客户发送请求3>.服务器响应请求4>.服务器关闭连接http1.1:PersistentConnections(持续连接),通过这种连接,浏览器可以建立一个连接之后,发送请求并得到回应,然后继续发送请求并再次得到回应,并且客户端可以发送流水线请求,也就是说客户端可以发送多个请求,而不用等待每一个回应的到来。URL:统一资源定位符Uniform Resource:http://host[:port][abs_path];host:表示合法的Internet主机域名或者是ip地址(以点分十进制表示);port:用于指定一个端口号,拥有被请求资源的服务器主机监听该端口的tcp连接,如果port是空将使用缺省的端口80;abs_path:指定请求资源的uri(统一资源标示符:Uniform Resource Identifier).如果URL中没有给出abs_path,那么当它作为请求的Uri时,必须以/的形式给出(通常这个工作浏览器帮我们完成),例如:www.baidu.com,浏览器给我们加http://www.baidu.com/;ServerSocket serversocket=new ServerSocket(80服务器自动加的80端口);serversocket.accept();www.baidu.com--->>DNS(Domain Name Server域名解析服务);----->> 61.135.169.125百度的域名;ServerSocket serversocket=new ServerSocket(61.135.169.125:80);如果服务器不是80端口,当请求服务器的时候要加上服务器的端口号,如果是81:www.baidu.com:81;客户端通过发送http请求向服务器请求对资源的访问,http请求有三部分组成:请求行,消息报头,请求正文。get:当我们通过在浏览器的地址栏直接输入网址的方法去访问网页的时候,浏览器就是通过GET方法获取的浏览器资源。post: 方法用于向服务器发送请求,要求服务器接受附在请求后面的数据,post方法在表单提交数据的时候用的比较多。head:用的不多。注意:在html中get,post不区分大小写。在http中必须为大写。Http响应:HTTP-Version Status-Code Reason-Phrase CRLFHTTP-Version 表示服务器HTTP的版本。Status-Code表示服务器发回的响应代码Reason-Phrase表示状态代码的文本描述CRLF表示回车换行例如:-HTTP/1.1 200OK(CRLF)状态代码由三位数字组成,表示请求是否被理解或者被满足,第一个数字定义了响应的类别,具体有5种取值1xx:指示信息-表示请求已经接收,继续处理2xx:成功-表示请求已经被成功的接收,理解,接受3xx:重定向-要完成请求必须要进一步操作4xx:客户端错误-请求由语法错误或请求无法实现5xx:服务器错误-服务器未能实现合法的请求TELNET:(可以直接的访问服务器)Http和Telnet都是基于Tcp协议的;cmd->services.msc->查看系统的所有Service//----------------------------访问sina index.htmlcmd->telnet www.sina.com.cn 80 (登陆sina80)访问sina index.html方法:HEAD /index.html HTTP/1.1Host:www.sina.com.cn加两个回车即可。//-------------------------------常见的服务器:tomcat,Resin,jetty,weblogic,webSphere,jboss.TOMCAT环境的配置:-----------------------tomcat文件介绍:bin:可执行的文件,批处理文件conf:xml的配置文件lib:tomcat的库,jar文件tomcat是用java编写的logs:日志文件temp:临时文件webapps:部署的文件work:编译之后产生的临时文件-------------------------------------CATALINA_HOME=tomcat的安装目录JAVA_HOME=jdk的安装目录访问tomcat: telnet localhost(127.0.0.1) 8080保持连接:HEAD(GET) / HTTP/1.1Host:localhostConnection:Keep-Alive一次连接:HEAD(GET) / HTTP/1.1Host:localhostConnection:close JSP和Severlet之间的关系:1.Severlet看做是嵌套了html代码的class类。2.JSP看做是嵌套了java代码的html页面。表单:    <form action="/test/HeroLogin" method="get/post">    username: <input type="text" name="username"><br>    password: <input type="password" name="password"><br>    <input type="submit" value="submit">       <input type="reset" value="reset">    </form>当表单中method="get" 地址栏中显示:http://localhost:8080/test/HeroLogin?username=Hero&password=sfd当表单中method="get" 地址栏中显示:http://localhost:8080/test/HeroLoginGET: /test/HeroLogin?username=Hero&password=123 HTTP/1.1(URL直接请求服务器);POST: /test/HeroLogin HTTP/1.1 (URL请求服务器);Connection:Keep-Alive  CRLF CRLF(post协议规定两个回车) username=hello&password=world(作为请求体的一部分提交到服务器);get和post方法之间的区别:1>浏览器地址栏呈现的结果不同2>真正的原因在于向服务器发送请求的形式不同。3>get请求格式:/test/HeroLogin?username=Hero&password=123 HTTP/1.1  post请求格式:/test/HeroLogin HTTP/1.1   Connection:Keep-Alive  CRLF CRLF(post协议规定两个回车) username=hello&password=world;    简单的例子:  web.xml:  <?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet>     <servlet-name>LoginName</servlet-name>     <servlet-class>com.hero.org.servlet.LoginServlet</servlet-class> </servlet> <servlet-mapping>     <servlet-name>LoginName</servlet-name>     <url-pattern>/HeroLogin</url-pattern> </servlet-mapping></web-app>Login.jsp:    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'Login.jsp' starting page</title>    <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  </head>    <body>    <form action="/test/HeroLogin" method="get">    username: <input type="text" name="username"><br>    password: <input type="password" name="password"><br>    <input type="submit" value="submit">       <input type="reset" value="reset">    </form>  </body></html> LoginServlet代码:  package com.hero.org.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@SuppressWarnings("serial")public class LoginServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stubSystem.out.println("Do Get");requetTpye(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// TODO Auto-generated method stubSystem.out.println("Do Post");requetTpye(req, resp);}private void requetTpye(HttpServletRequest req, HttpServletResponse resp)throws IOException {String username = req.getParameter("username");String password = req.getParameter("password");System.out.println("username:" + username);System.out.println("password:" + password);resp.setContentType("text/html");PrintWriter out = resp.getWriter();out.println("<html><head><title>Hero</title></head>");out.println("<body>UserName:" + username + "<br>");out.println("Password:" + password + "</body></html>");out.flush();}}tomcat server.xml Toadd in the end:<Context path="/test" docBase="E:\Myeclipse\WorkSpace\MyFirstWeb\WebRoot" reloadable="true" /> 




原创粉丝点击