在HttpServlet的继承类中调用javaBean时为null?谢谢大虾们。jsp中:
<jsp:useBean id="jhlUser" class="package.classname" scope="request">
</jsp:useBean>
<jsp:setProperty name="jhlUser" property="userName" param="username"/>
.........web.xml中
<servlet>
<servlet-name>jdl</servlet-name>
<servlet-class>package.classname</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>jdl</servlet-name>
<url-pattern>/jdl.do</url-pattern>
</servlet-mapping>HttpServlet的继承类中
public class Jdl extends HttpServlet
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{
JhlUser jhlUser = new JhlUser(); // 这个地方怎么写才能调用jsp中表单提交的那个javaBean
System.out.println(jhlUser.getUserName());
}
}
<jsp:useBean id="jhlUser" class="package.classname" scope="request">
</jsp:useBean>
<jsp:setProperty name="jhlUser" property="userName" param="username"/>
.........web.xml中
<servlet>
<servlet-name>jdl</servlet-name>
<servlet-class>package.classname</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>jdl</servlet-name>
<url-pattern>/jdl.do</url-pattern>
</servlet-mapping>HttpServlet的继承类中
public class Jdl extends HttpServlet
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{
JhlUser jhlUser = new JhlUser(); // 这个地方怎么写才能调用jsp中表单提交的那个javaBean
System.out.println(jhlUser.getUserName());
}
}
public class Jdl extends HttpServlet
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{
JhlUser jhlUser = new JhlUser(); // 这个地方怎么写才能调用jsp中表单提交的那个javaBean
System.out.println(jhlUser.getUserName());
}
}你这样看看
JhlUser jhlUser = request.getAttribute("jhlUser");
<jsp:useBean id="jhlUser" class="package.classname" scope="request">
</jsp:useBean>
<jsp:setProperty name="jhlUser" property="userName" param="username"/> 既然已经在request域当中了,你就可以直接在
servlet当中,用request.getAttribute("jhlUser");
没有的话,在servlet中使用
request.setAttribute("jhlUser",jhlUser );
试试
如果是界面封装的话,在界面上写request.setAttribute("jhlUser",jhlUser );
然后在servlet中request.getAttribute("jhlUser",jhlUser ); 就能接到了
如果你不想吧其它方法写到servlet中,你可以通过参数方法调用
public class Jdl extends HttpServlet
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{
JhlUser jhlUser = new JhlUser(); // 这个地方怎么写才能调用jsp中表单提交的那个javaBean
System.out.println(jhlUser.getUserName());
}
}
首先说,你刚刚new了一个JhlUser的对象,在内存中只是给它分配了一块空间,并没有给它的成员变量赋值,所以它是null的,servlet中应该没有把javabean的引用给接受过来(我也是新手,个人意见,参考哈),你必须通过request.getParameter()方法从JSP页面提交过来的form中读取相应的属性值,赋值给javabean对象
但jhlUser是空的,但我在jsp中已经写了
<jsp:useBean id="jhlUser" class="package.classname" scope="request">
</jsp:useBean>
<jsp:setProperty name="jhlUser" property="userName" param="username"/>
1.按你给的代码你确实用jsp:useBean实例化了一个javaBean,但这个bean的scope是request
所以当你的jsp页面被执行并返回客户端结果以后,也就是一个request执行完之后,bean被
销毁了2.生成的jsp页面有个表单,你通过这个表单将一个form提交给了你的Action,这这个Action
中你试图访问那个你在jsp页面中设置的bean,这时候那个bean早就没有了,因为他是上一个
request创建的我猜的没有错的话,你只是想用提交的表单数据自动给bean赋值,实现
<jsp:setProperty name="jhlUser" property="*"/>所提供的功能。
那样的话,我以前的做法是自己写反射程序,不知道有没有更好的办法
<jsp:useBean id="jhlUser" class="com.info.JhlUser" scope="session"/>
<jsp:setProperty name="jhlUser" property="username" param="username"/>在HttpServlet中
HttpSession hs = request.getSession();
JhlUser jhlUser = (JhlUser)hs.getAttribute("jhlUser");
System.out.println(jhlUser.getUsername()); //显示结果是null我的问题是为什么我去不到值?,我用request.getParamter()的方法可以取到。
用JhlUser jhlUser = new JhlUser();的方法我试过了,也不行。
请知道的朋友提点一下小弟。(我就想知道用jsp自行机制后,在servlet中怎么得到表单的值)