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返回。

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>Servlet表单提交</title>
  13.  
  14. </head>
  15.  
  16. <body>
  17. <form action="<%=path%>/LinkinServlet" method="POST">
  18. 姓名:<input type="text" name="userName" />
  19. <br />
  20. 年龄:<input type="text" name="passWord" />
  21. <br />
  22. 学校:<input type="checkbox" name="school" value="学校1" />学校1
  23. <input type="checkbox" name="school" value="学校2" />学校2
  24. <input type="checkbox" name="school" value="学校3" />学校3
  25. <input type="checkbox" name="school" value="学校4" />学校4
  26. <input type="submit" value="提交" name="tijiao"/>
  27.  
  28. </form>
  29. </body>
  30. </html>
  1. package linkin;
  2.  
  3. import java.io.IOException;
  4. import java.util.Arrays;
  5. import java.util.Enumeration;
  6. import java.util.Map;
  7.  
  8. import javax.servlet.ServletException;
  9. import javax.servlet.http.HttpServlet;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12.  
  13. public class LinkinServlet extends HttpServlet
  14. {
  15. private static final long serialVersionUID = 1L;
  16.  
  17. @Override
  18. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
  19. {
  20. req.setCharacterEncoding("UTF-8");
  21. String userName = req.getParameter("userName");
  22. System.out.println(userName);
  23. String[] schools = req.getParameterValues("school");
  24. for (String school : schools)
  25. {
  26. System.out.println(school);
  27. }
  28.  
  29. Enumeration enumeration = req.getParameterNames();
  30. while (enumeration.hasMoreElements())
  31. {
  32. String name = (String) enumeration.nextElement();
  33. System.out.println(name + ":" + req.getParameter(name));
  34. }
  35.  
  36. Map<String, String[]> map = req.getParameterMap();
  37. for (String key : map.keySet())
  38. {
  39. System.out.println(Arrays.asList(map.get(key)));
  40. }
  41. for (Map.Entry<String, String[]> entry : map.entrySet())
  42. {
  43. System.out.println(entry.getKey() + ":" + Arrays.asList(entry.getValue()));
  44. }
  45. System.out.println(req.getMethod());
  46. System.out.println(req.getQueryString());
  47. Enumeration enumeration1 = req.getHeaderNames();
  48. while (enumeration1.hasMoreElements())
  49. {
  50. System.out.println(enumeration1.nextElement() + ":" + req.getHeader((String) enumeration1.nextElement()));
  51. }
  52. /*
  53. * host:keep-alive
  54. * content-length:max-age=0
  55. * accept:http://localhost:8080
  56. * user-agent:application/x-www-form-urlencoded
  57. * referer:gzip, deflate
  58. * accept-language:JSESSIONID=4214F4CE399E02730C3219CF0BD83623
  59. */
  60. }
  61.  
  62. @Override
  63. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
  64. {
  65. this.doGet(req, resp);
  66. }
  67.  
  68. }
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  5. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  6.  
  7. <servlet>
  8. <servlet-name>LinkinServlet</servlet-name>
  9. <servlet-class>linkin.LinkinServlet</servlet-class>
  10. <init-param>
  11. <param-name>name</param-name>
  12. <param-value>LinkinPark...</param-value>
  13. </init-param>
  14. </servlet>
  15.  
  16. <servlet-mapping>
  17. <servlet-name>LinkinServlet</servlet-name>
  18. <url-pattern>/LinkinServlet</url-pattern>
  19. </servlet-mapping>
  20.  
  21. </web-app>

2,传参

setAttribute public void setAttribute(String name, Object object);

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

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

  1. package linkin;
  2.  
  3. import java.io.IOException;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8.  
  9. public class LinkinServlet extends HttpServlet
  10. {
  11. private static final long serialVersionUID = 1L;
  12.  
  13. @Override
  14. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
  15. {
  16. req.setCharacterEncoding("UTF-8");
  17. String userName = req.getParameter("userName");
  18. String passWord = req.getParameter("passWord");
  19. req.setAttribute("userName", userName);
  20. req.getSession().setAttribute("passWord", passWord);
  21. req.getRequestDispatcher("/Linkin1.jsp").forward(req, resp);
  22. }
  23.  
  24. @Override
  25. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
  26. {
  27. this.doGet(req, resp);
  28. }
  29.  
  30. }
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  5. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  6.  
  7. <servlet>
  8. <servlet-name>LinkinServlet</servlet-name>
  9. <servlet-class>linkin.LinkinServlet</servlet-class>
  10. <init-param>
  11. <param-name>name</param-name>
  12. <param-value>LinkinPark...</param-value>
  13. </init-param>
  14. </servlet>
  15.  
  16. <servlet-mapping>
  17. <servlet-name>LinkinServlet</servlet-name>
  18. <url-pattern>/LinkinServlet</url-pattern>
  19. </servlet-mapping>
  20.  
  21. </web-app>
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>Servlet表单提交</title>
  13.  
  14. </head>
  15.  
  16. <body>
  17. <form action="<%=path%>/LinkinServlet" method="POST">
  18. 姓名:<input type="text" name="userName" />
  19. <br />
  20. 年龄:<input type="text" name="passWord" />
  21. <br />
  22. 学校:<input type="checkbox" name="school" value="学校1" />学校1
  23. <input type="checkbox" name="school" value="学校2" />学校2
  24. <input type="checkbox" name="school" value="学校3" />学校3
  25. <input type="checkbox" name="school" value="学校4" />学校4
  26. <input type="submit" value="提交" name="tijiao"/>
  27.  
  28. </form>
  29. </body>
  30. </html>
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>Servlet显示数据</title>
  13.  
  14. </head>
  15.  
  16. <body>
  17. OK,成功跳转到页面。
  18. 姓名:<%=request.getAttribute("userName") %>;
  19. 年龄:<%=session.getAttribute("passWord") %>
  20. </body>
  21. </html>

Servlet--传参和接参的更多相关文章

  1. 【WEB】jsp向servlet传参中文乱码问题解决

    传参方式:POST.GET.link方式 servlet向jsp传中文参数msg if(username.equals("") || password.euqals("& ...

  2. httpclient的get带参不带参post带参不带参的简单应用

    一,基础的的应用 1.1,get的无参请求 @Test public void doGet() throws Exception { //创建一个httpclient对象 CloseableHttpC ...

  3. 关于用mybatis调用存储过程时的入参和出参的传递方法

    一.问题描述 a)         目前调用读的存储过程的接口定义一般是:void  ReadDatalogs(Map<String,Object> map);,入参和出参都在这个map里 ...

  4. Java JDBC调用存储过程:无参、输入带参、输出及输出带参

    Java JDBC调用存储过程:无参.输入带参.输出及输出带参 示例代码: package xzg; import java.sql.CallableStatement; import java.sq ...

  5. 在jsp中接收并处理servlet传过来的含有bean的List

    在jsp中接收并处理servlet传过来的含有bean的List 例如有以下bean package com.test.domain; class Student{ private Stirng na ...

  6. python装饰器无参及有参案例

    装饰器无参和有参案例:

  7. Java通过反射技术动态创建对象(有参、无参构造)

    实现类: package com.ljy; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTarge ...

  8. 字节码编程,Javassist篇二《定义属性以及创建方法时多种入参和出参类型的使用》

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 在上一篇 Helloworld 中,我们初步尝试使用了 Javassist字节编程的 ...

  9. vue页面传参和接参

    https://blog.csdn.net/zhouzuoluo/article/details/81259298(copy) js** this.$router.push({ name: 'Flow ...

  10. layer的iframe层的传参和回参

    从父窗口传参给iframe,参考://https://yq.aliyun.com/ziliao/133150 从iframe回参给父窗口,参考:https://www.cnblogs.com/jiqi ...

随机推荐

  1. Java框架之Hibernate(四)

    本文主要介绍: 1 悲观锁和乐观锁 2 使用版本号控制并发访问 3 flush方法和批量更新的问题 4 DetachedCriteria 5 N + 1 次查询 6 使用sql进行查询 7 注解方式 ...

  2. c# winform 视频转字符动画

    以上是大图展示, 原理比较简单,附件下载带了一个分辨率比较小的txt动画.   音乐删除了music.mp3,  如果需要自己下载一首歌曲,然后放在根目录名称“music.mp3”就可以了. 附件点我 ...

  3. windows 堆管理

    windows堆管理是建立在虚拟内存管理的基础之上的,每个进程都有独立的4GB的虚拟地址空间,其中有2GB的属于用户区,保存的是用户程序的数据和代码,而系统在装载程序时会将这部分内存划分为4个段从低地 ...

  4. node实现微信扫码群发消息《附上github代码》

    本篇文章就是为大家介绍一下我是如何用node去实现扫码群发功能,源代码地址在最后面 获取登录二维码 -> 扫码登录服务端           首先介绍一下主要流程,并附上关键代码 1.获取UUI ...

  5. 5分钟了解MySQL5.7的undo log在线收缩新特性

    Part1:写在最前 在MysQL5.6版本中,可以把undo log 回滚日志分离到一个单独的表空间里:其缺点是不能回收空间大小,until MysQL5.7,but MariadDB10.1暂不支 ...

  6. 学习总结:工程管理与makefile

    工程管理与makefile 一.为什么需要makefile和make 一个工程中的源文件可能很多,按照类型.功能.模块分别放在若干个目录中,为了有效地管理软件工程,更高效地编译整个工程,需要用到mak ...

  7. echarts3 中 热力图的属性大全

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  8. 通俗的解释JAVA wait/notify机制

    生活中,我们常遇到需要等待的场景,例如去银行办事,在没轮到自己之前需要一直等待,但是如果需要自己每隔几秒钟就去柜台前看看状况,那肯定是种非常低效和令人恼火的体验.而实际的情况是,接待员会让您拿个号,说 ...

  9. 谈谈Grunt,NPM,Gulp

    随着前端工程化的趋势,产生了越来越多的构建工具,而其中比较优秀的就是grunt,npm,gulp,今天我来说说这三者间的区别以及他们的优缺点. 相信一般前端开发者选择构建工具的时候,更多的是看个人习惯 ...

  10. Error 0xC00000FD: Stack overflow 之 更改堆栈保留大小

    Stack  overflow  顾名思义就是堆栈内存溢出. 一.无限递归 这个要自己仔细检查一下,程序中是否含有无限递归的情况,比如下面这就是无限递归: int function(int x, in ...