文章目录
1. JSP内置对象
内置对象是由Web容器生成、加载的一组类的实例,不需要通过new关键字手动创建
内置对象的名称是JSP中的关键字,不能随便占用
个数:9个
- out – 页面输出
- request – 请求
- response – 响应
- session – 会话
- application – 应用程序
- page – 当前页面
- exception – 异常
- config – 初始化信息
- pageContext – 上下文,提供访问其他隐式对象的方法
- getRequest()
- getResponse()
- getSession()
- getOut()
- setAttribute()
- getAttribute()
- 
throws java.io.IOException, javax.servlet.ServletException {
final javax.servlet.jsp.PageContext pageContext;
javax.servlet.http.HttpSession session = null;
final javax.servlet.ServletContext application;
final javax.servlet.ServletConfig config;
javax.servlet.jsp.JspWriter out = null;
final java.lang.Object page = this;
javax.servlet.jsp.JspWriter _jspx_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;
2. 表单提交方式 GET vs POST
2.1 Get
- 在地址栏上显示提交的内容,信息不安全
- 表单默认的提交方式
- 允许的最长字符:255
2.2 Post
- 不会在地址栏上显示内容,信息安全,适合发送敏感数据
2.3 使用方式
(1) 表单以POST方式进行提交
(2) 使用request对象接收参数之前,先要设置字符编码
request.setCharacterEncoding(“utf-8”);
(3) 超链接会将传递的参数在地址栏上显示,所有地址栏的内容都以ISO-8859-1的形式进行编码,接收URL传参的方式如下
String name = request.getParameter(“username”);
name = new String(name.getBytes(“iso-8859-1”),”utf-8”);
(4) 使用Filter过滤器进行字符编码统一设置
3. request
-
浏览器提交的服务器的内容
-
常用方法
request.setCharacterEncoding("utf-8"); request.getParameter("username"); request.getParameterValues("hobby"); request.getRemoteAddr(); --获得客户端IP request.setAttribute("msg", "用户名或密码错误!"); request.getAttribute("msg"); request.getRequestDispatcher(“URL”).forward(request,response);
4. response
-
服务器返回给客户端的内容
-
常用方法
response.setCharacterEncoding("utf-8"); response.sendRedirect(“URL”);
5. 请求转发 VS 重定向
5.1 请求转发(常用)
- 1.转发由服务器内部实现
- 2.转发跨越多个页面、Servlet,但是只提交了一个请求,浏览器地址栏路径不变
- 3.作用:在多个页面、Servlet交互的过程中共享请求数据
- 4.转发过程由ServletContext或request对象实现
- 5.转发不能跳转到外网或其他项目
ServletContex 实现转发
//Servlet上下文转发 ,路径必须以 / 开始
//设置属性
getServletContext().setAttribute("context_var_name", "李云龙");
//转发
getServletContext().getRequestDispatcher("/ServletDemo05").forward(request, response);
getServletContext().getRequestDispatcher("/main.jsp").forward(request, response);
getServletContext().getRequestDispatcher("http://www.baidu.com").forward(request, response);// 不行
request 实现转发
//request对象转发 ,路径不一定以 / 开始
//设置属性
request.setAttribute("request_var_name", "楚云飞");
request.getRequestDispatcher("ServletDemo05").forward(request, response); //ok
request.getRequestDispatcher("main.jsp").forward(request, response); //ok
5.2 重定向
- 重定向发生在客户端
- 由浏览器重新发送新的请求,至少提交两次请求
- 之前请求中的数据会丢失,浏览器地址栏显示的是新的URL
- 重定向可以跳转到外网或其他项目
- 适用情况:注销、安全退出、用户名或密码错误之后的页面跳转
-
//重定向 response.sendRedirect("main.jsp"); response.sendRedirect("http://www.baidu.com");