Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/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
Servlets 在servlet中使用bean_Servlets_Javabeans - Fatal编程技术网

Servlets 在servlet中使用bean

Servlets 在servlet中使用bean,servlets,javabeans,Servlets,Javabeans,我有一个jsp页面(index.jsp),表单有两个文本文件用户名和密码 <form action="MyClass"> <input type="text" name="username" id="username" /> <input type="password" name="password" id="password" /> <input type="submit" /> </f

我有一个jsp页面(index.jsp),表单有两个文本文件用户名和密码

 <form action="MyClass">
        <input type="text" name="username" id="username" />
        <input type="password" name="password" id="password" />
        <input type="submit" />
  </form>
但我不想使用它们,而是想将这些值存储在一个名为BeanClass的bean中,并从sevlet中的bean中检索值。如何获取它???

您必须使用
操作来实例化
BeanClass
请求或
会话中的
范围

示例-EmpServlet.java

package com.me;

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

public class EmpServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
         PrintWriter pw=response.getWriter();
         Emp emp=(Emp)request.getAttribute("emp");
         pw.print(emp);
    }
}
java:empbean

package com.me;
public class Emp {
    private int age;
    private String name;
    public Emp() {
        name="";
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public boolean valid()
    {
        return age!=0 && name.length()!=0;
    }
    @Override
    public String toString() {
        return "Emp{" + "age=" + age + ", name=" + name + '}';
    }
}
emp.jsp(视图)





web.xml

<servlet>
    <servlet-name>EmpServlet</servlet-name>
    <servlet-class>com.me.EmpServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>EmpServlet</servlet-name>
    <url-pattern>/emp</url-pattern>
</servlet-mapping>

EmpServlet
com.me.EmpServlet
EmpServlet
/电磁脉冲

说到这里,您正在寻找一个类似或的MVC框架。使用JSF时,它将如下所示:

<h:form>
    <h:inputText value="#{bean.username}" required="true" />
    <h:inputSecret value="#{bean.password}" required="true" />
    <h:commandButton value="submit" action="#{bean.submit}" />
    <h:messages />
</h:form>
就这些。不需要servlet

如果您真的想用低级servlet的方式来实现,那么您需要自己填充bean。这可以方便地保存样板代码

Bean bean = new Bean();
BeanUtils.populate(bean, request.getParameterMap());
request.setAttribute("bean", bean);
// ...

不允许MVC方法,它更像一个MV。您必须将转换/验证混合到模型中,并在视图中控制请求/响应,这是控制器应该完成的任务。MVC框架为您提供了一个控制器,它可以从您手中接过所有这些讨厌的样板任务。

我可以在index.jsp it self中使用这个语句吗。。如果是的话,在jsp页面中放置此语句的位置。。我还尝试使用servlet中的getter方法获取valeus,但我得到的是空值
<h:form>
    <h:inputText value="#{bean.username}" required="true" />
    <h:inputSecret value="#{bean.password}" required="true" />
    <h:commandButton value="submit" action="#{bean.submit}" />
    <h:messages />
</h:form>
@ManagedBean
@RequestScoped
public class Bean {

    private String username;
    private String password;

    public void submit() {
        // Do here your job.
    }

    // Add/generate getters and setters.
}
Bean bean = new Bean();
BeanUtils.populate(bean, request.getParameterMap());
request.setAttribute("bean", bean);
// ...