Servlets 在servlet中使用bean
我有一个jsp页面(index.jsp),表单有两个文本文件用户名和密码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
<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);
// ...