Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过<;jsp:setBean>;并将其发送到servlet?_Java_Jsp_Servlets - Fatal编程技术网

Java 如何通过<;jsp:setBean>;并将其发送到servlet?

Java 如何通过<;jsp:setBean>;并将其发送到servlet?,java,jsp,servlets,Java,Jsp,Servlets,你能帮我想出解决办法吗。 有一个JSP页面将表单参数发送到servlet。 通常我通过HttpServletRequest.getParameter()解析参数,这对于参数数很小的表单很好。 现在我正在开发一个应用程序,这个应用程序有很多带有参数的JSP,并且表单处理的标准方式不方便。 我认为可能的解决办法可能是采取行动。 我不知道这对我是否有效。 我浏览了很多资料,但什么也没找到。 我的意思是,有任何关于在jsp中获取表单参数的信息, 自动创建实体类的实例, 将所有参数映射到实体属性,并将实体

你能帮我想出解决办法吗。 有一个JSP页面将表单参数发送到servlet。 通常我通过HttpServletRequest.getParameter()解析参数,这对于参数数很小的表单很好。 现在我正在开发一个应用程序,这个应用程序有很多带有参数的JSP,并且表单处理的标准方式不方便。 我认为可能的解决办法可能是采取行动。 我不知道这对我是否有效。 我浏览了很多资料,但什么也没找到。 我的意思是,有任何关于在jsp中获取表单参数的信息, 自动创建实体类的实例, 将所有参数映射到实体属性,并将实体实例发送到servlet。 请看一下代码:

index.jsp

<html>
    <head>
        <title></title>
    </head>
    <body>
        <form method="post" action="NewFormServlet" enctype="application/x-www-form-urlencoded">
            <jsp:useBean id="client-bean" class="model.entity.Client" scope="request"/>
            <h3>Please enter client information</h3><br>
            Client first name<input type="text" name="first-name"/><br>
                <jsp:setProperty name="client-bean" property="firstName" value="${requestScope.first-name}"/>
            Client last name<input type="text" name="last-name"/><br>
                <jsp:setProperty name="client-bean" property="lastName" value="${requestScope.last-name}"/>
            Client address<input type="text" name="address" size="100"/><br>
                <jsp:setProperty name="client-bean" property="address" value="${requestScope.address}"/>
            Client city<input type="text" name="city"/><br>
                <jsp:setProperty name="client-bean" property="city" param="${requestScope.city}"/>
            Client postal code<input type="text" name="postal-code"><br>
                <jsp:setProperty name="client-bean" property="postalCode" value="${requestScope.postal-code}"/>
            <input type="hidden" name="jsp-identifier" value="client-form">
            <input type="submit" value="Submit">
        </form>
    </body>
</html>

请输入客户信息
客户名
客户姓氏
客户地址
客户城市
客户邮政编码
此代码中有什么错误?提前感谢。

编辑: 看起来jsp:useBean是收集一组参数值以便于在页面上显示的老派方法。 在发布请求时,它不会添加属性

基于此,, 我认为jsp:useBean标记没有什么价值, 因为您可以使用el表达式访问在servlet中设置的属性

这无助于将已发布的参数值获取到servlet中的bean中

您可以在bean上编写一个方法,从请求(访问者模式)中提取参数值。 例如:

class bean
{
    private String value;

    public void loadFromHttpServletRequest(final HttpServletRequest request)
    {
        value = request.getParameter("value");
    }
}
考虑使用spring mvc之类的软件包。

编辑: 看起来jsp:useBean是收集一组参数值以便于在页面上显示的老派方法。 在发布请求时,它不会添加属性

基于此,, 我认为jsp:useBean标记没有什么价值, 因为您可以使用el表达式访问在servlet中设置的属性

这无助于将已发布的参数值获取到servlet中的bean中

您可以在bean上编写一个方法,从请求(访问者模式)中提取参数值。 例如:

class bean
{
    private String value;

    public void loadFromHttpServletRequest(final HttpServletRequest request)
    {
        value = request.getParameter("value");
    }
}
考虑使用spring mvc之类的软件包。

编辑: 看起来jsp:useBean是收集一组参数值以便于在页面上显示的老派方法。 在发布请求时,它不会添加属性

基于此,, 我认为jsp:useBean标记没有什么价值, 因为您可以使用el表达式访问在servlet中设置的属性

这无助于将已发布的参数值获取到servlet中的bean中

您可以在bean上编写一个方法,从请求(访问者模式)中提取参数值。 例如:

class bean
{
    private String value;

    public void loadFromHttpServletRequest(final HttpServletRequest request)
    {
        value = request.getParameter("value");
    }
}
考虑使用spring mvc之类的软件包。

编辑: 看起来jsp:useBean是收集一组参数值以便于在页面上显示的老派方法。 在发布请求时,它不会添加属性

基于此,, 我认为jsp:useBean标记没有什么价值, 因为您可以使用el表达式访问在servlet中设置的属性

这无助于将已发布的参数值获取到servlet中的bean中

您可以在bean上编写一个方法,从请求(访问者模式)中提取参数值。 例如:

class bean
{
    private String value;

    public void loadFromHttpServletRequest(final HttpServletRequest request)
    {
        value = request.getParameter("value");
    }
}

考虑使用spring mvc之类的软件包。

您应该首先考虑服务器上发生了什么,浏览器中发生了什么,以及通过HTTP传输了什么。表单提交使用多个阶段:

  • 在服务器上:JSP是使用servlet上下文、会话和请求属性执行的,在上一个请求中仍然具有完全访问权限(参数,…=>生成HTML页面的所有内容(最终链接或包含css或javascript)
  • 在浏览器上:浏览器获取并解析HTML页面,optionnaly获取链接资源(图像等),并向用户显示表单
  • 在浏览器上:用户填写表单的输入字段并单击输入按钮
  • 在浏览器上:浏览器整理数据表单输入字段,生成一个新的HTTP请求(通常是POST请求),并将其发送到服务器
  • 在服务器上:servlet容器预处理请求(直到它只是符合HTTP协议的字节流),并使用反映当前HTTP请求的新的
    HttpServletRequest
    调用适当的servlet方法,以及一个
    HttpServletResponse
    ,用于准备处理后将发送回浏览器的内容
  • 所有这一切都意味着,在servlet处理提交的表单时,您可以在JSP部分中请求属性的任何操作都将丢失。您只能依赖于会话属性和可作为请求参数访问的输入表单字段

    因此,对于当前JSP,Servlet在请求属性中找不到任何内容(它是一个不同的HttpServletRequest),并且只能使用名为
    firstName
    lastName
    地址
    城市
    等的参数

    我可以理解这不是预期的答案,但HTTP协议是这样的

    按评论编辑:

    您可以将该属性放入会话中,然后servlet将使用与JSP相同的会话。但请再读一遍我上面写的内容,并在事情发生时思考:

    • 在服务器上,当执行JSP时,您创建一个空的
      客户机
      bean,将其放入会话范围,并使用其值初始化表单字段。停止安装服务器部件
    • 在客户机上,用户填写输入字段-服务器对此一无所知-