model.addAttribute使用是否正确?JSP页面写法是否正确?

流离影风 发布于 2015/07/28 14:09
阅读 16K+
收藏 0

JAVA中对指定信息的查询,参数是在别的方法中查询出来的主键,现在已经能将指定信息查询出来:

public void getAllMobile(String result1) {

        ModelMap model=new ModelMap();
        Connection conn=null;
        try {            
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
            String strSql = "select * from mobile where number=?" ;        
            PreparedStatement ps = conn.prepareStatement(strSql);
            ps.setString(1, result1);                    
            ResultSet result = ps.executeQuery();
        while(result.next()){
            model.addAttribute("aa",result.getString("a"));                
        }
            conn.close();
        } catch (SQLException e) {        
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }                                
    }   

JSP页面:

<%@ page language="java" import="java.sql.*,java.io.*,java.util.*"%>  
<%@ page contentType="text/html;charset=utf-8"%>  
<%@page import="com.bw.model.Mobile" %>
<%@page import="com.bw.dao.MobileDao" %>
<%@page import="com.bw.controller.*" %>
<%@ page isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>  
<head>  </head>  
<body>   
<table>    
    <c:forEach items="${aa}" var="a1">
          <tr>
              <td>查询的手机号码:</td>
              <td>${a1.value.number} </td>
          </tr>
          <tr>
              <td>号码的归属地:</td>
              <td>${a1.value.local}</td>
          </tr>
          <tr>
              <td>电话卡的种类:</td>
              <td>${a1.value.type}</td>
          </tr>
          <tr>
              <td>所属地区区号:</td>
              <td>${a1.value.description}</td>
          </tr>
          <tr>
              <td>所属地区邮编:</td>
              <td>${a1.value.code}</td>
          </tr>      
       </c:forEach>
      </table>          
  </body>  
</html>
  
视频上看人家写的model和我这个有些区别,貌似我的是错的

加载中
0
lijegd
lijegd
  while(result.next()){
            model.addAttribute("aa",result.getString("a"));                

        }

这里面遍历多少次,你的aa对应的value都只是一个字符串,而不是一个数组

流离影风
流离影风
回复 @lijegd : 我重贴下 你看看
lijegd
lijegd
回复 @流离影风 : true的情况下,你的${aa}只是字符串,不具有表达式的意义,而是false时,作为表达式,只是输出$(aa)对应的值。
流离影风
流离影风
回复 @lijegd : 我没有在用foreach了 直接先一条一条的输出,结果把<%@ page isELIgnored="false" %> 改为true,可以显示${aa},false情况下不显示
lijegd
lijegd
回复 @流离影风 : 你的aa都不是一个数组,所以你的forEach循环就没有结果
流离影风
流离影风
回复 @lijegd : 试过了,${aa},${number}都试过了 ,现在虽然不是空白页面,但是只是汉字出来了
下一页
0
流离影风
流离影风

JSP页面:

<%@ page language="java" import="java.sql.*,java.io.*,java.util.*"%>  
<%@ page contentType="text/html;charset=utf-8"%>  
<%@page import="com.bw.model.Mobile" %>
<%@page import="com.bw.dao.MobileDao" %>
<%@page import="com.bw.controller.*" %>
<%@ page isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>  
<head>  </head>  
<body>   
<table>    
    
          <tr>
              <td>查询的手机号码:</td>
              <td>${aa} </td>
          </tr>
          <tr>
              <td>号码的归属地:</td>
              <td>${bb}</td>
          </tr>
          <tr>
              <td>电话卡的种类:</td>
              <td>${cc}</td>
          </tr>
          <tr>
              <td>所属地区区号:</td>
              <td>${dd}</td>
          </tr>
          <tr>
              <td>所属地区邮编:</td>
              <td>${ee}</td>
          </tr>      
      
      </table>          
  </body>  
</html>
  
java程序:

 public void getAllMobile(String result1) {
        ModelMap model=new ModelMap();
        Connection conn=null;
        try {            
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
            String strSql = "select * from mobile where number=?" ;        
            PreparedStatement ps = conn.prepareStatement(strSql);
            ps.setString(1, result1);                    
            ResultSet result = ps.executeQuery();
            
        while(result.next()){
            //System.out.println(result.getString("number"));
            model.addAttribute("aa",result.getString("number"));
            model.addAttribute("bb",result.getString("local"));
            model.addAttribute("cc",result.getString("type"));
            model.addAttribute("dd",result.getString("description"));
            model.addAttribute("ee",result.getString("code"));
            //model.adda
            
        }
            conn.close();
        } catch (SQLException e) {        
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }                                
    }   

流离影风
流离影风
@lijegd 控制台可以将这五个数据打印出来
lijegd
lijegd
回复 @流离影风 : model.addAttribute("ee",result.getString("code"));System.out.println(result.getString("code"));看看控制台有没有打印数据?
流离影风
流离影风
@lijegd 没有啊,和以前一样 还是什么都没打印
lijegd
lijegd
这个运行结果 是不是打印了最后一条记录?
0
lijegd
lijegd
 public void getAllMobile(String result1) {
       ModelAndView modelAndView = new ModelAndView();
 modelAndView.setViewName("xxx.jsp");
        Connection conn=null;
        try {            
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
            String strSql = "select * from mobile where number=?" ;        
            PreparedStatement ps = conn.prepareStatement(strSql);
            ps.setString(1, result1);                    
            ResultSet result = ps.executeQuery();
            
        while(result.next()){
            //System.out.println(result.getString("number"));
            //model.addAttribute("aa",result.getString("number"));
            //model.addAttribute("bb",result.getString("local"));
            //model.addAttribute("cc",result.getString("type"));
            //model.addAttribute("dd",result.getString("description"));
            //model.addAttribute("ee",result.getString("code"));
modelAndView.addObject("ee", result.getString("code"));
            //model.adda
            
        }
            conn.close();
        } catch (SQLException e) {        
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }     
return modelAndView;
    }    
0
流离影风
流离影风
我这个是不是因为在jsp页面上没有接收啊
流离影风
流离影风
@lijegd 可是我就是按照网上的写法来写的
lijegd
lijegd
嗯,很有可能
返回顶部
顶部