被忽略的javabean问题

昨天群聊时候,某兄弟遇到的一个javabean问题,不能找到属性

下面先把他代码发出来,

读者先看看那里错误,给你5分钟时间喔!

<body>
     <%! String sCPU=""; %>
    <%! String sHarddisk=""; %>
    <%! String sPrice=""; %>
    <% 
    sCPU=request.getParameter("clq");
    sHarddisk=request.getParameter("yp");
    sPrice=request.getParameter("jiage");
    %>
        <jsp:useBean id="computerbeans" scope="page" class="javado.javado"/>
    <jsp:setProperty name="computerbeans" property="sCPU" value="<%= sCPU%>"/>
    <jsp:setProperty name="computerbeans" property="sHarddisk" value="<%= sHarddisk%>"/>
    <jsp:setProperty name="computerbeans" property="sPrice" value="<%= sPrice%>"/>
    你需要的计算机配置的信息为:<br>
    处理器:<jsp:getProperty name="computerbeans" property="sCPU"/><br>
    硬盘:<jsp:getProperty name="computerbeans" property="sHarddisk"/><br>
    价格:<jsp:getProperty name="computerbeans" property="sPrice"/><br>
    
    <br>
   <form action="index.jsp">你想要的处理器型号:<input type="text" name="clq"><br>
   你要的硬盘:<input type="text" name="yp"><br>
   你要的价格:<input type="text" name="jiage"><br>
   <input type="submit" value="提交">
   </form>
  </body>

 

下面这个是javabean

package javado;

public class javado {
private String sCPU;
private String sHarddisk;
private String sPrice;
public String getSCPU() {
return sCPU;
}
public void setSCPU(String scpu) {
sCPU = scpu;
}
public String getSHarddisk() {
return sHarddisk;
}
public void setSHarddisk(String harddisk) {
sHarddisk = harddisk;
}
public String getSPrice() {
return sPrice;
}
public void setSPrice(String price) {
sPrice = price;
}


}

 

 

 

***************这是问题,答案分割线********************

5分钟时间吧,哈哈

5

4

3

2

1.9

1.8

....

 

给一个提示,异常是这样

严重: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: Cannot find any information on property 'sCPU' in a bean of type 'javado.javado'
at org.apache.jasper.runtime.JspRuntimeLibrary.getReadMethod(JspRuntimeLibrary.java:839)
at org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1048)
at org.apache.jasper.compiler.Node$GetProperty.accept(Node.java:1106)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2393)
at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2399)
at org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
at org.apache.jasper.compiler.Generator.generate(Generator.java:3365)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:199)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:315)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:282)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)

 

第二个提示:

JAVA命名规范:
1、 包命名:全部字母小写:org.sky.darkness
2、 类命名:单词的首字母大写:SimpleBean
3、 属性名称:第一个单词的首字母小写,之后的每一个单词的首字母大写
4、 方法命名:与属性命名相同:public void sayHellow();
5、 常量命名:全部单词大写:final String DBDRIVER=”darkness”

答案:

根据提示二第2,3点修改就行了

 

被忽略的问题在这:

规范指明: "第一个单词的首字母小写,之后的每一个单词的首字母大写"中的"单词"

具体含义是啥?

例子中的属性sCPU,C就是第二个单词了

而引发的问题,就在此, 
属性命名对于JavaBean来讲,第一个与第二个字母都要小写

javabean specification,规定了一般的属性名称首字母小写,

如果遇到前两个字母大写的属性,则getter方法保持属性名称不变,

例如URL属性的 getter方法为getURL,

但是并没有规定类似esCPU这样的属性的getter方法写成getsCPU的形式。
如果要符合javabean规范,则只能将sCPU改成scPU或者scpu了

入门资料都没有说到这个问题,

但新手经常犯这个毛病,坚持不下去就会严重丧失学习兴趣了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值