(第5讲)同一用户的不同页面共享数据的四种方法
同一用户的不同页面共享数据的四种方法
1、cookie
2、sendRedirect
3、session
4、隐藏表单提交
1、cookie
服务器在客户端保存的用户信息,比如登录名,密码等就是cookie。
cookie作用:
(1)保存用户名、密码,在一定时间不用重复登录
(2)记录用户访问网站的喜好(比如有无背景音乐、网页背景色是什么)
(3)网站的个性化,比如定制网站的服务、内容
cookie 和 servlet一样,内部的数据结构是散列表。
cookie的使用:
(1)cookie的创建(在服务器创建):Cookie c = new Cookie(String name,String val);
(2)将一个cookie对象添加到客户端:response.addCookie(c);
(3)从客户端读取cookie到服务器:request.getCookies();
cookie的其他说明:
(1)可以通过IE--工具--Internet选项--隐私--高级:来启用或者禁用cookie
(2)由于cookie的信息是保存在客户端的,因此安全性不高
(3)cookie信息的生命周期可以在创建时设置(比如30s),从创建的那一刻起,就开始计时,
30s后cookie信息就无效了。
例子:在cookie1页面:创建并显示cookie信息
在cookie2页面:保存cookie信息并显示
在cookie3页面:删除cookie信息
程序如下:
-----------------------------------------------------------------------------------------------------------------------------------
/**
*新建cookie
*/
package com.weiya;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Cookie1 extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res){
try{
res.setContentType("text/html;charset=UTF-8");
PrintWriter pw = res.getWriter();
//当用户访问该页面时,就将信息创建到该用户的cookie中
//1、先在服务器端创建一个cookie
Cookie cookie = new Cookie("color1","red");
//2、设置该cookie存在的时间
cookie.setMaxAge(30);
//3、将该cookie写到客户端
res.addCookie(cookie);
pw.println("已经创建了cookie");
}catch(Exception e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
--------------------------------------------------------------------------------------------------------------------------
/**
* 读取cookie
*/
package com.weiya;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Cookie2 extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res){
try{
res.setContentType("text/html;charset=UTF-8");
PrintWriter pw = res.getWriter();
//从客户端得到所有cookie信息
Cookie[] cookie = req.getCookies();
int i=0;
if(cookie!=null){//如果cookie不为空,从中读取cookie
for(i=0;i<cookie.length;i++){
Cookie tem = cookie[i];
if(tem.getName().equals("color1")){
String val = tem.getValue();
pw.println("color1="+val);
break;
}
}
if(cookie.length==i)
{
pw.println("cookie过期" );
}
}else{
pw.println("不存在color这个cookie/或是已经过期了");
}
}catch(Exception e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
----------------------------------------------------------------------------------------------------------------------
/**
* 删除cookie
*/
package com.weiya;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Cookie3 extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res){
try{
res.setContentType("text/html;charset=UTF-8");
PrintWriter pw = res.getWriter();
//从客户端得到所有cookie信息
Cookie[] cookie = req.getCookies();
int i=0;
if(cookie!=null){//如果cookie不为空,从中读取cookie
for(i=0;i<cookie.length;i++){
Cookie tem = cookie[i];
if(tem.getName().equals("color1")){
tem.setMaxAge(0); //将该coolie删除
pw.println("已经删除了color1这个cookie");
break;
}
}
if(cookie.length==i)
{
pw.println("cookie过期" );
}
}else{
pw.println("不存在color这个cookie/或是已经过期了");
}
}catch(Exception e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
----------------------------------------------------------------------------------------------------------------------
部署文件如下:
<!--cookie开始-->
<servlet>
<servlet-name>Cookie1</servlet-name> <!--给你的servlet取名字,名字是任意的,且不是必须的-->
<servlet-class>com.weiya.Cookie1</servlet-class> <!-- 指明servlet路径,即包名+类名-->
</servlet>
<servlet-mapping>
<servlet-name>Cookie1</servlet-name> <!-- 与上边的映射,复制下来-->
<url-pattern>/cookie1</url-pattern> <!-- 这是在浏览器中输入的访问该servlet的URL-->
</servlet-mapping>
<servlet>
<servlet-name>Cookie2</servlet-name> <!--给你的servlet取名字,名字是任意的,且不是必须的-->
<servlet-class>com.weiya.Cookie2</servlet-class> <!-- 指明servlet路径,即包名+类名-->
</servlet>
<servlet-mapping>
<servlet-name>Cookie2</servlet-name> <!-- 与上边的映射,复制下来-->
<url-pattern>/cookie2</url-pattern> <!-- 这是在浏览器中输入的访问该servlet的URL-->
</servlet-mapping>
<servlet>
<servlet-name>Cookie3</servlet-name> <!--给你的servlet取名字,名字是任意的,且不是必须的-->
<servlet-class>com.weiya.Cookie3</servlet-class> <!-- 指明servlet路径,即包名+类名-->
</servlet>
<servlet-mapping>
<servlet-name>Cookie3</servlet-name> <!-- 与上边的映射,复制下来-->
<url-pattern>/cookie3</url-pattern> <!-- 这是在浏览器中输入的访问该servlet的URL-->
</servlet-mapping>
<!--cookie结束-->
----------------------------------------------------------------------------------------------------------------------
结果就是:
在网站中输入:http://localhost:8080/myWebSite/cookie1,可以看到浏览器输出:
已经创建了cookie
在网站中输入: http://localhost:8080/myWebSite/cookie3,可以看到浏览器输出:
color1=red(如果在30秒后刷新该页面,会显示:不存在color这个cookie/或是已经过期了)
在网站中输入: http://localhost:8080/myWebSite/cookie3,可以看到浏览器输出:
已经删除了color1这个cookie
2、HttpServletResponse类型对象的sendRedirect(String location)方法
只能传递字符串,不能传递对象,但是速度快;
用的时候需要注意:比如说 response.sendRedirect("welcome?uname=weiya");
(1)welcome代表你要跳转的那个Servlet的URL
(2)Servlet URL名 和 变量之间需要有 ?
(3)如果需要传递两个以上的值,他们之间需要用地址符 & 分开,比如:
response.sendRedirect("welcome?uname=weiya&passw=12");
(4)如果传递的是中文,可能是乱码,需要处理
例子:
———————————————————————————————————————
/**
* 登录界面
*/
package com.weiya;
import javax.servlet.http.*;
import java.io.*;
//解决乱码问题,只要把编码方式改一下就行
public class Login extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res)
{
try{
//解决中文乱码,解决方法一
res.setContentType("text/html;charset=UTF-8");
PrintWriter pw = res.getWriter();
//返回登录界面
pw.print("<html>");
pw.print("<body>");
pw.print("<h1>登录界面</h1>");
pw.print("<form action=loginc method=post>");//action后边写URL
pw.print("用户名:<input type=text name=uname><br>");
pw.print(" </input ><br>");
pw.print("密码:<input type=password name=pword><br>");
pw.print(" </input ><br>");
pw.print(" <input type=submit value= 提交><br>");
pw.print(" </input ><br>");
pw.print("</form>");
pw.print("</body>");
pw.print("</html>");
}catch(Exception e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res)
{
this.doGet(req,res);
}
}
————————————————————————————————————————
/**
* 用户验证Servlet
*/
package com.weiya;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
public class LoginC extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse res){
this.doPost(req,res);
}
public void doPost(HttpServletRequest req, HttpServletResponse res){
try{
//解决中文乱码,解决方法一
res.setContentType("text/html;charset=UTF-8");
//得到用户提交的用户名和密码,用req
//接收用户名和密码
String u = req.getParameter("uname");
String p = req.getParameter("pword");
if(u.equals("admin") && p.equals("123")){
res.sendRedirect("wel?uname="+u+"&upass="+p) ;
}
}else{ //不合法。跳转到登录界面
res.sendRedirect("login") ;
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
——————————————————————————————————————————
/**
* 欢迎界面
*/
package com.weiya;
import javax.servlet.http.*;
import java.io.*;
public class Wel extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res){
//得到从LoginC中传过来的信息
String u = req.getParameter("uname");
String p = req.getParameter("upass");
//这里的名字不能写错,要与loginC中传递参数一致
try{
res.setContentType("text/html;charset=UTF-8");
PrintWriter pw = res.getWriter();
pw.print("欢迎 " +u+" pass="+p);
}catch(Exception e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
结果就是:
在网站中访问:http://localhost:8080/myWebSite/login,可以看到浏览器输出:
登录界面
用户名:
密码:
提交
输入正确的用户名和密码,点击提交,浏览器显示:(欢迎界面)
欢迎,admin,pass=123
如果输入不正确的用户名和密码,点击提交,浏览器显示:(login界面)
登录界面
用户名:
密码:
提交
3、session
session的用法,即HttpSession类型的用法
(1)得到一个会话对象:HttpSession hs = request.getSession(true);
(2)给会话对象添加属性:hs.setAttribute(String name,Object val);
(3)得到某个属性:String name = hs.getAttribute(String name);
(4)删除某个属性:hs.removeAttribute(String name);
(5)得到服务器分配给该会话的ID:String id = hs.getId();
(6)删除全部的会话属性:hs.setMaxInactiveInterval(0);这个方法可以用来安全注销,是最安全的
实现会话跟踪但是只能实现一次请求
先看一个例子:
session1:提交信息给session2,这是第一次请求,form中的method=post
session2:提交信息给session3,这是第二次请求,请求方式为get(超链接)
程序如下:
——————————————————————————————————————————
* 1、提交信息给session2
*2、第一次请求
*/
package com.weiya;
import javax.servlet.http.*;
import java.io.*;
public class Session1 extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res)
{
try{
//解决中文乱码,解决方法一
res.setContentType("text/html;charset=UTF-8");
PrintWriter pw = res.getWriter();
//返回登录界面
pw.print("<html>");
pw.print("<body>");
pw.print("<form action=session2 method=post>");//action后边写URL
pw.print("想说的话:<input type=text name=msg><br>");
pw.print(" </input ><br>");
pw.print(" <input type=submit value= 提交><br>");
pw.print(" </input ><br>");
pw.print("</form>");
pw.print("</body>");
pw.print("</html>");
}catch(Exception e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res)
{
this.doGet(req,res);
}
}
————————————————————————————————————————
* 1、提交信息给session3
*2、第二次请求
*/
package com.weiya;
import javax.servlet.http.*;
import java.io.*;
public class Session2 extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res){
this.doPost(req,res);
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
try{
res.setContentType("text/html;charset=UTF-8");
PrintWriter pw = res.getWriter();
//得到想说的话
String msg = req.getParameter("msg");
pw.println("想说的话:"+msg);
HttpSession hs = req.getSession(true);输出ID,看每个页面的ID是否一样,判断是否为一个用户
String sessionId = hs.getId();
pw.println("会话ID:"+sessionId);
//转到session3
pw.println("<a href=\"session3\">连接到session3</a>");
}catch(Exception e){
e.printStackTrace();
}
}
}
—————————————————————————————————————————
* 1、获得与当前请求相关联的会话
*2、显示ID
*/
package com.weiya;
import javax.servlet.http.*;
import java.io.*;
public class Session3 extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res){
this.doPost(req,res);
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
try{
res.setContentType("text/html;charset=UTF-8");
PrintWriter pw = res.getWriter();
//得到想说的话
String msg = req.getParameter("msg");
pw.println("想说的话:"+msg);
HttpSession hs = req.getSession(true);输出ID,看每个页面的ID是否一样,判断是否为一个用户
String sessionId = hs.getId();
pw.println("会话ID:"+sessionId);
}catch(Exception e){
e.printStackTrace();
}
}
}
————————————————————————————————————————
部署文件如下:
<!--session1开始-->
<servlet>
<servlet-name>Session1</servlet-name> <!--给你的servlet取名字,名字是任意的,且不是必须的-->
<servlet-class>com.weiya.Session1</servlet-class> <!-- 指明servlet路径,即包名+类名-->
</servlet>
<servlet-mapping>
<servlet-name>Session1</servlet-name> <!-- 与上边的映射,复制下来-->
<url-pattern>/session1</url-pattern> <!-- 这是在浏览器中输入的访问该servlet的URL-->
</servlet-mapping>
<!--结束-->
<!--开始-->
<servlet>
<servlet-name>Session2</servlet-name> <!--给你的servlet取名字,名字是任意的,且不是必须的-->
<servlet-class>com.weiya.Session2</servlet-class> <!-- 指明servlet路径,即包名+类名-->
</servlet>
<servlet-mapping>
<servlet-name>Session2</servlet-name> <!-- 与上边的映射,复制下来-->
<url-pattern>/session2</url-pattern> <!-- 这是在浏览器中输入的访问该servlet的URL-->
</servlet-mapping>
<!--结束-->
<!--开始-->
<servlet>
<servlet-name>Session3</servlet-name> <!--给你的servlet取名字,名字是任意的,且不是必须的-->
<servlet-class>com.weiya.Session3</servlet-class> <!-- 指明servlet路径,即包名+类名-->
</servlet>
<servlet-mapping>
<servlet-name>Session3</servlet-name> <!-- 与上边的映射,复制下来-->
<url-pattern>/session3</url-pattern> <!-- 这是在浏览器中输入的访问该servlet的URL-->
</servlet-mapping>
<!--session3结束-->
在网站中访问:http://localhost:8080/myWebSite/session1,可以看到浏览器输出:
想说的话:
填写要写的话,点击提交,浏览器显示:
想说的话:i love you 会话ID:41B2F61F0FFE3BC2034FABF5A1698EAA 连接到session3
点击链接到session3,浏览器显示:
想说的话:null 会话ID:41B2F61F0FFE3BC2034FABF5A1698EAA
由此可以得出:
两次输出的ID相同,证明是同一客户,HttpSession对象顺利实现会话跟踪任务;(不论请求是post还是get,都可以实现会话跟踪)
但是两次取得并输出客户提交的信息过程中,第一次顺利取出,第二次却为null,验证了Http协议是一个“无状态”的协议,无法跨过多个请求。
现在考虑如何实现多个请求
index1: 输出一个画面,提交信息给index2,
index2:1、往会话对象中存入信息;2、提交信息给index3,
index3: 1、读取会话对象中已经存入的信息;2、提交信息给index4
index4:1、移除会话对象中已经存入的信息,并检验
程序如下:
———————————————————————————————————————
package com.weiya;
import javax.servlet.http.*;
import java.io.*;
public class Index1 extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res)
{
try{
//解决中文乱码,解决方法一
res.setContentType("text/html;charset=UTF-8");
PrintWriter pw = res.getWriter();
//返回登录界面
pw.print("<html>");
pw.print("<body>");
pw.print("<form action=index2 method=post>");//action后边写URL
pw.print("想说的话:<input type=text name=msg><br>");
pw.print(" </input ><br>");
pw.print(" <input type=submit value= 提交><br>");
pw.print(" </input ><br>");
pw.print("</form>");
pw.print("</body>");
pw.print("</html>");
}catch(Exception e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res)
{
this.doGet(req,res);
}
}
———————————————————————————————————————
* 1、将index1提交的信息传给index2,
*2、在index2中练习如何使用在会话对象中存入信息
*/
package com.weiya;
import javax.servlet.http.*;
import java.io.*;
public class Index2 extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res){
this.doPost(req,res);
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
try{
res.setContentType("text/html;charset=UTF-8");
PrintWriter pw = res.getWriter();
//得到想说的话
String msg = req.getParameter("msg");
pw.println("想说的话:"+msg);
//在会话对象中存入信息
HttpSession hs = req.getSession(true);//得到session
hs.setAttribute("msg",msg);//将得到的信息存入会话对象中
//输出ID,看每个页面的ID是否一样,判断是否为一个用户
String sessionId = hs.getId();
pw.println("会话ID:"+sessionId);
//转到index3
pw.println("<a href=\"index3\">连接到index3</a>");
}catch(Exception e){
e.printStackTrace();
}
}
}
———————————————————————————————————————
/**
* 1、index2将信息提交给index3
*2、在index3中练习如何去除会话对象中存入的信息
*/
package com.weiya;
import javax.servlet.http.*;
import java.io.*;
public class Index3 extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res){
this.doPost(req,res);
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
try{
res.setContentType("text/html;charset=UTF-8");
PrintWriter pw = res.getWriter();
//从会话对象中读取信息,并输出
HttpSession hs = req.getSession(true);//得到session
String msg = (String)hs.getAttribute("msg");//读取信息
pw.println("想说:"+msg);
//输出ID,看每个页面的ID是否一样,判断是否为一个用户
String sessionId = hs.getId();
pw.println("会话ID:"+sessionId);
//转到index4
pw.println("<a href=\"index4\">连接到index4</a>");
}catch(Exception e){
e.printStackTrace();
}
}
}
————————————————————————————————————————
/**
* 1、index3将信息提交给index4
*2、在index4中练习如何移除会话对象中存入的信息
*/
package com.weiya;
import javax.servlet.http.*;
import java.io.*;
public class Index4 extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res){
this.doPost(req,res);
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
try{
res.setContentType("text/html;charset=UTF-8");
PrintWriter pw = res.getWriter();
//从会话对象中移除信息,并输出查看是否移除
HttpSession hs = req.getSession(true);//得到session
hs.removeAttribute("msg");//移除信息
String msg = (String)hs.getAttribute("msg");//读取信息
pw.println("想说:"+msg);
//输出ID,看每个页面的ID是否一样,判断是否为一个用户
String sessionId = hs.getId();
pw.println("会话ID:"+sessionId);
}catch(Exception e){
e.printStackTrace();
}
}
}
在网站中访问:http://localhost:8080/myWebSite/index1,可以看到浏览器输出:
想说的话:
填写要写的话,点击提交,浏览器显示:
想说的话:i love you 会话ID:41B2F61F0FFE3BC2034FABF5A1698EAA 连接到index3
点击链接到index3,浏览器显示:
想说:i love you 会话ID:41B2F61F0FFE3BC2034FABF5A1698EAA 连接到index4
点击链接到index4,浏览器显示:
想说:null 会话ID:41B2F61F0FFE3BC2034FABF5A1698EAA
由此可以得出:
1、三次输出的ID相同,证明是同一客户,是同一个HttpSession对象。
2、HttpSession对象的 setAttribute(String name ,Object value); 方法可以在会话对象中存入数据;
3、HttpSession对象的 getAttribute(String name); 方法可以在会话对象中读出数据;
4、HttpSession对象的 removeAttribute(String name); 方法可以在会话对象中移除数据;
5、HttpSession对象可以跨越多个请求,在会话对象被销毁之前,只要信息没有被移除,那么存放在会话对象中的数据就可以被同一客户的多个请求所共享。
cookie 和 servlet 的区别:
(1)存在的位置
cookie保存在客户端,session保存在服务器端
(2)安全性
比较而言,cookie的安全性比session要弱一点
(3)网络传输量
cookie通过网络在客户端与服务器端传输;
而session保存在服务器端,不需要传输。
(4)生命周期(以20分钟为例)
cookie 的生命周期是累计的,从创建开始计时,20mins后cookie的生命周期结束,cookie就无效了;
session的生命周期是间隔的,从创建开始计时,如果在20mins内,没有访问过session,则session信息无效;
但是如果在20mins内,访问过session ,那么他的生命周期就重新计算。
除此之外,关机会造成session生命周期结束,但是对cookie没有任何影响。
4、隐藏表单提交
<form action=...>
<input type=hidden name=a value=b></input>
</form>
例子:
HiddenForm1: 输出一个画面,提交信息给hiddenform2,
HiddenForm2:在hiddenform2页面 显示hiddenform1页面提交的信息
——————————————————————————————————————————————————————————
/**
* 隐藏表单的提交页面
*/
package com.weiya;
import javax.servlet.http.*;
import java.io.*;
public class HiddenForm1 extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res)
{
try{
res.setContentType("text/html;charset=UTF-8");
PrintWriter pw = res.getWriter();
String test = "abc";
//返回登录界面
pw.print("<html>");
pw.print("<body>");
pw.print("<h1>登录界面</h1>");
pw.print("<form action=hiddenform2 method=post>");//action后边写URL
pw.print("用户名:<input type=text name=uname><br>");
pw.print(" </input ><br>");
pw.print("密码:<input type=password name=pword><br>");
pw.print(" </input ><br>");
// pw.print(" <input type=hidden name=sex value=test><br>");
pw.print(" <input type=hidden name=sex value="+test+"><br>");
pw.print(" </input ><br>");
pw.print(" <input type=submit value= 提交><br>");
pw.print(" </input ><br>");
pw.print("</form>");
pw.print("</body>");
pw.print("</html>");
}catch(Exception e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res)
{
this.doGet(req,res);
}
}
——————————————————————————————————————————————————————————
/**
* 隐藏表单的接收页面
*/
package com.weiya;
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
public class HiddenForm2 extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res){
this.doPost(req,res);
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
try{
req.setCharacterEncoding("UTF-8");
res.setContentType("text/html;charset=UTF-8");
PrintWriter pw = res.getWriter();
//得到用户名、密码和隐藏的性别
String u = req.getParameter("uname");
String p = req.getParameter("pword");
String sex = req.getParameter("sex");
pw.println("用户名:"+u);
pw.println("密码:"+p);
pw.println("性别:"+sex);
}catch(Exception e){
e.printStackTrace();
}
}
}
在网站中访问:http://localhost:8080/myWebSite/hiddenform1,可以看到浏览器输出:
登录界面
用户名:
密码:
填写之后,点击提交,浏览器显示:
用户名:weiya 密码:1234 性别:abc
(第5讲)同一用户的不同页面共享数据的四种方法相关推荐
- php页面跳转的方法,PHP实现页面跳转的四种方法
PHP实现页面跳转的四种方法 发布时间:2020-05-20 11:36:01 来源:亿速云 阅读:172 作者:Leah 今天小编就为大家分享PHP实现页面跳转的四种方法.小编觉得挺实用的,为此分享 ...
- HTML5 移动页面自适应手机屏幕四种方法(禁止html5手机端双击页面放大的问题)
1.使用meta标签:viewport H5移动端页面自适应普遍使用的方法,理论上讲使用这个标签是可以适应所有尺寸的屏幕的,但是各设备对该标签的解释方式及支持程度不同造成了不能兼容所有浏览器或系统. ...
- (一)页面跳转的四种方法及页面跳转中相对路径问题
转载https://www.cnblogs.com/hrone/p/8067036.html navigator导航组件 首先页面跳转的相对路径中经常出现,例如" test/test&quo ...
- JavaScript向页面输出内容的四种方法
javascript可以通过不同的方式来输出数据 1.使用window.alert()输出警告框 <!DOCTYPE html> <html lang="en"& ...
- 本地html自动跳转,HTML页面跳转的5种方法
下面列了五个例子来详细说明,这几个例子的主要功能是:在5秒后,自动跳转到同目录下的hello.html(根据自己需要自行修改)文件. 1) html的实现 优点:简单 缺点:Struts Tiles中 ...
- 将页面元素隐藏的10种方法
在Web开发中,隐藏页面元素使其视觉不可见是一个非常常见的需求.为了实现这一目标,我们通常会采用多种方法,最常用的例如CSS的display属性,只要设置为node即可隐藏元素. 本文将通过对当前所有 ...
- Jsp页面跳转和js控制页面跳转的几种方法
Jsp 页面跳转的几种方法 1. RequestDispatcher.forward() 在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servle ...
- JQuery实现页面跳转 页面跳转的七种方法
<mce:script type="text/javascript"><!-- $(function(){ var pn = $("#gotopagen ...
- php伪造页面url地址,php 伪造HTTP_REFERER页面URL来源的三种方法
php获取当前页面的前一个页面URL地址,即当前页面是从哪个页面链接过来的,可以使用$_SERVER['HTTP_REFERER'],但是这个来源页面的URL地址是可以被伪造和欺骗的,本文章向大家介绍 ...
最新文章
- 波士顿动力CEO:不排斥军方订单,就想你粗暴地对待机器狗
- 019_Vue子组件向父组件传值
- java跳过_java跳过https证书直接请求工具类
- python路由编程_Python Django基础二之URL路由系统
- liunxC下零碎知识点的总结
- vb循环 Do While…Loop 语句/Do Until…Loop语句
- mysql 恢复root用户_mysql误删root用户恢复方案
- c语言辗转相除法求最大公约数_趣味探究:妙法求“最大公因数”,比书上难一点,你敢挑战吗?(适合56年级)...
- JMeter性能测试中如何使用“用户参数”实现参数化
- android 原生 电子邮件 应用 发送邮件附带 中文名附件时 附件名称乱码问题解决...
- 一家旅游互联网公司技术的发展史
- 微信小程序开发者工具提示“网络连接失败”
- qml 应用程序图标设置和打包——qml
- ES8JC-ASEMI快恢复二极管ES8JC
- 计算机编程语言排行榜—TIOBE世界编程语言排行榜(2020年3月份最新版)
- 视频号、抖音、快手狙击付费直播
- table()函数用法(转载)
- Ubuntu 编译时出现错误cc1: error: ‘-fcf-protection’ is not compatible with this target
- 数据库设计(结构化设计方法)——学生考试管理系统
- 微信公众号分享功能开发体验
热门文章
- new、new()和new[]三者的区别
- [附源码]Python计算机毕业设计SSM酒店客户管理系统(程序+LW)
- 华为畅享云Z5g服务权益礼包_【【预订享优惠】华为畅享Z 5G】价格_参数_图片_怎么样 - 华为商城...
- html刮奖特效,jQuery+HTML5手机刮刮乐刮奖代码
- CdTe量子点修饰纳米/ZnO纳米棒/GaN发光二极管/敏化纳米TiO2的制备
- 最近找工作的行情大家来交流交流
- 关于DOS界面net start MySQL 启动失败的解决办法
- STM32 堆栈溢出检测
- 西北大学计算机课表,西北大学课表.doc
- 大胡子改变世界:那些语言之父们