【request】request获取表单数据,乱码,转发,防盗链、

1、request的方法一览

package com.xiaozhi.controller;

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 ServletDemo extends HttpServlet
{
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException
	{
		System.out.println(request.getRequestURI());///HelloJavaWeb/servlet/ServletDemo     
	    System.out.println(request.getRequestURL());//http://localhost:8080/HelloJavaWeb/servlet/ServletDemo   
	    //用在权限设置上  
	    System.out.println(request.getQueryString());//name=xiaozhi
	    System.out.println(request.getRemoteAddr());//127.0.0.1
	    System.out.println(request.getRemoteHost());//127.0.0.1
	    System.out.println(request.getRemotePort());//51521//这个端口是变化的
	    System.out.println(request.getMethod());//GET
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException
	{
		
	}
	
}
2、request获取表单数据

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
    <form action="/HelloJavaWeb/servlet/ServletDemo" method="post">
    	用户名1:<input type="text" name="username"><br/>
    	用户名2:<input type="text" name="username"><br/>
    	密码:<input type="text" name="password"><br/>
    	<input type="submit" value="提交"><br/>
    </form>
  </body>
</html>

ServletDemo.java

package com.xiaozhi.controller;

import java.io.IOException;
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 com.xiaozhi.bean.User;

public class ServletDemo extends HttpServlet
{
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException
	{
		System.out.println("-------------");
        test2(request);  
	}

	//获取表单数据
	public void test2(HttpServletRequest request)
	{
		String value=request.getParameter("username");
        //开发原则:先检查再使用
        if(value != null && !value.trim().equals(""))
        	System.out.println(value);  
        
        //获取的是一个数组
        String value2[]=request.getParameterValues("username");  
        for(String v:value2){  
            System.out.println("username="+v);  
        }  
        
        
        Enumeration e=request.getParameterNames ();  
        while(e.hasMoreElements()){  
            String name=(String) e.nextElement();  
            value=request.getParameter(name);  
            System.out.println(name+"="+value);  
        }  

        
        //使用Map来填充bean
        Map<String,String[]> map=request.getParameterMap();  
        User user=new User();  
        try {  
            BeanUtils.populate(user, map);
        } catch (Exception e1) {  
            e1.printStackTrace();  
        } 
        System.out.println();
        System.out.println(user);
	}

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

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException
	{
		
	}
	
}

3、request乱码问题解决

package com.xiaozhi.controller;

import java.io.IOException;
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 com.xiaozhi.bean.User;

public class ServletDemo extends HttpServlet
{
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException
	{
		//get方式//手工解决
		String name=request.getParameter("username");  
		System.out.println(new String(name.getBytes("ISO-8859-1"),"utf-8")); 
		
	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException
	{
		//request乱码  
        //post方式//设置request  
		request.setCharacterEncoding("UTF-8");  
		String name=request.getParameter("username");  
		System.out.println(name);  
	}
}

4、request实现转发

package com.xiaozhi.controller;

import java.io.IOException;
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 com.xiaozhi.bean.User;

public class ServletDemo extends HttpServlet
{
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException
	{
		request.getRequestDispatcher("/index.jsp").forward(request, response);
		
	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException
	{
	}
}

5、request实现防盗链

inde.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
     <a href="/HelloJavaWeb/servlet/ServletDemo3">高考成绩查询</a>
  </body>
</html>

ServletDemo3

package com.xiaozhi.controller;

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 ServletDemo3 extends HttpServlet
{
	//防盗链
	@Override
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException
	{
		String referer = request.getHeader("referer");
		//从qq群共享连接,直接访问//不是从我的网站进入
		if (referer == null || !referer.startsWith("http://localhost"))
		{
			response.sendRedirect("/HelloJavaWeb/index.jsp");
			return;
		}
		response.getOutputStream().write("高考成绩查询<br/>".getBytes());  
		response.getOutputStream().write("输入学生证号<br/>".getBytes());  
		response.getOutputStream().write("输入身份证号<br/>".getBytes());  
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException
	{
	}
}

6、得到项目路径

request.getContextPath();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值