java web B/s的简单实用基础总结(2)

Send.redirect跳转

Servelet方面doGe()t方法
public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
				
		response.sendRedirect("/ServletDemo/show.jsp?name=peter");//get传值
		
		
		
		

	}
跳转后的show.jsp
<%@ page language="java" import="java.util.*,javax.servlet.http.Cookie" pageEncoding="UTF-8"%>


  </head>
  
  <body>
    send.redirect传值name <%=request.getParameter("name") %><br/>  //getParameter()方法值
  
  </body>
</html>

forward跳转

request可以携带完整的对象,将其传递到一个JSP或Servlet中,这包含存入对象和取出对象,用到的两个方法setAttribute()和getAttribute().
注意这里存放的是对象,所以8中基本数据类型不行。
Despatch
获取RequestDespatch跳转的对象 必须使用完全相对的地址,即必须从相对路径的根目录写起,而不是从servlet目录开始写。
        RequestDispatcher rd=getServletContext().getRequestDispatcher("/showAtr.jsp");

然后使用跳转命令包含源servlet的request和response对象。
	rd.forward(request, response);

仔细观察会发现,sendRedirect方法地址是目标地址,而forward方法是源地址。

Serverlet代码
public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
		String name="abcd";
		request.setAttribute("name", name);
		RequestDispatcher rd=getServletContext().getRequestDispatcher("/showAtr.jsp");
		rd.forward(request, response);

}		

jsp可使用useBean和request两种方法获取。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<jsp:useBean id="name" scope="request" class="java.lang.String"></jsp:useBean>
<html>
  <head>
    
    <title>My JSP 'showAtr.jsp' starting page</title>


  </head>
  
  <body>
       useBean调用:<%=name %>
       request调用:<%=request.getAttribute("name") %>
  </body>
</html>
		

Session 和 cookie

Session信息存放在服务器上,一般有服务器设定,而cookie信息存放在客户端上,也就是本地电脑。cookie只能存放String信息,或者说cookie是一个特殊的文本文件。
cookie存放的时间可以有程序定义,而不是服务器定义。

session在java中只有接口,所以不能用new实例化,实例化是由request方法getSession
HttpSession userinfo=request.getSession();

然后将希望存放的对象存放到session
session.setAttribute("userName",userName);

引用session和request方法相似,主要request必须用Despatch方式跳转,而session也可以用Send方式跳转。
用UseBean只要scope="session"而不是scope="request"

cookie更简单一些
1 new cookie(name,value)创建cookie实例。
2 response.addCookie(cookie);将生成好的cookie加入应答。
3 request.getCookies()方法从客户端读入cookie数组。

下面代码将cookie和session写入一个Servlet实例

doGet()方法
public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {


		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
		
		String info ="SESSION 保存信息";                 //session实现
		HttpSession info2 = request.getSession(true);
		info2.setAttribute("info", info);
		
		String a="aaa";
		String b="bbb";
		Cookie  A = new Cookie("Aa",a);
		Cookie B = new Cookie("Bb",b);
		A.setPath("/");                       //cookie需要路径设置,这里指向项目根目录。
		B.setPath("/");
		response.addCookie(A);
		response.addCookie(B);
		
		
		response.sendRedirect("/ServletDemo/show.jsp?name=peter");
		
		
		
		

	}


跳转后show.jsp页面
<%@ page language="java" import="java.util.*,javax.servlet.http.Cookie" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<jsp:useBean id="info" scope="session" class="java.lang.String"></jsp:useBean>
<html>
  <head>

    
    <title>My JSP 'show.jsp' starting page</title>
    

  </head>
  
  <body>
   
    useBean调用session内容:<%=info %><br/>
    <%HttpSession userInfo = request.getSession(false); %>
    session调用内容:<%=userInfo.getAttribute("info") %><br/>
    
    <%
        Cookie c[] = request.getCookies();
        for(int i=0;i<c.length;i++)
        {
           out.print("名字:"+c[i].getName()+"值:"+c[i].getValue()+c.length);
        }
     %>
  </body>
</html>






















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值