Javaweb-JSP实现数据传递和保存
文章目录
一、get与post区别
比较项 | get | post |
---|---|---|
缓存 | 可以 | 不可以 |
收藏为书签 | 可以 | 不可以 |
数据长度 | 有限制(URL 的最大长度是 2048 个字符) | 无限制 |
编码类型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。 |
对数据类型的限制 | 只允许 ASCII 字符 | 没有限制。也允许二进制数据 |
安全性 | 不安全 | 安全 |
可见性 | 数据在 URL 中对所有人都是可见的 | 数据不会显示在 URL 中 |
查询一般是get,增删改一般是post
二、equest对象常用方法
方法名称 | 说明 |
---|---|
String getParameter (String name) | 根据表单组件名称获取提交数据 |
String[ ] getParameterValues (String name) | 获取表单组件对应多个值时的请求数据 |
void setCharacterEncoding (String charset ) | 指定每个请求的编码 |
RequestDispatcher getRequestDispatcher (String path) | 返回一个 RequestDispatcher 对象,该对象的 forward( ) 方法用于转发请求 |
三、内置对象–out对象
实现数据的输出显示(没什么大用)
out.println("输出......")
JSP已经准备好的,可以直接使用的对象
请求对象:request
输出对象:out
响应对象:response
应用程序对象:application
会话对象:session
页面上下文对象:pageContext
页面对象:page
配置对象:config
异常对象:exception
内置对象–request对象
请求对象(主要用途,接收用户发过来的数据)
<input type="text" name="userName" />
//name属性名userName使用 发送与接收要对应 单个参数
String userName = request.getParameter("userName");
// 如果遇到多个name相同的情况(checkbox)
String userLoves = request.getParameterValues("userLoves");
四、中文乱码
JSP中默认使用的字符编码方式:iso-8859-1,不支持中文
常见的支持中文的编码方式
编码方式 | 收录的字符 |
---|---|
gb2312 | 常用简体汉字 |
gbk | 简体和繁体汉字 |
utf -8 | 所有国家需要的字符 |
解决中文乱码
设置请求和响应的编码方式
request.setCharacterEncoding(“utf-8”);
response.setCharacterEncoding(“utf-8”);
<%@ page language=“java” contentType=“text/html; charset=utf-8”%>
//post请求使用
request.setCharacterEncoding("utf-8"); //请求乱码
response.setCharacterEncoding("utf-8");//响应乱码
//get请求使用
new String(变量.getBytes("iso-8859-1"), "utf-8" );
或
配置tomcat\conf\server.xml文件Connector 标签中
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
get请求出现乱码
治标的方法:new String( s.getBytes(“iso-8859-1”), “utf-8” );
治本的方法:配置tomcat\conf\server.xml文件
URIEncoding=“UTF-8”
useBodyEncodingForURI=“true”
<Connector connectionTimeout="20000" port="8080"
protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
参数传递
request.getAttribute()||setAttribute()
注意:
必须配合转发
getAttribute()返回object类型
在请求中保存属性
public void setAttribute(String 属性名,Object 属性值) #引用类型
在请求中获取属性
public Object getAttribute(String name)
#Object 属性值 ,String name属性名
注意:
在使用属性值的时候要做非空判断,否则会出现空指针异常
它的返回值类型是Object类型,需要做数据类型的转换
五、转发重定向
//页面A中保存属性(然后跳转页面B)
request.setAttribute("msg", "信息");
request.getRequestDispatcher(B页面路径).forward(request, response);//跳转B
//页面B中获取属性 getAttribute获取为Object类型,需要类型转换
String mess=(String)request.getAttribute("mess");
转发与重定向
//转发
request.getRequestDispatcher(B页面路径).forward(request, response);
//重定向
response.sendRedirect("url")
区别:
1.转发url没有发生变化,而重定向会
2.转发不会重新发送请求,重定向会
3.转发可以携带参数,而重定向不可以
4.转发只可跳转当前项目路径,而重定向可以跳转任意url
六、九大内置对象
1、request对象
request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。
2、response对象
**response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。**response对象也具有作用域,它只在JSP页面内有效。
3、session对象
**session 对象是由服务器自动创建的与用户请求相关的对象。**服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。
4、application对象
**application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。**与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。
5、out 对象
**out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。**在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。
6、pageContext 对象
**pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。**pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。
7、config 对象
**config 对象的主要作用是取得服务器的配置信息。**通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。
8、page 对象
page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。
9、exception 对象
**exception 对象的作用是显示异常信息,只有在包含 isErrorPage=“true” 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。**excepation对象和Java的所有对象一样,都具有系统提供的继承结构。exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。
四大作用域
pageContext对象
如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。 从把变量放到pageContext开始,到jsp页面结束,你都可以使用这个变量
//存入值
pageContext.setAttribute("name","张三");
//获取值
String name = pageContext.getAttribute("name").toString();
servlet获取pageContext:
PageContext pageContext = JspFactory.getDefaultFactory().getPageContext(this, request, response, null, true, 8192, true);
request对象
如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过 程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。
//存入值
request.setAttribute("name","张三");
//获取值
String name = request.getAttribute("name").toString();
session对象
如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应。也就是说,只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话(session),而放到会话中的变量.
//存入值
session.setAttribute("name","张三");
//输出sessionID
out.print(session.getId());
//获取值
String name = session.getAttribute("name").toString();
//清空session中name键中的值
session.removeAttribute("name");
//设置60秒非session活动时间后清除session中的值
session.setMaxInactiveInterval(60);
//设置所有session失效
session.invalidate();
servlet中获取session:
HttpSession session=request.getSession();//获取session对象
application对象
如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。整个应用是指从应用启动,到应用结束。我们没有说“从服务器启动,到服务器关闭”是因为一个服务器可能部署多个应用,当然你关闭了服务器,就会把上面所有的应用都关闭了。application作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。与上述三个不同的是,application里的变量可以被所有用户共用。如果用户甲的操作修改了application中的变量,用户乙访问时得到的是修改后的值。这在其他scope中都是不会发生的,page, request, session都是完全隔离的,无论如何修改都不会影响其他
//存入值
application.setAttribute("name","张三");
//获取值
String name = application.getAttribute("name").toString();
servlet中获取:
ServletContext application = this.getServletContext();// 获取application
修改后的值。这在其他scope中都是不会发生的,page, request, session都是完全隔离的,无论如何修改都不会影响其他
//存入值
application.setAttribute("name","张三");
//获取值
String name = application.getAttribute("name").toString();
servlet中获取:
ServletContext application = this.getServletContext();// 获取application
标签:Javaweb,String,对象,request,传递,application,session,JSP,name
From: https://blog.csdn.net/QAZ412803/article/details/142513859