纯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转换到EntrySet
		 Set<Entry<String,String[]>> set1= map1.entrySet();
		 
		 //获取set的迭代器
		 Iterator<Entry<String,String[]>> iterator1=set1.iterator();
		 
		 //遍历set
		 for (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")
    @ResponseBody
    public RetMsg listString(@RequestParam("listString[]") List<String> listString){
        System.out.println("listString:"+listString.toString());
        return RetMsg.success();
    }


    /**
     * List<User>传参
     * @param listUser
     * @return
     */
    @RequestMapping("/listUsers")
    @ResponseBody
    public RetMsg listUsers(@RequestBody List<User> listUser){
        System.out.println("username:"+listUser.get(0).getUsername());
        return RetMsg.success();
    }


    /**
     * User[]传参
     * @param arrayUsers
     * @return
     */
    @RequestMapping("/arrayUsers")
    @ResponseBody
    public RetMsg arrayUsers(@RequestBody User[] arrayUsers){
        System.out.println("username:"+arrayUsers[0].getUsername());
        return RetMsg.success();
    }


    /**
     * List<Map<String,Object>>传参
     * @param listMap
     * @return
     */
    @RequestMapping("/listMap")
    @ResponseBody
    public 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")
    @ResponseBody
    public 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\"" ><img
                                    src="${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"));  
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐