黑马程序员技术交流社区

标题: servlet无法获取jsp <c:url>传过来的参数 [打印本页]

作者: 诺之忧    时间: 2014-9-14 14:47
标题: servlet无法获取jsp <c:url>传过来的参数
<td>
            <c:url value="/UserSer" var="delete">
        <c:param name="url" value="delete" />
        <c:param name="uString" value="xxxxxxx" />
            </c:url>
            <a href="${delete}">删除</a>
</td>

在servlet的子类UserSer  
String url=request.getParameter("url");//通过url访问ser
获得的参数是空值,高手们给我指点迷津吧              


作者: xpaibeyond    时间: 2014-9-14 14:47
诺之忧 发表于 2014-9-15 00:27
这种获取方式,有点麻烦,有没有更加好的方式呢?麻烦你了,感激不尽啊 ...

   那就用url标签带参数的形式吧。     

作者: xpaibeyond    时间: 2014-9-14 17:18
      是通过  <a href="${delete}">删除</a>  提交到Servlet吗?
作者: xpaibeyond    时间: 2014-9-14 18:09
<c:url  value="/servlet/DemoServlet"  var="demo" scope="session">  设置下scope作用域, 作用域有四个,我这里设为session.

servlet中用session获取就行了。
String url=(String) request.getSession().getAttribute("demo");
                       
        System.out.println("url=" + url);
作者: 诺之忧    时间: 2014-9-14 21:44
xpaibeyond 发表于 2014-9-14 18:09
设置下scope作用域, 作用域有四个,我这里设为session.

servlet中用session获取就行了。

我按照你的做法去做了,也不行,应该要从<c:param name="uString" value="xxxxxx"/>里获取
作者: xpaibeyond    时间: 2014-9-14 23:02
诺之忧 发表于 2014-9-14 21:44
我按照你的做法去做了,也不行,应该要从里获取

       你确实代码没错?     servlet 中获取域里的数据是要用getAttribute(); ,  不是getParameter();哟!!  
作者: 诺之忧    时间: 2014-9-14 23:08
是的,session是没有getParameter()这个方法
作者: xpaibeyond    时间: 2014-9-14 23:38
本帖最后由 xpaibeyond 于 2014-9-15 00:02 编辑
诺之忧 发表于 2014-9-14 23:08
是的,session是没有getParameter()这个方法

   方法是肯定行的,如果解决不了你的问题我是不会乱给你说的。       <td>
            <c:url  value="/servlet/DemoServlet"  var="demo" scope="session">
                            <c:param name="xixi" value="ha"></c:param>
            </c:url>
            <a href="${demo}">删除</a>

        </td>

  获取到的结果在截图上,        仔细看看你自己的代码吧。。

11.jpg (182.13 KB, 下载次数: 53)

11.jpg

作者: 诺之忧    时间: 2014-9-15 00:13
<%@page import="org.springframework.web.context.request.RequestScope"%>
<%@ page language="java" import="java.util.*"  import="pojo.User" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
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 'queryUser.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>
  <h3>查询用户:</h3>
  <form action="/info/UserSer" method="post">
I D <input type="text" name="uid"/><br>
   姓名<input type="text" name="uname"/><br>
   地址<input type="text" name="uaddress"/><br>
    <b>爱好:</b><c:forEach items="${applicationScope.ulikes}" var="ulike">
     ${ulike}<input type="checkbox" name="ulikes" value="${ulike}"/>
</c:forEach><br>
   <input type="submit" value="查询"/>
   <input type="hidden" name="user" value="queryUser"/>
  </form>
  <table border="1">
  <tr>
       <td>ID</td>
       <td>姓名</td>
       <td>爱好</td>
       <td>地址</td>
       <td>更新</td>
       <td>删除</td>
  </tr>
  <c:if test="${requestScope.usernumber==1}">
       <tr>
        <td>${requestScope.user.getId()}</td>
        <td>${requestScope.user.getName()}</td>
        <td>${requestScope.user.getLikes()}</td>
        <td>${requestScope.user.getAddress()}</td>
        <td>
        <c:url value="/addUser.jsp" var="upDate">
        <c:param name="uid" value="${requestScope.user.getId()}"/>
        <c:param name="uname" value="${requestScope.user.getName()}"/>
        <c:param name="ulikes" value="${requestScope.user.getLikes()}"/>
        <c:param name="uaddress" value="${requestScope.user.getAddress()}"/>
        </c:url>
        <a href="${upDate}">更新</a>
        </td>
   <td>
            <c:url value="/UserSer" var="delete" scope="request">
      <c:param name="url" value="delete" />
      <c:param name="uid" value="${requestScope.user.getId()}" />
   </c:url>
   <a href="${delete}">删除</a>
   </td>
   </tr>
  </c:if>
  <c:if test="${requestScope.usernumber==2}">
       <c:forEach items="${requestScope.users}" var="user">
       <tr>
        <td><c:out value="${user.id}" default="  "/></td>
        <td><c:out value="${user.name}" default="  "/></td>
        <td><c:out value="${user.likes}" default="  "/></td>
        <td><c:out value="${user.getAddress()}" default="  "/></td>
        <td>
        <c:url value="/addUser.jsp" var="upDate">
        <c:param name="uid" value="${user.id}"/>
        <c:param name="uname" value="${user.name}"/>
        <c:param name="ulikes" value="${user.likes}"/>
        <c:param name="uaddress" value="${user.address}"/>
        </c:url>
        <a href="${upDate}">更新</a>
        </td>
        <td>
            <c:url value="/UserSer" var="delete" scope="request">
      <c:param name="url" value="delete" />
      <c:param name="uid" value="${user.id}" />
   </c:url>
   <a href="${delete}">删除</a>
        </td>
       </tr>
       </c:forEach>
       <tr><td>一键删除</td></tr>
  </c:if>
  </table>
  </body>
</html>

作者: 诺之忧    时间: 2014-9-15 00:15
public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  request.setCharacterEncoding("utf-8");
  String req=request.getParameter("user");
  String url=request.getParameter("url");
  if(req.equals("addUser"))
  {
           String idstr=request.getParameter("userUp");
           //更新用户
           if(idstr.length()>=1)
           {
            User user=new User();
            int id=Integer.parseInt(idstr);
            String uname=request.getParameter("uname");
            String[] values=request.getParameterValues("ulikes");
            String ulikes=userImpl.joinString(values);
            String uaddress=request.getParameter("uaddress");
            user.setId(id);
            user.setName(uname);
            user.setLikes(ulikes);
            user.setAddress(uaddress);
            userImpl.upDate(user);
           }else{
            //添加用户
      User user=new User();
      String uname=(String)request.getParameter("uname");
            String[] uidvalues=request.getParameterValues("ulikes");
      String ulikes =userImpl.joinString(uidvalues);
      String uaddress=request.getParameter("uaddress");
      user.setName(uname);
      user.setLikes(ulikes);
      user.setAddress(uaddress);
      userImpl.insert(user);
           }
  }else if(req.equals("queryUser"))
  {   //查询用户
   User user=null;
   String id=request.getParameter("uid");
   if(id.length()!=0)
   {   //使用id查询单用户
    user=userImpl.select(Integer.parseInt(id));
    request.setAttribute("user", user);
    request.setAttribute("usernumber",1);
    RequestDispatcher dispat=request.getRequestDispatcher("/queryUser.jsp");
    dispat.forward(request, response);//响应
   }else
   {
    //模糊查询
    String name=request.getParameter("uname");
    String[] values=request.getParameterValues("ulikes");
    String address=request.getParameter("uaddress");
    String likes=userImpl.joinString(values);//字符串数组转换成字符
    user=new User();
    user.setName(name);
    user.setLikes(likes);
    user.setAddress(address);
    List<User> users=userImpl.select(user);
    request.setAttribute("usernumber", 2);
    request.setAttribute("users", users);
    RequestDispatcher dispat=request.getRequestDispatcher("/queryUser.jsp");
    dispat.forward(request, response);//响应
   }
  }
}
作者: 诺之忧    时间: 2014-9-15 00:27
xpaibeyond 发表于 2014-9-14 23:38
方法是肯定行的,如果解决不了你的问题我是不会乱给你说的。      
            
                    ...

这种获取方式,有点麻烦,有没有更加好的方式呢?麻烦你了,感激不尽啊
作者: 诺之忧    时间: 2014-9-15 12:18
url标签没有那个属性




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2