1、本人在创建一个Web登录跳转页面,因为是先写的JavaBean,后来发现JavaBean中的成员变量(字段)名称和登录页面login.jsp中的name属性不一致,如下:
(1)JavaBean代码
`
public class UserInfo {
private String name;
private String pwd;
public String getName() {
return name;
}
public void setName(String name) {
this.name= name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
(2)login.jsp
`<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
<form id="form1" name="form1" method="post" action="do.jsp">
<h2>用户登录</h2>
用户名:<input type="text" name="username" id="username" /> <br/>
密 码:<input type="password" name="pwd" id="pwd" /><br /><br />
<input type="submit" name="btn1" value="提交" id="btn1">
<input type="reset" name="btn1" value="重置" id="btn2">
</form>
` 于是将JavaBean中的成员变量名称改为和登录页面login.jsp中的name属性一致,修改后的JavaBean代码如下:
`public class UserInfo {
private String username;
private String pwd;
public String getName() {
return username;
}
public void setName(String name) {
this.username = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
`
可以看出只将3处name改为了username
然后运行提示错误如下:
HTTP Status 500 – Internal Server Error
Type Exception Report
Message Cannot find any information on property 'username' in a bean of type 'javabean.UserInfo'
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
org.apache.jasper.JasperException: Cannot find any information on property 'username' in a bean of type 'javabean.UserInfo'
org.apache.jasper.runtime.JspRuntimeLibrary.getReadMethod(JspRuntimeLibrary.java:753)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1221)
org.apache.jasper.compiler.Node$GetProperty.accept(Node.java:1122)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2428)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2434)
org.apache.jasper.compiler.Node$Root.accept(Node.java:464)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376)
org.apache.jasper.compiler.Generator.generate(Generator.java:3656)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:252)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:358)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:338)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:325)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:580)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:363)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
重要错误信息为:Cannot find any information on property ‘username’ in a bean of type ‘javabean.UserInfo’
【解决方法】重写JavaBean(重新生成Getter和Setter)
最终的JavaBean代码是:
public class UserInfo {
private String username;
private String pwd;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
大家注意和之前进行比较
【总结】
在javaweb中使用javabean,如果中途修改javabean内容,要重新自动生成get和set方法,否则运行时会报错。