一、HttpServletRequest (请求对象)
(一)HttpServletRequest对象
HttpServletRequest对象是
tomcat
为我们封装的对象
HttpServletRequest是
ServletRequest
接口的子接口
,
专门做
http
协议的请求对象
(二)常用方法
//设置编码格式
request.setCharacterEncoding("utf-8");
//获取请求方式
String method = request.getMethod();
//获取请求的编码格式
String characterEncoding = request.getCharacterEncoding();
//获取上下文路径
String contextPath = request.getContextPath();
//获取url
StringBuffer requestURL = request.getRequestURL();
//获取uri
String requestURI = request.getRequestURI();
(三)重要方法
二、HttpServletResponse(响应对象)
// response 自己做响应可以实现给浏览器写内容
// 1: 字节输出流 2:字符输出流
PrintWriter writer = response.getWriter();
// ServletOutputStream outputStream = response.getOutputStream();
writer.write("<h1>hello张三</h1>");
三、请求转发、重定向
// 1.请求转发
//绝对路径
//request.getRequestDispatcher("/request").forward(request,response);
//相对路径
//request.getRequestDispatcher("demo.html").forward(request,response);
// 2.重定向
//相对路径
//response.sendRedirect("request");
//response.sendRedirect("https://www.baidu.com");
//绝对路径
response.sendRedirect("/demo_day04/demo.html");
四、乱码处理
1
:处理
post
乱码,需要代码实现
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
2
:处理
get
请求乱码,需要修改server.xml
的配置
这一种方法只作用于
post
请求
注意
:
第一种与第二种可以结合使用
,GET
与
POST
都可以解决中文乱码问题
五、请求转发和重定向[面试]
请求转发和重定向,都可以实现页面跳转
请求转发 :
就是把请求转发出去,
地址栏不变,
只能转发到当前项目里
重定向:
重现给浏览器一个请求地址,
地址栏会发生变化,
可以是当前项目还可以是百度等站外地址
六、jsp
(一)概述
jsp全称
java Server Pages,
他和
servlet
技术一样
,
都是
sun
公司定义的一种动态
wab
资源技术。
jsp实际上就是一个Servlet。
jsp = html+java,
但是
jsp
更倾向于编写
html
代码
(二)jsp 实现原理
当访问
http://localhost:8080/day04_web01/index.jsp
地址的时候,
tomcat 接收到请求
tomcat 生成
index_jsp.java
文件
编译生成index_jsp.class
文件
响应页面
(三)jsp 基本语法
1. jsp的小脚本
<% java
代码
%>
2. <%! 声明
全局变量
%>
3. <%= 给页面输出内容
%>
(四)jsp 的三大指令
1.page
作用: 用于定义jsp
页面中的各种属性的
属性书写格式:
<%@ 指令名 属性 ="属性值" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
2.include
作用 :包含。可以在一个
jsp
页面中包含另一个
jsp
页面
3.taglib
作用:在
jsp
页面中导入
jstl
标签库
(五)jsp 的九个内置对象[面试常问]
内置对象 指的是在jsp
中不需要
new
就能使用的对象
指在JSP
的
<%=%>
和
<% %>
中可以直接使用的对象
对象名
|
类型
| 说明 |
request
| javax.servlet.http.HttpServletRequest | |
response
| javax.servlet.http.HttpServletResponse | |
session
|
javax.servlet.http.HttpSession
| 由session="true"开关 |
applicatio
| javax.servlet.ServletContext | |
exception
|
java.lang.Throwable
| 由isErrorPage="false"开关 |
page
|
java.lang.Object
当前对象
this
| 当前servlet实例 |
config
| javax.servlet.ServletConfig | |
out
|
javax.servlet.jsp.JspWriter
|
字符输出流,相当于
printWriter 对象
|
pageContext
|
javax.servlet.jsp.PageContext
| 上下文对象 |
四个域对象(表中加粗的):
功能都是实现数据共享的,四个域对象作用范围不同
pageContext:只在当前页面有效
request:只在一次请求内有效
session:在一次会话内有效。作用在浏览器和服务器之间,当浏览器或服务器关闭就失效了
application:整个项目都有效