많이 부족한 사람
10
2020-04-27 18:20:02
2
139

jsp 출력이 원하는 방식대로 되지 않습니다


제가 현재 진행하고 있는 프로젝트가 데이터베이스에 저장된 데이터를 파싱해와서 jsp에 출력시키는 것이 목적입니다. 현재 java를 사용하고 있고, mybatis를 이용하여 jsp로 출력시키고 있습니다.

지금까지 진행된 정도는 데이터베이스에 값을 넣고 그 값을 파싱해와서 jsp에 출력시키는 것까지는 됬습니다. 하지만 여기서 문제는 

보이는 것과 같이 출력이 되는데 제가 원하는 출력방식은

No.1 엽문4 naver

No.2 1917 naver

No.3 걸즈 앤... naver

No.4 나는 내일... naver

No.5 그시절... naver

No.6 주디 naver

No.7 사랑이 뭘까 naver

위와 같이 출력이 될 수 있도록 하는 것이 목표입니다. 계속해서 자료를 찾아보고 적용도 시켜봤지만 잘 해결되지는 않고 있습니다. 혹시 위와 같이 출력할 수 있도록 하는 방법을 알고 계신다면 정보 공유 부탁드립니다. 

밑에 코드 게시해놓겠습니다. 밑에 코드말고 다른 코드도 알고 싶으시면 댓글에 남겨주세요.

1. sql.xml(이 코드로 데이터베이스에서 데이터를 가져옵니다.)

<?xml version="1.0" encoding="UTF-8"?>
 
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
<mapper namespace="test">
    <select id="selectMember" resultType="String">
        SELECT rank FROM search
    </select>
    
      
    <select id="selectUser" resultType="String">
        SELECT keyword FROM SEARCH
    </select>

    
    <select id="select" resultType="String">
        select ID from search where id ='2'
    </select>
    
    
    <select id="selectsite" resultType="String">
        SELECT site FROM SEARCH where site ='naver'
    </select>
    
    <insert id="insertPlayer" parameterType="String">
    	<selectKey keyProperty="id" resultType="Integer" order="BEFORE">
			SELECT seq.currval FROM dual
		</selectKey>
        insert into SEARCH (id,rank,keyword,se_date,site) VALUES (seq.nextval,#{rank},#{keyword},#{date},#{site})
    </insert>
</mapper>


2. MyBatisTest.java(mybatis를 통하여 가져온 값을 list로 정렬합니다.)

package pe.js.tutorial;

import java.util.List;
import java.io.IOException;
import java.io.Reader;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;

public class MybatisTest {
	
	List<Object> result;
	List<Object> result1;
	List<Object> result2;
	
	public void test() {
		SqlSession session = SqlMapClient.getSqlSession();
		List<Object> mem = session.selectList("test.selectMember");
		result = mem;
        System.out.println("MEMBER Name: " + mem);
        //return mem;
	}
	
	public void test1() {
		SqlSession session = SqlMapClient.getSqlSession();
		List<Object> mem = session.selectList("test.selectUser");
		result1 = mem;
        System.out.println("MEMBER Name: " + mem);
        //return mem;
	}
	
	public void test2() {
		SqlSession session = SqlMapClient.getSqlSession();
		List<Object> mem = session.selectList("test.selectsite");
		result2 = mem;
        System.out.println("MEMBER Name: " + mem);
        //return mem;
	}
	
	
	public List<Object> getresult() {
		return result;
	}
	
	public List<Object> getresult1() {
		return result1;
	}
	
	public List<Object> getresult2() {
		return result2;
	}
}


3. main.jsp(출력을 하는 코드입니다.)

<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.Statement" %>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException" %>
<%@ page import = "java.util.List" %> 
<%@ page import ="pe.js.tutorial.MybatisTest" %>
<%@ page import ="pe.js.tutorial.SqlMapClient" %>
<%@ page import ="pe.js.tutorial.main" %>
<%@ page import ="config.*" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="../css/main.css">
<link rel="stylesheet" type="text/css" href="../css/slick.css">
<script src="https://code.jquery.com/jquery-2.2.0.min.js" type="text/javascript"></script>
<script src="../js/slick.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
	
	
	<div class="bg"></div>
	<div class="section">
		<div class="nav">
			<img class="logo" src="../image/smartchart.png"/>
		</div>
		
		<div class="contents">
			<h1 class="chart-logo">실시간 차트</h1>
			<div class="slide">
			    <div class="chart">
					<div class="chart-con">
						<h1 class="site" id ="hi"></h1>
						
						<% MybatisTest my = new MybatisTest();%>
						<% my.test(); %>
						<% request.setAttribute("result", my.getresult());%>
						<c:out value="${result}"/>						
						
						
						<% my.test1(); %>
						<% request.setAttribute("result1", my.getresult1());%>
						<c:out value="${result1}"/>	
						
						
						<div class="keyword">
						
						<% my.test2(); %>
						<% request.setAttribute("result2", my.getresult2());%>
						<c:out value="${result2}"/>	
						</div>						
					</div>
			    </div>
			    <div class="chart">
					
			    </div>
			    <div class="chart">
					
			    </div>
			    <div class="chart">
					
			    </div>
			    <div class="chart">
					
			    </div>
			    <div class="chart">
					
			    </div>
			  </div>
		</div>
	</div>
	<script type="text/javascript" src="../js/slide.js"></script>
</body>
</html>


0
0
  • 답변 2

  • NULL만나면
    2k
    2020-04-27 18:49:22 작성 2020-04-27 18:51:58 수정됨

    제가 볼 때는

    1. result는 1개만으로 충분합니다.

    2. 그럴려면 3개로 분리된 SQL을 1개로 합쳐야하는데 JOIN이 필요하겠죠.

    3. 자바도 String이 아닌 Map<String, String> 구조로 변경해야겠죠. 이 Map이 여러건이니 List<Map<String, String>> 구조가 되야하구요.

    이해가 안되시면 다시 학습하셔야 합니다.

    0
  • DOwnUniv
    36
    2020-04-27 21:26:52

    result는 한개만으로 하시면 될 것 같으시구용.

    selectList는 요소를 하나씩 받아오는게 아닌 해당 쿼리문(select)을 실행시켜 요소를 전부 긁어 온다고 생각하시면 될 것 같아요.

    윗분 말씀처렁 result 하나로만 만들려면 List안에 Map 세개로 구성 하는게 좋을 것 같아요.

    Sqlsession 객체도 하나만 선언하면 보기에도 더 좋을 것 같아요^^

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.