request基础,以及防盗链

本文详细解析了Servlet中请求处理的核心方法,包括参数获取、属性设置、转发与重定向等,并通过实例演示了如何使用这些方法进行数据处理与页面跳转,同时提供了解决乱码问题的方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总结:

request的比较重要的方法
request.getParameter
request.getAttribute
request.getSession.setAttribute/request.getSession.getAttribute
request.getCookies

 request.getContextPath()获取工程名

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

表单提交方法对应doPost和doGet

一个是参数Parameter
一个是属性Attribute
String value = request.getParameter("username");
System.out.println(value);
//获取表单里的数据


request.setAttribute("data", "1");
String data = (String) request.getAttribute("data");
System.out.println(data);
//获取域里面的数据

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

转发request.getRequestDispatcher("/mesage.jsp").forward(request, response);

重定向response.sendDirect()

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


简单的方法

package cn.itcast.request;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class RequestDemo1 extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
	System.out.println(request.getRequestURI());//   /day06/servlet/requestDemo1
	System.out.println(request.getRequestURL());//   http://localhost:8080/day06/servlet/requestDemo1
	//用在权限设置上
	System.out.println(request.getQueryString());//
	System.out.println(request.getRemoteAddr());//127.0.0.1得到客户端ip地址
	System.out.println(request.getRemoteHost());//返回127.0.0.1,因为没有在DNS中注册
	System.out.println(request.getRemotePort());//远程端口号49300
	System.out.println(request.getMethod());//GET ,在表单里可为POST
	
	
	}

}


 

获取请求头

 

package cn.itcast.request;

import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.util.Enumeration;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;

import cn.itcast.User;

public class RequestDemo2 extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//获取参数
		String value=request.getParameter("username");//parameter参数
		System.out.println(value);
		
		Enumeration e=request.getParameterNames ();
		while(e.hasMoreElements()){
			String name=(String) e.nextElement();
			value=request.getParameter(name);
			System.out.println(name+"="+value);
		}
		
		String value2[]=request.getParameterValues("username");
		for(String v:value2){
			System.out.println("u="+v);
		}
		
		Map<String,String[]> map=request.getParameterMap();
		User user=new User();
		try {
			BeanUtils.populate(user, map);//用map集合填充bean//populate填充
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		System.out.println(user);
		
		
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(req, resp);
	}

	//获取请求头相关数据
	private void test1(HttpServletRequest request) {
		
		String headValue=request.getHeader("Accept-Encoding");
		 
		Enumeration e=request.getHeaderNames();
		while(e.hasMoreElements()){
			String value=(String) e.nextElement();
			System.out.println(value);
		}
		
		e=request.getHeaderNames();
		while(e.hasMoreElements()){
			String name=(String) e.nextElement();
			String value=request.getHeader(name);
			System.out.println("name="+name+",value="+value);
		}
	}

}


 

request.getParameter

package cn.itcast.request;

import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.util.Enumeration;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;

import cn.itcast.User;

public class RequestDemo3 extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		request.getParameter("username");
		request.getParameter("password");
		request.getParameter("gender");
		request.getParameter("city");
		String[] likes=request.getParameterValues("likes");
		for(int i=0;likes!=null && i<likes.length;i++){
			System.out.println(likes[i]);
		}
		request.getParameter("description");
		
		request.getParameter("id");
		
		
		
		
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(req, resp);
	}
}


学完方法就来解决乱码问题,中国人的悲哀

 

package cn.itcast.request;

import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
import java.util.Enumeration;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;

import cn.itcast.User;

public class RequestDemo4 extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		
		System.out.println(request.getCharacterEncoding());
		//test3(request, response);
		
		//System.out.println(username);
		
		
	}

	没人会去这么干
	private void test3(HttpServletRequest request, HttpServletResponse response)
			throws UnsupportedEncodingException, IOException {
		request.setCharacterEncoding("UTF-8");
		String username=request.getParameter("username");
		
		response.setCharacterEncoding("gb2312");
		response.setContentType("text/htm;charset=gb2312");
		response.getWriter().write(username);
	}
	
	
	private void test2(HttpServletRequest request)
			throws UnsupportedEncodingException {		
		//解决POST乱码
		request.setCharacterEncoding("UTF-8");
		String username=request.getParameter("username");
		System.out.println(username);
	}

	private void test1(HttpServletRequest request)
			throws UnsupportedEncodingException {
	// 解决Get方式提交的乱码
		String username2=request.getParameter("username2");
		username2=new String(username2.getBytes("iso-8859-1"),"UTF-8");
		System.out.println(username2);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(req, resp);
	}
}



转发(重要)

 

package cn.itcast.request;

import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
import java.util.Enumeration;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;

import cn.itcast.User;

public class RequestDemo5 extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		String message="aaaaaa";
		request.setAttribute("data", message);
		request.getRequestDispatcher("/mesage.jsp").forward(request, response);
				
		//System.out.println(username);
		
		
	}
	
	



	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(req, resp);
	}
}


include

 

package cn.itcast.request;

import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
import java.util.Enumeration;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;

import cn.itcast.User;

public class RequestDemo8 extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		//request.getRequestDispatcher("/public/head.jsp").include(request, response);
		response.getOutputStream().write("kkkkkk".getBytes());
		//response.getWriter().write("hahaha");
		//request.getRequestDispatcher("/public/foot.jsp").include(request, response);
		

		
		
	}
	
	



	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(req, resp);
	}
}

防盗链

referer是指当前网页

package cn.itcast.request;

import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
import java.util.Enumeration;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;

import cn.itcast.User;

public class RequestDemo9 extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		String referer=request.getHeader("referer");
		if(referer==null && !referer.startsWith("http://localhost"))
		{
			response.sendRedirect("/day06/index.jsp");
			return;
		}
		response.getOutputStream().write("高考成绩查询".getBytes());
	}
	
	



	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(req, resp);
	}
}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值