【问题标题】:How to process href parameters jspjsp如何处理href参数
【发布时间】:2014-09-03 12:17:44
【问题描述】:

我的测试页面很小,但我无法获取请求参数,不明白为什么。 测试页面有这样的“href”链接:

<a href="main.jspc?param=show" class="submenu">Show smth</a>

简单的控制器:

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class Controller extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        processRequest(request, response);
    }

    protected void processRequest (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        StringBuilder sb = new StringBuilder("Do SMTH<br>");
        sb.append("Other will be later...<br>");
        String s = sb.toString();
        request.setAttribute("result", s);
        RequestDispatcher view = request.getRequestDispatcher("test.jsp");
        view.forward(request,response);
    }
}

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <welcome-file-list>
        <welcome-file>main.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>controller</servlet-name>
        <servlet-class>Controller</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>controller</servlet-name>
        <url-pattern>/main.jspc</url-pattern>
    </servlet-mapping>
</web-app>

和测试页面,我想在其中显示一些获得的参数:

test.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
</head>
<body>
<%
    out.print("<br>" + "Parameter: ");
    request.getParameter("param");
    out.print("<br>"+ "URL:");
    request.getRequestURL();
    out.print("<br>" + "Result:");
    request.getParameter("result");
%>
</body>
</html>

但是测试页面显示空参数,我不明白为什么。

【问题讨论】:

  • 尝试在 test.jsp 上使用 ${param.param}${result}
  • 你能看到 Show smth。我看到这里是jspc。你能不能试着把它改成jsp
  • 完全正确的版本会怎样?
  • jspc - 它映射到 Controller.java,我已经有 main.jsp - 来自那里的 href 链接。
  • 我发现了我的错误 - 而不是使用方法 request.getParameter 需要使用 request.getAttribute,因为我在那里设置了属性:request.setAttribute("result", s);

标签: java jsp servlets model-view-controller


【解决方案1】:

在 JSP 中使用 scriptlet(那些 东西)是旧的,自从 taglibs(JSTL) 和 EL(Expression Language,那些 ${} 东西) 的诞生以来,它就被劝阻了。

使用下面的代码访问您的参数:

Parameter : ${params} <br>
Result : ${result} <br>
URL : ${pageContext.request.requestURI}

【讨论】:

    猜你喜欢
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 2013-08-31
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多