纯servlet获取前端请求参数
测试页面

  <body><h2>输入帐号密码</h2><form action="test" method="post">帐号: <input type="text" name="username"/><br/>密码: <input type="text" name="password"/><br/><input type="submit" value="登录"/></form> </body>
 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{//方式一  Parameter的参数是我们提交表单的时候name的数值String username=request.getParameter("username");String password=request.getParameter("password");   System.out.println(username+"   "+password);System.out.println("==============");//获取所有参数Enumeration<String> parmNames1=request.getParameterNames();while (parmNames1.hasMoreElements()){String name = (String) parmNames1.nextElement();String value=request.getParameter(name);System.out.println(name+"=="+value);}System.out.println("==============");// 获取所有参数的map形式Map<String, String[]> map1=request.getParameterMap();//把map转换到EntrySetSet<Entry<String,String[]>> set1= map1.entrySet();//获取set的迭代器Iterator<Entry<String,String[]>> iterator1=set1.iterator();//遍历setfor (Entry<String, String[]> entry : set1){String name=entry.getKey();//value是一个数组,只取第一个,因为我们只有一个数值String value=entry.getValue()[0];System.out.println(name+"=="+value);}}
Controller:
package com.ysl.PassingParameters.controller;
import java.util.List;
import java.util.Map;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;import com.ysl.PassingParameters.bean.User;
import com.ysl.PassingParameters.dto.RetMsg;@Controller
public class TestController {/*** List<String>传参* @param listString* @return*/@RequestMapping("/listString")@ResponseBodypublic RetMsg listString(@RequestParam("listString[]") List<String> listString){System.out.println("listString:"+listString.toString());return RetMsg.success();}/*** List<User>传参* @param listUser* @return*/@RequestMapping("/listUsers")@ResponseBodypublic RetMsg listUsers(@RequestBody List<User> listUser){System.out.println("username:"+listUser.get(0).getUsername());return RetMsg.success();}/*** User[]传参* @param arrayUsers* @return*/@RequestMapping("/arrayUsers")@ResponseBodypublic RetMsg arrayUsers(@RequestBody User[] arrayUsers){System.out.println("username:"+arrayUsers[0].getUsername());return RetMsg.success();}/*** List<Map<String,Object>>传参* @param listMap* @return*/@RequestMapping("/listMap")@ResponseBodypublic RetMsg listMap(@RequestBody List<Map<String, String>> listMap){System.out.println("username:"+listMap.get(0).get("username"));return RetMsg.success();}/*** User对象传参* @param arrayUsers* @return*/@RequestMapping("/users")@ResponseBodypublic RetMsg users(@RequestBody User users){System.out.println("username:"+users.getUsername());System.out.println("username:"+users.getList().get(0).getUsername());return RetMsg.success();}
}
页面:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html>
<%application.setAttribute("path", request.getContextPath());%>
<head><script type="text/javascript" src="${path}/js/jquery.min.js"></script>
</head>
<body>
<h2>Hello World!</h2>
<button id="listString">List<String>传参</button>
<button id="listUser">List<User>传参</button>
<button id="arrayUsers">User[]传参</button>
<button id="listMap">List<Map<String,Object>>传参</button>
<button id="Users">User对象(属性包含List<User>)传参</button>
<script type="text/javascript">// List<String>传参$("#listString").click(function(){var idList = new Array();idList.push("1");idList.push("1");idList.push("1");$.ajax({type:"post",url:"${path}/listString",data:{"listString":idList},dataType:"json",success:function(retMsg){if(retMsg.code==200){alert("success");}else{alert("false");}}})})// List<User>传参$("#listUser").click(function(){var userList = new Array();userList.push({username: "zhangsan",password: "332"});userList.push({username: "zhangsan",password: "332"});$.ajax({type:"post",url:"${path}/listUsers",data:JSON.stringify(userList),dataType:"json",contentType : 'application/json;charset=utf-8', //设置请求头信息success:function(retMsg){if(retMsg.code==200){alert("success");}else{alert("false");}}})})//传User对象数组$("#arrayUsers").click(function(){var userList = [{username: "李四",password: "123"},{username: "张三",password: "332"}];$.ajax({type: "POST",url: "${path}/arrayUsers",data: JSON.stringify(userList),//将对象序列化成JSON字符串dataType:"json",contentType : 'application/json;charset=utf-8', //设置请求头信息success:function(retMsg){if(retMsg.code==200){alert("success");}else{alert("false");}}});})// List<Map<String,Object>>传参$("#listMap").click(function(){var userList = new Array();userList.push({username: "zhangsan",password: "332"});userList.push({username: "zhangsan",password: "332"});$.ajax({type:"post",url:"${path}/listMap",data:JSON.stringify(userList),dataType:"json",contentType : 'application/json;charset=utf-8', //设置请求头信息success:function(retMsg){if(retMsg.code==200){alert("success");}else{alert("false");}}})})//User对象传参$("#Users").click(function(){var list = new Array();list.push({username: "zhangsan",password: "332"});list.push({username: "zhangsan",password: "332"});var user = {};user.username = "张三";user.password = "密码";user.list = list;$.ajax({type:"post",url:"users",data:JSON.stringify(user),datatype:"json",contentType:"application/json;charset=utf-8",success:function(retMsg){if(retMsg.code==200){alert("success");}else{alert("false");}}})})
</script>
</body>
</html>

后端传值给前端

1,从Action中传值到JSP页面的方法

 ①在Action中定义一个成员变量,然后对这个成员变量提供get/set方法,在JSP页面就可以取到这个变量的值了。

1)在Action中定义成员变量

 //定义一个成员变量
private String message;//提供get/set方法
public String getMessage() {return message;
}
public void setMessage(String message) {this.message = message;
}

2)在JSP页面中取值

${message}

或者

<s:property value="message"/>
 ②使用一些Servlet API进行值的存取操作:HttpServletRequest、HttpSession和ServletContext。Struts2对这个三个对象用Map进行了封装,我们就可以使用Map对象来存取数据了。

1)在Action中存值

ActionContext actionContext = ActionContext.getContext();//get HttpServletRequest
Map<String,Object> request = (Map) actionContext.get("request");
request.put("a", "a is in request");//get HttpSession
//Map<String,Object> session = (Map) actionContext.get("session");
Map<String,Object> session = actionContext.getSession();
session.put("b", "b is in session");//get ServletContext
//Map<String,Object> application  = (Map) actionContext.get("application");
Map<String,Object> application  = actionContext.getApplication();
application.put("c", "c is in application");//get ServletActionContext.request
HttpServletRequest request=ServletActionContext.getRequest()
request.setAttribute("c2", "test5");
request.put("c3","test6")
//或者直接放入上下文中
ActionContext.getContext().put("d","d is in application");

2)在JSP页面上取值(使用EL表达式)

${a}
${b}
${c}
${d}
${c2}
${c3}or
${requestScope.a}
${sessionScope.b}
${applicationScope.c}
${actionContext.d}
${requestScope.c2}
${requestScope.c3}
or<%=request.getAttribute("d")%>  //使用ActionContext.getContext().put("d","d is an application")的情况

附加:ServletContext,ActionContext,ServletActionContext的区别

在ActionContext.getContext().put(“a”, " test3")后页面上用${a}或<s:property value=“#a”/>获得test3的值

#相当于ActionContext. getContext() ,#session.b表达式相当于ActionContext.getContext().getSession(). getAttribute(”b”)

③对于传递list的值,可以使用 actionContext的valueStack来传递值栈

1) 在后台使用Hibernate查询 ,EntityManager 通过createQuery()来getResultList()获得List,将list放入valueStack中
ActionContext.getContext().getValueStack().push(model);2)在页面上通过<s:iterator>标签遍历list的每条值显示在table上。
<table class="tablelist" >  <thead>  <tr>  <th width="100px;">编号</th>  <th>影片类型</th>  <th>影片名称</th>  <th>发布人</th>  <th>发布时间</th>  <th>审核状态</th>  <th>操作</th>  </tr>  </thead>  <tbody>  <s:iterator value="recordList" var="o" status="i">  <tr>  <td>${o.id}</td>  <td>${o.name }</td>  <td>${o.type}</td>  <td>${o.updateMember.memberName }</td>  </tr>  </s:iterator>  </tbody>  </table>  

从前台向后台传递参数

①通过表单传递参数

 1)在前端jsp页面设置form表单,确定需要传递的参数name让用户在input中输入,通过点击按钮后submit()提交到后台
<s:form method="post" action="ActivityAction_toUI.action">  <table class="serTable">  <tbody>  <tr>  <td>  <label>活动名称</label>  </td>  <td>  <input type="text" class="serput" name="activityName" placeholder="输入文本"/>  </td>  <td>  <s:submit cssClass="btn1" value="搜索" onclick="submit();" />  </td>  </tr>  </tbody>  </table>  </s:form>

2)点击搜索后activityName会放到HttpServletRequest 中

HttpServletRequest httpReq = ServletActionContext.getRequest();
String s = httpReq.getParameter("activityName");
另外,在后台也可以通过extends ActionSupport 并构建get/set方法在后台获得其值
        private String activityName;  public String getActivityName() {  return activityName;  }  public void setActivityName(String activityName) {  this.activityName = activityName;  }  public String list(){  System.out.println(activityName);  }

②通过超链接传递参数

 1)前台通过超链接跳转时将参数加到方法的后面
<s:a cssClass="acolor" target="mainBody" theme="simple"  action="ActivityAction_info.action?Id=%{Id}&pageNum=%{pageNum}&infot=\"mylittlepony\"" ><imgsrc="${pageContext.request.contextPath}/images/info.png"title="查看" /></s:a>

2)后台通过HttpServletRequest 获得超链接后面参数所对应的值

HttpServletRequest httpReq = ServletActionContext.getRequest();
<pre name="code" class="java">Long id= Long.parseLong(httpReq.getParameter("Id"));

java后端获取前端请求参数相关推荐

  1. 使用注解来让后端获取前端参数的常用方式

    如下是使用注解来让后端获取前端参数的常用方式: @RequestParam 前端发出的请求:path?id=1; 后端获取方式: @RequestMapper(value="path&quo ...

  2. java get请求 参数_HttpServletRequest获取GET请求参数5种方法

    首页 > Java Web > SpringMvc应用 > HttpServletRequest HttpServletRequest获取GET请求参数5种方法 HttpServle ...

  3. TP5后端,VUE前端请求聚合数据新闻接口

    问题描述: TP5当后端,VUE当前端, 请求聚合数据新闻接口 演示效果如下: ps: 最开始加载页面的时候,只加载本地的文件(因为请求次数有限制) 问题解决: 1: vue 文件: <temp ...

  4. TP5后端,VUE前端请求聚合数据驾照题库

    选择效果: 演示效果: 1: Vue 配置: /config/index.js 'use strict' // Template version: 1.3.1 // see http://vuejs- ...

  5. TP5后端,VUE前端请求聚合数据成语大全

    PS: 聚合接口上描述的是成语大全,其实只是以用户查找字为开头的成语而已.先上演示效果: 1: VUE 前端代码 <template><div class="content ...

  6. TP5后端,VUE前端请求京东万象菜谱大全

    写这个代码的收获: 1: http 请求 https 有一个证书验证(我这里给它关了,接口的数据就进来了) 2: 对后端的一些参数过滤(给默认值, 或者直接拒绝服务) 代码演示效果: 1: 前端VUE ...

  7. Java后端获取日历信息

    记录项目中获取日历的代码,仅Java后端,前端页面展示确实不会.需求是只能在本年度初始下一年度日历信息,具体需要初始化的信息都在实体类里.如有错误或不适当的地方请大佬指正. ps:以下用到了hutoo ...

  8. TP5后端,VUE前端请求聚合数据天气接口

    问题描述: TP5 当后端 VUE 当前端 请求聚合数据天气接口 问题解决: 演示效果 前端 VUE 代码: <template><div class="whether-t ...

  9. TP5后端,VUE前端请求聚合数据过去的今天

    先上效果: 1: 前端 vue 文件: <template><!--接口地址 http://v.juhe.cn/todayOnhistory/queryEvent.php参数名 类型 ...

最新文章

  1. 想“看见”高性能计算嘛?戳这里开始
  2. 《C语言编程初学者指南》一1.5 使用程序语句
  3. 毕业后的第二个月的一点思绪
  4. 最短路径问题 --- Dijkstra算法详解
  5. 安卓拒绝服务漏洞分析及漏洞检测
  6. linux文件名过长无法删除,不能删除文件,出现“源文件名长度大于系统支持的长度...
  7. Html中解决点击 a 标签刷新的问题,实现点击时不刷新
  8. LeetCode 198, 213 House Robber
  9. python求两个字符串之间最小子串
  10. “数据治理”:重构和愿景
  11. JAVA班车项目_JavaBooks/班车服务.md at master · Aim-Tric/JavaBooks · GitHub
  12. 香港服务器防攻击能力好吗
  13. photoshop制作gif动画
  14. mac 下 python 批量删除 PDF 中的某些页面
  15. 腾讯地图的引用html
  16. 【Python爬虫案例】批量采集网站壁纸,实现自动更换桌面壁纸
  17. 小说排行榜案例(表格标签)
  18. Unity学生作业:太阳地球月亮自转和公转
  19. snort 联动iptables 配置为IPS,NIDS
  20. 阿里云新用户活动:云服务器ECS 新购、升级报价出炉了!

热门文章

  1. 四种人吃花生加重病情
  2. c++实现滤波(还没验证)
  3. PDF内容怎么编辑修改
  4. archive log文件大小与redo log文件大小关系探究
  5. 车联网通信协议之C-V2X
  6. 面试常问到的经典100问 附答案和点评 参加过面试的人就知道这些题目出现的频率有多高啦 ①
  7. poi报错最靠谱方法:Multiple cell comments in one cell are not allowed, cell: E3
  8. 看完这篇文章后,你一定知道如何正确选股!
  9. Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
  10. 电脑开机找不到启动设备怎么办?