如何将JSP <form>中的值传递给java方法</form>

时间:2012-11-29 21:37:38

标签: java html jsp java-ee servlets

我有一个这种格式的JSP文件(两个选择标签) -

<%@ page import="mypackage.*" %>

<all the main tags>...

<form> 
<select> options... </select> 
<select> options... </select> 
<input type="submit" value="submit" /> 
</form>

<textarea></textarea>

“mypackage”中有一个java方法,它应该在点击提交后从<select>标签中获取参数。 该方法返回一个我想在<textarea>中输出的字符串。 我该怎么做?

非常感谢你们。

3 个答案:

答案 0 :(得分:4)

将其作为HTTP POSTHTTP GET发送到servlet,然后通过doGet()doPost()方法接收。您可以通过HttpServletRequest.getParameter()访问它。

void doPost(HttpServletRequest request, HttpServletResponse response)

答案 1 :(得分:1)

我看到您正在将mypackage。*类导入JSP。实际上,您可以在JSP中包含Java代码并直接调用该类。类似的东西:

<%
    MyClass c = new MyClass();
    String result = c.doSomething(request.getParameter("select"));
    out.println("<textarea>" + result + "</textarea>");
%>

应该足够(但不好:结果应该被转义)。

然而,这段代码不是很易于维护,而且可以做得更好(kaustav datta的答案是一种标准的方法)。

可以使用Spring框架的MVC部分以更优雅的方式完成:http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/mvc.html

它在开始时需要一些配置并需要一些时间来理解,但是当你得到它时,它非常好。

在您的情况下,以下形式的控制器就足够了:

@Controller
public class SelectController {

   private final class MyClass c = new MyClass();

   @RequestMapping(value="/select", method = RequestMethod.POST)
   public String doSelect(@RequestParam("selection") final String selection, final ModelMap model) {
       final String result = c.doSomething(selection);
       modelMap.addAttribute("result", result);

       return "yourJsp";
   }
} 

答案 2 :(得分:1)

request.getParameterValues("select")

此处getParameterValues是请求接口的一种方法,它返回控制器的此方法传递名称参数中的字符串

从文本框中获取值时,请使用方法request.getParameter("name");