Servlet笔记--day02

Servlet笔记–day02

servlet中get()和post()的区别

get():

1.是数据请求到servlet上的一个方法,通过地址栏的方式来显示数据,所以安全性较低

2.传说时受长度限制,最多传递2048个字节

3.有缓存功能,可以把数据缓存到浏览器

4.传输数据的ASCII,不能传输二进制;传输文件时不能使用

post():

1.不会在地址栏中显示,安全性比较高

2.没有数据长度限制,随意的带参数

3.所有的数据都不缓存

4.可以传输二进制,传输文件的时候用它

注:用户注册时使用post(),不可使用get();删除和修改时可用get()

Servlet的请求转发与重定向

重定向

重定向:我们访问一个servlet时,它给我们重定向到另一个servlet.

类似于有一个中间商,A通过B去找C

特点:

1.至少是两次请求,第一次是直接访问的请求,第二次是经过重定向之后的请求,是新的请求。

2.不会带参数传递,也就是第一个请求可以拿到参数,第二个就不可以,例如下图中的例子

3.地址栏中的地址会发生变化

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("这是第一个servlet");
	    //重定向
		response.sendRedirect("TwoServlet");
		System.out.println(request.getParameter("id"));
	}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("这是第二个servlet");
    	request.getParameter("id");
		System.out.println(request.getParameter("id"));
	}

在网页中输入![![![![中![![![在在在这网页在这里插入中在这里插输入在这里插在这里插入图片描述

在这里插入图片描述

结果

在在这里插入图片描述

请求转发

当访问一个servlet时,它会把我们的请求转发给另一个(转发的时候要带数据转发)

request.getRequestDispatcher("/TwoServlet").forward(request, response);

特点:

1.地址栏中的内容不会发生变化

2.从头到页面是一次请求

3.转发的时候带数据转发

重定向与请求转发例子

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String do1=request.getParameter("do");
		if(do1.equals("list")) {
			response.sendRedirect("/ListServlet");
		}else if(do1.equals("del"))
		{
			request.getRequestDispatcher("/DeleteServlet").forward(request, response);
		}
		else if(do1.equals("add"))
		{
			request.getRequestDispatcher("/AddServlet").forward(request, response);
		}else if(do1.equals("update"))
		{
			request.getRequestDispatcher("/UpdateServlet").forward(request, response);
		}
	}

Servlet的4大域

把处理完毕的数据放到域中,使用的时候可以从域中去把数据去取出来。

由大到小:application(整个应用程序),session(一次会话),request(一次请求),pageContext(当前页面)

域中的数据都是有范围的,如果范围超出,就取不到数据了

PageContext:作用域在当前的页面上,超过当前页面就没有作用了。

request:一次请求,把数据存储在一次请求中,只要请求是一次,就可以拿到里面的数据

session:一次会话(只要不关闭浏览器,它就一直在),很重要,经常用,例:用户登录信息,购物车

application:整个应用程序的域,只要服务器不关闭,它就一直存在,在实现servlet或jsp中共享数据时用它

例子:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//PageContext域
		PageContext pageContext=JspFactory.getDefaultFactory().getPageContext(this, request, response,null, true, 8192, true);
		pageContext.setAttribute("username", "zhangsan");
		System.out.println(pageContext.getAttribute("username"));
		
		//request域
		request.setAttribute("username", "lisi");
		request.getAttribute("username");
		request.getRequestDispatcher("/UserServlet?do").forward(request, response);//请求转发
		
		//session域
		HttpSession session=request.getSession();
		session.setAttribute("username", "zll");
		System.out.println(session.getAttribute("username"));
	
		//application域
		ServletContext appliaContext=this.getServletContext();
		appliaContext.setAttribute("username", "lxy");
		System.out.println(appliaContext.getAttribute("username"));
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PageContext pageContext=JspFactory.getDefaultFactory().getPageContext(this, request, response,null, true, 8192, true);
		System.out.println(pageContext.getAttribute("username"));
		
		System.out.println(request.getAttribute("username"));
	
		HttpSession session=request.getSession();
		System.out.println("UserServlet获取的session"+session.getAttribute("username"));
	
		ServletContext appliaContext=this.getServletContext();
		System.out.println(appliaContext.getAttribute("username"));
		
	
	}
	}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值