up:: web开发基础内容概述

Servlet与JSP进阶部分主要阐述:JavaWeb更深入的核心特性;Servlet核心对象;JSP九大内置对象;


一:请求

1:HTTP请求的结构

请求:是从浏览器向Tomcat服务器所发送的数据包;

(1)请求行:说明请求方法,请求的url,HTTP的版本信息;

(2)请求头:包含了很多辅助性的信息,可以为程序处理提供额外的数据支持;

当前浏览器所设置的语言;

比如,同样是访问谷歌,国内的浏览器显示的是中文,国外的浏览器显示的是英文;谷歌为什么在不同的浏览器上显示内容不一样呐?就是因为不同的浏览器其发送请求的请求头中的Accept-Language设置的不一样;

所以,以后开发程序的时候,要考虑到用户有国内的有国外的,一定要根据不同的请求发送不同的语言版本,这有一个术语叫:国际化:


:说明了浏览器和操作系统的环境;


:代表内容的长度,即发送数据的总长度;


:缓存的设置;


:Cookie的设置;

上面只是简单说明,以后会深入了解;

(3)请求体:参数:get没有请求体

:请求体中有多个参数;

需要注意get请求,把参数放在了url中,其是没有请求体的;只有Post请求才有请求体!!!!!!!!!!!!!!!!!


2:演示案例

(1)在eclipse中创建servlet的快捷方式:

(2)为了演示访问,创建一个HTML:分别修改Fome表单的提交方式,get和post:

 
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
 
    	<form action="/request-struc/request" method="post">
    		<input name="username"/>
    		<input name="password" type="password"/>
    		<input type="submit"/>
    	</form>
    </body>
    </html>

request_struc:上面案例的工程代码,在这个远程仓库中;

分析:

(3)get请求时:

(4)post请求时:

注:(1)get和post请求,请求头的差别不大;主要区别是get没有请求体,get把参数放在了url中;post有请求体,post把参数放在了请求体中;(2)没事可以多看看NetWork中的内容给你;


3:利用请求头开发多端应用:User-Agent

(1)情况展示:

平时,同一个网站,在电脑上和手机上显示的效果完全不同,这背后的本质就是程序通过读取请求头,来判断是手机还是电脑。

发现不同版本上的显示效果不同,然后其请求头中User-Agent也不同:

User-Agent得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等;

(2)获取当前请求头中的User-Agent信息

 
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// 获取请求头中,“User-Agent”的值;
    		String userAgent = request.getHeader("User-Agent");
    		// 设置一下response,让其支持中文
    		response.setContentType("text/html;charset=utf-8");
    		response.getWriter().println(userAgent);
    	}

(3)根据User-Agent信息,判断是PC端还是移动端

估计,判断出是PC端还是移动端,方便后续区别处理;

    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// 获取请求头中,“User-Agent”的值;
    		String userAgent = request.getHeader("User-Agent");
    		// 设置一下response,让其支持中文
    		response.setContentType("text/html;charset=utf-8");
    		response.getWriter().println(userAgent);
    		String output = "";
    		if(userAgent.indexOf("Windows NT") != -1) {
    			output = "<h1>这是PC版本的</h>";
    		}else if((userAgent.indexOf("iPhone") != -1) || (userAgent.indexOf("Android")!= -1)) {
    			output = "<h1>这是手机版本的</h1>";
    		}
    		response.getWriter().println(output);
    	}

servlet_advanced:上面工程的代码放在了这个远程仓库中了;

效果: