Servlet学习笔记(二)

一.HTTP协议

1.什么是HTTP协议?

  • 就是W3C制定的一个规范
  • 规定了浏览器和服务器如何通信,通信的数据格式

 2.如何通信

  • 建立连接
  • 发送请求
  • 接受响应
  • 关闭连接

 一个请求一次连接,尽量降低服务器的压力

3.请求数据结构

  • 请求行:请求的基本信息
  • 消息头:对实体内容的描述
  • 实体内容:浏览器向服务器发送的业务数据

 4.响应数据结构

  • 状态行:响应的基本信息
  • 消息头:对实体内容的描述
  • 实体内容:服务器向浏览器发送的业务数据

5.注意

1.很多事情不需要我们处理

  • 通信的步骤由浏览器和服务器自动实现
  • 请求数据中的请求行,消息头由浏览器自动填写
  • 响应数据中的状态行,消息头通常由服务器自动填写

2.少量事情需要我们处理

  • 请求数据中的实体内容由我们提供
  • 响应数据中的实体内容由我们提供

通过request处理请求数据,通过response处理响应数据

二.注册案例

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册</title>
</head>
<body>
	<!--
	1.完整路径
	http://ip:port/项目名/网名
	2.绝对路径
		格式:/项目名/网名
		举例:/servlet2/reg
	3.相对路径
		当前:/servlet2/reg.html
		目标:/servlet2/reg
		相对路径:reg
	 -->
	<form action="reg" method="post">
		<p>
			账号:<input type="text" name="username"/>
		</p>
		<p>
			密码:<input type="password" name="pwd"/>
		</p>
		<p>
			性别:
			<input type="radio" name="sex" value="M"/>男
			<input type="radio" name="sex" value="F"/>女
		</p>
		<p>
			兴趣:
			<input type="checkbox"  name="interest" value="food"/>美食
			<input type="checkbox"  name="interest" value="game"/>竞技
			<input type="checkbox"  name="interest" value="friend"/>社交
		</p>
		<p>
			<input type="submit" value="注册" />
		</p>
	</form>
</body>
</html>
package web;
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;
public class RegServlet extends HttpServlet {

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		//采用方案三解决POST请求乱码问题
		req.setCharacterEncoding("utf-8");
		/*
		 * 处理请求的一般流程
		 * 1.接收参数
		 */
		String name = req.getParameter("username");
		String pwd = req.getParameter("pwd");
		String sex = req.getParameter("sex");
		String[] interests = req.getParameterValues("interest");
		//采用方案一解决乱码问题
//		byte[] bs = name.getBytes("iso8859-1");
//		name = new String(bs,"utf-8");
		 //2.处理业务
		 //3.发送响应
		System.out.println(name);
		System.out.println(pwd);
		System.out.println(sex);
		if(interests!=null){
			for(String interest:interests){
				System.out.println(interest);
			}
		}
		//3.发送响应
		res.setContentType("text/html;charset=utf-8");
		PrintWriter w = res.getWriter();
		w.println("<p>ok,"+name+"</p>");
		w.close();
	}
	
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <display-name>servlet2</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
  	<servlet-name>reg</servlet-name>
  	<servlet-class>web.RegServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>reg</servlet-name>
  	<url-pattern>/reg</url-pattern>
  </servlet-mapping>
  
  
</web-app>

三.请求方式

1.什么是请求方式?

  • 就是浏览器向服务器发送请求时传递数据的方式

2.常用请求方式

  • get
  • post

3.GET和POST的区别(面试题)

1)GET

  • 采用路径传参
  • 参数在传递过程中可见,隐私性差
  • 路径大小有限制,所有传递的参数大小受限

所有的请求默认都是GET请求

2)POST

  • 采用实体内容传参
  • 参数在传递过程中不可见,隐私性好
  • 实体内容专门用来传参,大小不受限制

在表单上加method="post"

3)建议

  • 参数需要保密时用POST
  • 参数较多时用POST

四.Servlet运行原理

五.乱码解决方案

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值