带有jsp:useBean的Javabean它们如何工作?我不明白
我在index.jsp和Servlet之间又做了一个jsp文件:
<jsp:useBean scope='session'/><jsp:setProperty name='binop' property='*'/>.
这做到了“魔术”。
解决方法我必须使用Java bean从jsp文件中获取2个数字和一个运算。提交数字后,将它们从该Java Bean带到servlet并返回它们的结果。问题是Javabean字段永远不会用文本框中写的数字来完成。所以,我有了index.jsp的主体:
<html><head> <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'> <title>JSP Page</title> <link rel='stylesheet' type='text/css' href='https://www.haobala.com/wenda/style.css' /></head><body> <h1>Calculator</h1> <FORM METHOD='POST' action='Controller'>N1: <input type ='text' name='nr1' value='0'>op: <input type ='text' name='op' value='+'>N2: <input type ='text' name='nr2' value='0'><INPUT TYPE='submit' NAME='actiune' VALUE='Calculate'/> </FORM> <jsp:useBean scope='session'/> <jsp:setProperty name='binOp' property='*'/></body>
servlet的processRequest方法Controller.java放在程序包servlet中:
protected void processRequest(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException { response.setContentType('text/html;charset=UTF-8'); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(true); BinaryOperation binOp = (BinaryOperation) session.getAttribute('binOp'); try {if (!binOp.isComplete()) { System.out.println(binOp.getNr1() + binOp.getNr2() + binOp.getOp()); response.sendRedirect('index.jsp');} else { out.println('<html>'); out.println('<head>'); out.println('<title>Servlet Controller</title>'); out.println('</head>'); out.println('<body>'); out.println('<h1>Bean in controller ' + binOp.getNr1() + '__' + binOp.getOp() + '__' + binOp.getNr2() + '</h1>'); out.println(binOp.toString()); out.println('</body>'); out.println('</html>');} } finally {out.close(); }}
然后将bean BinaryOperation放入程序包bean中:
package beans;public class BinaryOperation {private String nr1;private String op;private String nr2;public void setNr1(String nr1) { this.nr1 = nr1;}public void setOp(String op) { this.op = op;}public void setNr2(String nr2) { this.nr2 = nr2;}public String getNr1() { return nr1;}public String getOp() { return op;}public String getNr2() { return nr2;}public boolean isComplete() { return !(((nr1 == null) || (nr1.length() == 0)) || ((op == null) || (op.length() == 0)) || ((nr2 == null) || (nr2.length() == 0)));}}
在Apache日志中,我有if语句的下一个输出(请参阅servlet-System.out.println(binOp.getNr1()+binOp.getNr2()+ binOp.getOp());):nullnullnull
我的错误在哪里?
相关文章:
1. sublime-text - sublime text 3中编译python(sublimeREPL),如何仅运行单行/选定部分2. 使用weex扩展html5的项目存在ios不同版本的兼容性3. javascript - chart.js如何修改某个指定bar的颜色4. python3.x - python多进程,不能在同一窗口吗5. javascript - html5多个label中其中一个触发change,如何判断是哪一个出发了change6. mysql按照时间热度排序7. html5 - 目前 公司App 嵌入H5页面 做个 手机支付功能 没有做过 所以 请求各位有经验的 给个思路8. 网页爬虫 - python爬虫用BeautifulSoup爬取<s>元素并写入字典,但某些div下没有这一元素,导致自动写入下一条,如何解决?9. mysql - phpMyAdmin无法导入数据10. android-studio - android app微信登录一定要申请了登录权限才能测试?

网公网安备