JSP数据交互
编码格式:
一旦一种编码格式已经指定,另外一种编码格式如果不进行指定的话,默认都采用已经指定的编码格式
1.jsp页面本身的编码
pageEncoding:指定jsp页面本身的编码 contentType:浏览器渲染页面的时候采用的编码
<%request.setCharacterEncoding("utf-8");//设置的是request内部保存数据的格
//式,数据不包括url
%>
1.在request获取出来的数据的编码
以get方式提交数据时,对请求数据进行字符编码
String name=request.getParameter("name");
name=new String(name.getBytes("ISO-8859-1"),"utf-8");
2.改变url编码
2.浏览器渲染页面采用的编码:utf-8
3.服务器保存数据采用的编码(request)ISO-8859-1 编码格式来保存数据的
JSP内置对象:out,request,session...(JSP创建好的对象),共九个
表单提交的方式methon:
get:显示提交,输入的内容会显示在地址栏中 post:隐式提交,输入的内容不会显示在地址栏中
根据属性‘name’获取值:String name=request.getParameter("name");
重定向:当需要将文档移动到一个新的位置时,就需要使用JSP重定向了(页面地址会改变)
response.sendRedirect();最常用实现重定向的方法
中转站:(session),存值
session.getAttribute("name");//使用定义好的属性的值,是object类型的
转发:(页面地址不会改变)
RequestDispatcher rd =request.getRequestDispatcher("text1.jsp");
rd.forward(request, response);
当前显示的网页地址栏不会随着页面的跳转而改变,只会显示当前打开网页的地址
JS跳转:
out.print("<script>alert('用户名,密码输入不正确!'); location.href='sktext1.jsp';</script>");
内置对象:
out: 输出语句:out.println();
request:作用域:客户端的一次请求
request.setAttribute("name", name);//获取定义好的属性的值,范围是本页面和本页面的上一个页面(两个页面)
response:作用域:只在jsp页面有效
页面重定向:
1.response.sendRedirect(String location);
1.通过响应告诉浏览器该请求这样的一个地址
2.浏览器访问指定的url 302 代表告诉浏览器该重定向一个url了
2.客户端将重新发送请求到指定的url
session:会话跟踪,用个map类来保存数据,但仅限于个人
session.setAttribute("name", name);//获取定义好的属性的值,获取的一直是request.getParameter定义好的
application:全局变量,公交车
request,response和session的异同点:
1.使用的方法大致一样
2.作用范围不一样
四大作用域之page作用域(一般存页面访问次数)
1.page作用域:只在创建该对象的页面使用
四大作用域之session作用域(一般存页面登录信息)
1.session作用域:对应一次会话
对应的访问对象:session对象
四大作用域之application作用域(一般存页面访问次数)
1.对应整个web应用
页面跳转的三种方式:
1.js跳转
2.转发
3.重定向
九大内置对象中存取值的四大内置对象:
page:-》页面 只能当前页面访问,只要本页面有效,不管怎么样跳到其他页面都会存在
request(一般存表单):-》请求 只要不重定向,请求的值就一直会带到下一个页面
session:-》会话 只要浏览器不关闭(不换一个浏览器)session的值就不会丢失
*手动设置session的有效期,而不是关闭浏览器才销毁信息
session.setMaxInactiveInterval(10);-》10秒以后销毁信息
application:-》应用 服务器端关闭会丢失值(安全性不高,只有服务端不关闭,数据会一直保存)
报错形式:
报错语句:
1.404: 路径错误
任何资源文件只能在WebRoot中,用户也只能访问WebRoot中的内容
引用页面:include -》》 eg:<%@ include file="yanzheng.jsp"%>
Cookie:
Cookie 并不是内置对象,从它的首字母大写就能看出来是一个类 所以需要你自己去new对象
Cookie也是用来存取值的 它是存在客户端的
JSP保存东西 分两端 : 客户端 服务器端
Cookie有一个好处 缓解服务器的压力
代码示例:
//创建Cookie对象 只能保存字符串,不能保存复杂类型
Cookie ci = new Cookie("name","hello");
//设置Cookie的有效期
ci.setMaxAge(36);
//将Cookie对象保存至客户端
response.addCookie(ci);