Request对象概述
Request对象获取客户端的请求数据, 接口ServletRequest,子接口HttpServletRequest继承ServletRequest.
HttpServletRequest接口的实现类是Tomcat引擎提供.
Request对象获取请求行
- String getMethod() 获取提交的方式 (GET,POST)
- String getRequestURI() 获取请求的参数,请求服务器路径
- StringBuffer getRequestURL() 获取请求的参数,请求服务器路径
- String getQueryString()获取请求行 问号后面的参数 (GET)
- String getContextPath() 获取WEB应用名称
Request对象获取请求头
请求头数据格式键值对, k:v
指导性信息,指导服务器
- String getHeader(String key)返回对应键的值
//方法 String getHeader(String key)
String key = request.getHeader("Referer"); // 获取上一个网站地址
System.out.println(key);
- Enumeration getHeaderNames()
/*
* Enumeration getHeaderNames() 获取所有的请求头的键
* 返回值Enumeration接口 (向量枚举)
* 集合:1.0-1.1 Enumeration 集合1.2 迭代器
* Iterator迭代器接口: hasNext() next()
* Enumeration接口: hasMoreElement() nextElement()
*/
package com.itheima.request;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;
@WebServlet(urlPatterns = "/header")
public class Header extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*
* request获取请求头
*/
//方法 String getHeader(String key)
String key = request.getHeader("Referer"); // 获取上一个网站地址
System.out.println(key);
Enumeration<String> enums = request.getHeaderNames();
while (enums.hasMoreElements()){
key = enums.nextElement();
String value = request.getHeader(key);
System.out.println(key+"=="+value);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
Request获取请求参数
- String getParameter("表单中的name值")获取指定的请求参数
- String[] getParameterValues("表单中的name值")获取参数中的一键多值
- Map<String,String[]> getParameterMap()获取提交的所有参数
Request域对象
作用域: Request域对象的作用域比较小,范围是一次请求有效
再一次请求无效
- 域对象存储数据: setArratibute(String key, Object value)
- 取出域对象数据: Object getAttribute(String key)
- 移除域对象数据: removeAttribute(String key)
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//向域对象 ,request 存储数据
request.setAttribute("heima","java");
//取出域对象数据
Object value = request.getAttribute("heima");
System.out.println("servlet1="+value);
}
转发的实现步骤
- request对象方法获取转发器 RequestDispatcher getRequestDispatcher("转发地址")返回值就是转发器
- 使用转发器对象的方法 forward
//获取转发器对象,传递转发的路径
RequestDispatcher dispatcher = request.getRequestDispatcher("/servlet2");
//转发器方法
dispatcher.forward(request,response);
转发和重定向区别
重定向:浏览器两次请求(url地址发生改变);转发:浏览器一次请求(url地址不改变)
三层结构
注册功能三层架构
开发步骤
- 创建数据库数据表
- 创建新Module
- 复制页面
- 创建包
- 添加需要jar
- 配置文件
- 功能,编写服务器程序
导入包:
用户注册(BeanUtils.populate())
BeanUtils.populate():https://blog.csdn.net/zuoyixiao/article/details/40376991
web层用到servlet
用户登录
登录成功:重定向首页
登录失败:还在本页面
用户登录过程: