Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    25

    [jsp] visualizzare una lista dal db in ordine

    Ciao a tutti sto tentando in tutti i modi di visualizzare una lista nella pagina jsp ma non ci sono riuscito, allora per fare delle prove ho creato un servlet che richiamo dal browser, ma neanche in questo modo mi esce la lista che ho chiesto... qualcuno sa dove sbaglio?? sono 3 giorni che ci sbatto la testa dalla mattina alla sera

    grazie



    Servlet displayallquestion:

    codice:
    package com.qapro.servlets;
    
    
    import java.io.IOException;
    import java.util.List;
    
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    
    import com.qapro.entity.Question;
    import com.qapro.service.QuestionService;
    
    
    /**
     * Servlet implementation class DisplayAllQuestions
     */
    public class DisplayAllQuestions extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
    
        /**
         * @see HttpServlet#HttpServlet()
         */
        public DisplayAllQuestions() {
            super();
            // TODO Auto-generated constructor stub
        }
    
    
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
         *      response)
         */
        protected void doGet(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
            Long userId = (Long) request.getSession().getAttribute("userId");
            
            QuestionService questionService = new QuestionService();
            List<Question> questions = null;
    
    
            try {
                questions = questionService.getAllQuestions(userId);
            }
    
    
            catch (Exception e) {
    
    
            }
    
    
            request.setAttribute("questions", questions);
            request.getRequestDispatcher("/memberhome.jsp").forward(request,
                    response);
            
        }
    
    
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
         *      response)
         */
        protected void doPost(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
        }
    
    
    }
    QuestionService:

    codice:
    package com.qapro.service;
    
    
    import java.util.ArrayList;
    import java.util.List;
    
    
    import com.qapro.dao.AnswerDao;
    import com.qapro.dao.QuestionDao;
    import com.qapro.entity.Answer;
    import com.qapro.entity.Question;
    
    
    public class QuestionService {
    
    
        QuestionDao questionDao = new QuestionDao();
        AnswerDao answerDao = new AnswerDao();
        
        public Question getQuestionAndAnswers(Long questionId){
            
            Question question = questionDao.getQuestionById(questionId);
            
            if(question != null){
                List<Answer> answerList = answerDao.getAnswersToQuestion(questionId);
                
                question.setAnswers(answerList);
            }
            
            return question;
        }
        
        public List<Question> getAllQuestions(Long askerId){
            
            List<Question> questions = questionDao.getQuestionByAskerId(askerId);
            
            return questions;
        }
        
        
    
    
    
    
        public static void main(String args[]){
            QuestionService service = new QuestionService();
            
            Question question = service.getQuestionAndAnswers(1L);
            
            System.out.println(question);
        }
        
    }
    QuestionDao:

    codice:
    package com.qapro.dao;
    
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Date;
    import java.util.List;
    
    
    import com.qapro.entity.EmailValidation;
    import com.qapro.entity.Question;
    import com.qapro.enums.VotingEnum;
    
    
    public class QuestionDao extends JavathlonJdbcTemplate<Question>{
        
        private String insertQuestionSql = "INSERT INTO qapro.question (text,insert_date,is_active,asker_id,up_vote,down_vote)"
                                   +" VALUES (:text , :insert_date , :is_active , :asker_id , :up_vote , :down_vote )";
        
        private String selectQuestionSql = "select id,text,insert_date,is_active,asker_id,up_vote,down_vote from question";
        
        public Long insertQuestion(Question question) throws Exception{
            SqlParameterValues values = new SqlParameterValues();
            values.addValue("text", question.getText());
            values.addValue("insert_date", new Date());
            values.addValue("is_active", true);
            values.addValue("asker_id", question.getAskerId());
            values.addValue("up_vote", 0L);
            values.addValue("down_vote", 0L);
            
            return this.insertItem(insertQuestionSql, values);
        }
        
        public Question getQuestionById(Long id)
        {
            String sql = selectQuestionSql + " where id = :question_id";
            List<Question> questionList = this.getList(sql, new SqlParameterValues().addValue("question_id", id), new QuestionRowMapper());
            
            if(questionList != null && questionList.size() > 0)
                return questionList.get(0);
            else return null;
            
        }
        
        public List<Question> getQuestionByAskerId(Long id)
        {
            String sql = selectQuestionSql + " where asker_id = :asker_id";
            List<Question> questionList = this.getList(sql, new SqlParameterValues().addValue("asker_id", id), new QuestionRowMapper());
            
            if(questionList != null && questionList.size() > 0)
                
                
                return questionList;
            else return null;
            
        }
        
        public void voteQuestion(Long questionId, VotingEnum type) throws Exception
        {
            String upVoteSql = "UPDATE question SET up_vote = up_vote +1 where id = :question_id";
            String downVoteSql = "UPDATE question SET down_vote = down_vote +1 where id = :question_id";
            
            if(VotingEnum.UP == type)
                this.update(upVoteSql, new SqlParameterValues().addValue("question_id", questionId));
            else if(VotingEnum.DOWN == type)
                this.update(downVoteSql, new SqlParameterValues().addValue("question_id", questionId));
            
            
        }
        
        public static void main(String args[]){
            
            try {
                QuestionDao questionDao = new QuestionDao();
                
                Question question = new Question();
                question.setText("What is the best resource for Java training?");
                question.setAskerId(3L);            
                questionDao.insertQuestion(question);
                
    //            Question question2 = questionDao.getQuestionById(4L);
    //            if(question2 != null)
    //                System.out.println("question is: " + question2.getText());
                    
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        
        
        
        private class QuestionRowMapper  implements SqlRowMapper<Question>{
    
    
            public Question mapSqlToObject(ResultSet resultSet) throws SQLException {
                
                Question question = new Question();
                question.setId(resultSet.getLong(1));
                question.setText(resultSet.getString(2));
                question.setInsertDate(resultSet.getDate(3));            
                question.setActive(resultSet.getBoolean(4));
                question.setAskerId(resultSet.getLong(5));
                question.setUpVote(resultSet.getLong(6));
                question.setDownVote(resultSet.getLong(7));
            
                return question;
            }
            
        }
        
    }
    Ultima modifica di MItaly; 04-01-2015 a 17:49 Motivo: Aggiunti tag [CODE], spostato in Java

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ho letto velocemente il codice che hai postato e, a prima vista, non rilevo nulla di sbagliato. Però non hai postato la JSP che si occupa di visualizzare i dati e non hai detto che risultato ottieni che non soddisfa le tue esigenze. L'unica cosa che stona fra il titolo della tua discussione ed il codice che hai scritto è che parli di una lista "in ordine", ma non vedo alcuna sorta di ordinamento dei record.

    Cos' è che succede se richiami la servlet? Va in errore? Non stampa nulla? Altro? Ci sono errori nel log del servlet container/application server?

    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    25
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Ho letto velocemente il codice che hai postato e, a prima vista, non rilevo nulla di sbagliato. Però non hai postato la JSP che si occupa di visualizzare i dati e non hai detto che risultato ottieni che non soddisfa le tue esigenze. L'unica cosa che stona fra il titolo della tua discussione ed il codice che hai scritto è che parli di una lista "in ordine", ma non vedo alcuna sorta di ordinamento dei record.

    Cos' è che succede se richiami la servlet? Va in errore? Non stampa nulla? Altro? Ci sono errori nel log del servlet container/application server?


    ciao Lele il problema è proprio questo che quando richiamo displayallquestion (la servlet) mi reindirizza a memberhome.jsp ma non si visualizza la lista con tutte le domande ... ecco la pagina jsp

    memberhome.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@page import="java.util.List"%>
    <%@page import="com.qapro.entity.Question"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>


    <span style="color: #333333"> You are logged in as <b> ${sessionScope.memberInfo.userName} </b></span>
    <br></br>
    <span style="color: #333333"> Here is the latest question: </span>
    <br></br>
    <a href="DisplayQuestion?qId=1">Advice me a Java course..</a>


    <cut value="${request.getAttribute(questions)}"></cut>


    </body>
    </html>

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Beh, in quel modo non te le visualizzarà di sicuro. Stai buttando in output un oggetto List <Question>, il massimo che visualizzerai è il valore ottenuto dal l'invocazione del toString () su quell'oggetto. Per visualizzarne il contenuto in modo umano devi scorrere quella lista e far stampare qualche informazione di ogni singolo oggetto Question (di cui non sappiamo assolutamente nulla). In questo modo:

    codice:
    <c:forEach items="${questions}" var="question">
       ${question.domanda}<br />
    </c:forEach>

    Nel codice ho supposto che la classe Question possieda almeno il metodo getDomanda () che restituisce il testo della domanda.
    Come vedi ho usato un forEach per scorrere la lista. Ciascun oggetto viene indirizzato dalla variabile "question".


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    25
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Beh, in quel modo non te le visualizzarà di sicuro. Stai buttando in output un oggetto List <Question>, il massimo che visualizzerai è il valore ottenuto dal l'invocazione del toString () su quell'oggetto. Per visualizzarne il contenuto in modo umano devi scorrere quella lista e far stampare qualche informazione di ogni singolo oggetto Question (di cui non sappiamo assolutamente nulla). In questo modo:

    codice:
    <c:forEach items="${questions}" var="question">
       ${question.domanda}<br />
    </c:forEach>

    Nel codice ho supposto che la classe Question possieda almeno il metodo getDomanda () che restituisce il testo della domanda.
    Come vedi ho usato un forEach per scorrere la lista. Ciascun oggetto viene indirizzato dalla variabile "question".


    Ciao.

    ok io quindi ho la mia classe question
    codice:
    public class Question implements Serializable {
    
    
    	private Long id;
    	private String text;
    	private Date insertDate;
    	private Boolean active;
    	private Long askerId;
    	private Long upVote;
    	private Long downVote;
    	
    	private List<Answer> answers = new ArrayList<Answer>();
    	
    	public Long getId() {
    		return id;
    	}
    	public void setId(Long id) {
    		this.id = id;
    	}
    	public String getText() {
    		return text;
    	}
    	public void setText(String text) {
    		this.text = text;
    	}
    	public Date getInsertDate() {
    		return insertDate;
    	}
    	public void setInsertDate(Date insertDate) {
    		this.insertDate = insertDate;
    	}
    	public Boolean getActive() {
    		return active;
    	}
    	public void setActive(Boolean active) {
    		this.active = active;
    	}
    	public Long getAskerId() {
    		return askerId;
    	}
    	public void setAskerId(Long askerId) {
    		this.askerId = askerId;
    	}
    	public Long getUpVote() {
    		return upVote;
    	}
    	public void setUpVote(Long upVote) {
    		this.upVote = upVote;
    	}
    	public Long getDownVote() {
    		return downVote;
    	}
    	public void setDownVote(Long downVote) {
    		this.downVote = downVote;
    	}
    	public List<Answer> getAnswers() {
    		return answers;
    	}
    	public void setAnswers(List<Answer> answers) {
    		this.answers = answers;
    	}
    	
    	
    	
    }
    nella quale aggiungo i metodi

    codice:
    public String getDomanda() {
    		return text;
    	}
    	public void setDomanda(String text) {
    		this.text = text;
    	}
    e fare così in modo che nel jsp venga preso

    ${question.domanda}
    giusto?

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Se già hai il metodo getText() usa quello... non è necessario che tu definisca un metodo identico a quello che io ho supposto che vi fosse... non conoscendo la tua classe Question ho solo tirato ad indovinare.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.