首页 > 解决方案 > servlet 中的 Beanutils 有问题

问题描述

当我在 servlet 中使用 Beanutils 时,我发现这不起作用

package servlet.web15;

import org.apache.commons.beanutils.BeanUtils; import 
javax.servlet.ServletException; import 
javax.servlet.annotation.WebServlet; import 
javax.servlet.http.HttpServlet; import 
javax.servlet.http.HttpServletRequest; import 
javax.servlet.http.HttpServletResponse; import java.io.IOException; 
import java.io.PrintWriter; import 
java.lang.reflect.InvocationTargetException; import java.util.HashMap; 
import java.util.Map;

@WebServlet(name = "RegisterServlet", urlPatterns = "/register") 
public class RegisterServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter responseWriter = response.getWriter();

        Map<String, String[]> parameterMap = request.getParameterMap();

        for (Map.Entry<String, String[]> entry :
                parameterMap.entrySet()) {
            String name = entry.getKey();
            for (String str :
                    entry.getValue()) {
                responseWriter.println(name + ": " + str);
            }
        }

        Bean bean = new Bean();

      responseWriter.println(bean.toString());

        try {
            BeanUtils.populate(bean, parameterMap);
        } catch (IllegalAccessException e) {
            responseWriter.println(e.getCause());
        } catch (InvocationTargetException e) {
            responseWriter.println(e.getCause());
        }
      responseWriter.println(bean.toString()); // this statement doesn't work, something wrong with the try and catch

    }

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


}

html片段是这样的

<div class="form form-signup">
        <form action="/register" method="post">
            <lable>FULL NMAE</lable>
            <input type="text"
                   placeholder="Your full name" name="name">
            <lable>E-MAIL</lable>
            <input type="email"
                   placeholder="Your e-mail" name="email">
            <lable>PASSWORD</lable>
            <input type="password"
                   placeholder="Your password" name="password">
            <p class="terms">
                <input type="checkbox">
                I agree all statments in
                <a href="#" class="lined-link">terms of service</a>
            </p>
            <input type="submit"
                   class="form-btn"
                   value="Sign Up"/>
            <a href="#" class="lined-link to-signin-link">I'm already member</a>
        </form>
</div>

这是 Bean.class

package servlet.web15;

public class Bean {
    private String name;
    private String email;
    private String password;

    public Bean() {
    }

    public Bean(String name, String email, String password) {
        this.name = name;
        this.email = email;
        this.password = password;
    }

    @Override
    public String toString() {
        return "Bean{" +
                "name='" + name + '\'' +
                ", email='" + email + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

所以我尝试寻求帮助,然后,有人告诉我这是一个错误。于是我按照链接的内容做了,修改了plugin文件夹的内容,但是这样不行,我的想法被打断了。

我该如何解决这个问题?Tomcat版本:9.0.12

ps:错误信息与该链接相同。就如

11-Apr-2017 18:20:06.973 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory C:\servers\apache-tomcat-8.5.13\webapps\manager

11-Apr-2017 18:20:07.084 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory C:\servers\apache-tomcat-8.5.13\webapps\manager has finished in 112 ms

标签: javaapache-commons-beanutils

解决方案


推荐阅读