Servlet--传参和接参

原创 2015年07月08日 10:09:59
OK,现在基本的Servlet接口和常用类都整理的差不多的,本篇博客开始整理Servlet和页面的交互。
1,接参

以下几个常用的方法:
getParameter public String getParameter(String name);
以一个String返回指定的参数的值,如果这个参数不存在返回空值。例如,在一个HTTP Servlet中,这个方法会返回一个指定的查询语句产生的参数的值或一个被提交的表单中的参数值。如果一个参数名对应着几个参数值,这个方法只能返回通过getParameterValues方法返回的数组中的第一个值。
特别要注意:如果这个参数有(或者可能有)多个值,你只能使用getParameterValues方法。

getParameterNames public Enumeration getParameterNames();
返回所有参数名的String对象列表,如果没有输入参数,该方法返回一个空值。

getParameterValues public String[] getParameterValues(String name);
通过一个String对象的数组返回指定参数的值,如果这个参数不存在,该方法返回一个空值。


另外还有一个就是getParameterMap()方法,但是我自己去翻API,竟然没有找见,难道是API过时了?先不管,这个方法返回的所有的参数和参数的值,被封装成了一个map返回。

<%@ 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>Servlet表单提交</title>


</head>

<body>
	<form action="<%=path%>/LinkinServlet" method="POST">
		姓名:<input type="text" name="userName" />
		<br />
		年龄:<input type="text" name="passWord" />
		<br />
		学校:<input type="checkbox" name="school" value="学校1" />学校1
		<input type="checkbox" name="school" value="学校2" />学校2
		<input type="checkbox" name="school" value="学校3" />学校3
		<input type="checkbox" name="school" value="学校4" />学校4
		<input type="submit" value="提交" name="tijiao"/>
	
	
	</form>
</body>
</html>
package linkin;

import java.io.IOException;
import java.util.Arrays;
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;

public class LinkinServlet extends HttpServlet
{
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
	{
		req.setCharacterEncoding("UTF-8");
		String userName = req.getParameter("userName");
		System.out.println(userName);
		String[] schools = req.getParameterValues("school");
		for (String school : schools)
		{
			System.out.println(school);
		}

		Enumeration enumeration = req.getParameterNames();
		while (enumeration.hasMoreElements())
		{
			String name = (String) enumeration.nextElement();
			System.out.println(name + ":" + req.getParameter(name));
		}

		Map<String, String[]> map = req.getParameterMap();
		for (String key : map.keySet())
		{
			System.out.println(Arrays.asList(map.get(key)));
		}
		for (Map.Entry<String, String[]> entry : map.entrySet())
		{
			System.out.println(entry.getKey() + ":" + Arrays.asList(entry.getValue()));
		}
		System.out.println(req.getMethod());
		System.out.println(req.getQueryString());
		Enumeration enumeration1 = req.getHeaderNames();
		while (enumeration1.hasMoreElements())
		{
			System.out.println(enumeration1.nextElement() + ":" + req.getHeader((String) enumeration1.nextElement()));
		}
		/*
		 * host:keep-alive
		 * content-length:max-age=0
		 * accept:http://localhost:8080
		 * user-agent:application/x-www-form-urlencoded
		 * referer:gzip, deflate
		 * accept-language:JSESSIONID=4214F4CE399E02730C3219CF0BD83623
		 */
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
	{
		this.doGet(req, resp);
	}

}
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	
	
	<servlet>
		<servlet-name>LinkinServlet</servlet-name>
		<servlet-class>linkin.LinkinServlet</servlet-class>
		<init-param>
			<param-name>name</param-name>
		<param-value>LinkinPark...</param-value>
		</init-param>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>LinkinServlet</servlet-name>
		<url-pattern>/LinkinServlet</url-pattern>
	</servlet-mapping>

</web-app>

2,传参

setAttribute public void setAttribute(String name, Object object);
这个方法在请求中添加一个属性,这个属性可以被其他可以访问这个请求对象的对象(例如一个嵌套的Servlet)使用。

传参一般用setAttribute() 方法,不管是request,还是session,还是application都可以用这个方法将值放进去,不同的只是放入的范围不同而已。

package linkin;

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 LinkinServlet extends HttpServlet
{
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
	{
		req.setCharacterEncoding("UTF-8");
		String userName = req.getParameter("userName");
		String passWord = req.getParameter("passWord");
		req.setAttribute("userName", userName);
		req.getSession().setAttribute("passWord", passWord);
		req.getRequestDispatcher("/Linkin1.jsp").forward(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
	{
		this.doGet(req, resp);
	}

}
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	
	
	<servlet>
		<servlet-name>LinkinServlet</servlet-name>
		<servlet-class>linkin.LinkinServlet</servlet-class>
		<init-param>
			<param-name>name</param-name>
		<param-value>LinkinPark...</param-value>
		</init-param>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>LinkinServlet</servlet-name>
		<url-pattern>/LinkinServlet</url-pattern>
	</servlet-mapping>

</web-app>
<%@ 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>Servlet表单提交</title>


</head>

<body>
	<form action="<%=path%>/LinkinServlet" method="POST">
		姓名:<input type="text" name="userName" />
		<br />
		年龄:<input type="text" name="passWord" />
		<br />
		学校:<input type="checkbox" name="school" value="学校1" />学校1
		<input type="checkbox" name="school" value="学校2" />学校2
		<input type="checkbox" name="school" value="学校3" />学校3
		<input type="checkbox" name="school" value="学校4" />学校4
		<input type="submit" value="提交" name="tijiao"/>
	
	
	</form>
</body>
</html>

<%@ 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>Servlet显示数据</title>


</head>

<body>
	OK,成功跳转到页面。
	姓名:<%=request.getAttribute("userName") %>;
	年龄:<%=session.getAttribute("passWord") %>
</body>
</html>







版权声明:本文为博主原创文章,欢迎大家转载。如有错误请多多指教。

向Servlet中传递参数

在向服务器发送的请求中,可以附带不同的条件,让服务器响应出响应的结果,这个附带条件的过程称为传递参数。通过url传参这种方式是最常见的参数传递方式http://localhost:8080/proje...
  • xinluke
  • xinluke
  • 2016年09月24日 15:47
  • 2199

request的转向以及servlet之间参数的传递

request的转向1.sendRedirect() 概念:重定向 代码:sendRedirec(“welcome?uname=shunping”);//问号之前为任何一个URL,后面是...
  • lingadobe
  • lingadobe
  • 2016年11月07日 23:11
  • 1747

servlet传参

  • 2012年12月09日 23:05
  • 329KB
  • 下载

Servlet 重定向传参

servlet重定向一般采用response.sendRedirect()来处理,要明白其中的细节,还需了解HTTP协议的一些内容,简单点就是要了解HTTP请求报头、HTTP状态码、HTTP响应报头的...
  • a137268431
  • a137268431
  • 2015年02月02日 16:06
  • 762

servlet中传参方法总结

2010-07-07 16:42 7726人阅读 评论(0) 收藏 举报 方法一 1开始说第一个问题,路径问题 .主要是form表单对应的action里面的路径和web.xml里面的url-pat...
  • Ezreal_geng
  • Ezreal_geng
  • 2017年06月21日 21:48
  • 112

struts2是否可以通过超链接传参

  • 2009年11月26日 10:33
  • 20KB
  • 下载

birt drill-through钻取(超链接)传参乱码问题解决方案

今天信心满满的把人生第一次做的报表部署到项目中,在birt eclipse中测试的时候不会出现乱码,但是部署到项目中就为什么会乱码呢。 报表之间传递参数默认不是utf-8,所以在传递中文时候会出...
  • qq_30579779
  • qq_30579779
  • 2015年11月21日 14:25
  • 1044

WebApi接口传参不再困惑:传参详解

一、get请求 对于取数据,我们使用最多的应该就是get请求了吧。下面通过几个示例看看我们的get请求参数传递。 1、基础类型参数 [HttpGet] public string GetAllC...
  • leeyue_1982
  • leeyue_1982
  • 2016年05月03日 16:50
  • 27400

C#中WebApi接口传参不再困惑:传参详解

前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料。如今,使用WebApi也有段时间了,今天就记录下API接口传参的一些方式方法,算是一个笔记,也希望能帮初学者少走弯路。本...
  • xxdddail
  • xxdddail
  • 2016年04月06日 17:50
  • 6509

pentaho report-designer 报表中添加相应的超链接及传参

pentaho report-designer 报表中添加相应的超链接及传参 以前都是自己学习技术,自己做笔记都是自己看,最近有点想写博客,这是我第一篇博客。 刚换了新工作,新公司要求使用penta...
  • u010443352
  • u010443352
  • 2016年07月17日 20:15
  • 2120
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Servlet--传参和接参
举报原因:
原因补充:

(最多只允许输入30个字)