집합 쿼리 - 같은 열의 다른 결과테이블을 합치고 싶을때.

카테고리 없음|2013. 11. 25. 11:21

http://pmguda.com/347





따로 합친 부분.

댓글()

[JSP] 안보이는 주석

jsp에서 클라이언트에서는 안보이는 주석을 달 수 잇다.


<%-- 주석 내용. --%>



<!-- --> 의 경우에는 html주석이기 때문에 클라이언트에서 소스보기를 하면 보이는 반면,


<%-- --%>는 jsp 주석이기 때문에 클라이언트 까지 가지 않는다.

댓글()

[Mybatis] like 파라메터값과 % 같이 쓰기

ban_name LIKE CONCAT('%', #{value}, '%')

<!-- ORACLE  : '%' || #{value} || '%' -->

댓글()

[JSP] jstl - pageContext.request.contextPath 줄여 쓰기.

<c:set var="myContextPath" value="${pageContext.request.contextPath}"/>
${myContextPath}로 사용

 

댓글()

[Spring]spring 로그인 체크 하는 인터셉터

 

- AdminSessionInterceptor.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.test.exam.interceptor;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
 
import com.test.exam.controller.AdminController;
 
 
//인터셉터를 등록하는 방법은 스프링 3.1이전과 3.2 이후는 다르다. 우리는 3.2이후 방법을 쓴다.
public class AdminSessionInterceptor extends HandlerInterceptorAdapter {
    private static final Logger logger = LoggerFactory.getLogger(AdminSessionInterceptor.class);
    
    @Override
    public boolean preHandle(HttpServletRequest request,
                                        HttpServletResponse response, 
                                        Object handler) throws Exception {
        HttpSession session = request.getSession();    
//        logger.debug(" what user login? : {}", session.getAttribute("whatUser"));
        if((session.getAttribute("whatUser") != "admin"
            || (session.getAttribute("sessionAdmin") == null)){
            response.sendRedirect(request.getContextPath()+"/");
            return false;
        }
        return super.preHandle(request, response, handler);
    }
}


-root-context.xml
1
2
3
4
5
6
7
8
9
10
11
12
    <!-- interceptor 설정. -->
    <interceptors>
    
        <!-- admin session interceptor 설정. -->
        <!-- 어드민 로그인을 체크하고 로그아웃 상태일 경우 메인페이지로 보내는 인터셉터를 등록. -->
        <interceptor>
            <!-- /admin/* 형태의 요청에 한해서만 인터셉트 적용 -->
            <mapping path="/admin/**/*"/>
            <beans:bean class="com.test.exam.interceptor.AdminSessionInterceptor"/>
        </interceptor>
        
    </interceptors>

인터셉터는 필터의 역할과 같다.

요청, 응답, 응답후의 상황엥 처리가 가능하도록 메소드가 존재한다.

preHandler는 요청시에 처리하도록 한다.



 - 위의 로그인 처리는 필터로 가능하나 사용하기에는 좀더 유용한것 같다.


댓글()

jQuery ajax 사용하기.

웹 & 안드로이드/HTML5|2013. 10. 28. 12:10

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//사용할 버전의 jquery js파일을 입력.
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script>
$('#userId').blur(function() {
        $.ajax({
               type: 'POST',  //포스트방식
               url: '/user/id_check_controller',     //요청처리
               data : 'userId='+ $('#userId').val(), //파라미터
               dataType : 'xml',      //처리한 요청을 받는 형식
               success: function(xml){       //성공시 해당함수 실행
                       
                       }
               }
        });
});
</script>



댓글()

[Spring]Spring - MyBatis 연동하기.

http://blog.naver.com/sorlove0?Redirect=Log&logNo=20190380263



    필요한 라이브러리.


-pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
          <!-- mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.26</version>
        </dependency>
 
        <!-- MyBatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.3</version>
        </dependency>
        
        <!-- MyBatis-Spring 연동 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.1</version>
        </dependency>
        
        <!-- Spring Tranjection -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>3.2.4.RELEASE</version>
        </dependency>
        
        <!-- commons dbcp -->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
        
        <!-- Spring jdbc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>3.2.4.RELEASE</version>
        </dependency>




- 스프링 빈 관리 설정파일에 다음 코드를 추가한다.

- root-context.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
    <!-- Scan all annotations exclude controller -->
    <!-- 컨트롤러 어노테이션을 제외한 모든 컴포넌트 어노테이션을 스캔. -->
    <context:component-scan base-package="com.exam.*">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    
    <!-- Transaction used annotation.-->
   <!-- 트랙잭션 처리를 어노테이션으로 사용.-->
    <tx:annotation-driven transaction-manager="transactionManager"/>
    
    <!-- 데이터소스 -->
   <!-- db에 접속하기 위한 커넥션 설정.-->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/project" />
        <property name="username" value="root" />
        <property name="password" value="java1234" />
    </bean>
    
    <!-- 트랜잭션 관리자 -->
   <!-- 위의 트랜잭션 어노테이션 처리할때 이름을 transactionManager로 설정하면 다음 코드를 
          쓸 필요 없다.-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
    
    <!-- 마이바티스 설정 -->
   <!-- 커넥션 설정으로 db에 직접 접속하는 sqlSession을 만드는 팩토리를 생성.-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="typeAliasesPackage" value="mybatis.test" />
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation" value="classpath:/mybatis-config.xml"/>
        <property name="mapperLocations">
            <array>
                <value>classpath:/*.xml</value>
            </array>
        </property>        
    </bean>
    
   <!-- 팩토리로 sqlSession을 생성.-->
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />
    </bean>
    


마이바티스 설정파일에 매퍼 파일을 등록할 필요 없이 여기서 바로 등록 가능하다.

댓글()

[Spring]spring ajax처리할때 간단하게 json으로 보내기

출처 - http://blog.naver.com/platinasnow?Redirect=Log&logNo=30177554726

 



JackSon 라이브러리를 추가.


- pom.xml
1
2
3
4
5
6
<!-- JackSon -->
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>



방법 1

xml 설정.


- servlet-context.xml
1
2
3
4
5
6
7
8
9
<!-- json 처리를 위한 MessageConverter -->
<beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <beans:property name="messageConverters">
        <beans:list>
            <beans:bean 
                  class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
        </beans:list>
    </beans:property>
</beans:bean>




컨트롤러 사용


-Controller.java
1
2
3
4
5
6
7
8
9
10
11
12
13
@RequestMapping(value="/ajax/index/isCheckAdminLogin", method = RequestMethod.POST)
@ResponseBody
public String isCheckedAdminLogin(@ModelAttribute Admin admin){
    //Map<String, Object> map = new HashMap<String, Object>();
//    System.out.println(admin.getAdminId()+admin.getAdminPw());
    if(adminService.isCheckedAdmin(admin)){
        //map.put("isChecked", "true");
        return "true";
    }else{
        //map.put("isChecked", "false");
        return "false";
    }        
}


ajax 요청된 컨트롤러의 리턴 값은 json으로 변환되어 응답한다.


@ResponseBody 로 객체를 리턴해도 json으로 변환 해 준다.



방법 2


-Controller.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//
import org.springframework.web.servlet.view.json.MappingJacksonJsonView;
//
 
@RequestMapping(value="/ajax/index/isCheckAdminLogin", method = RequestMethod.POST)
public ModelAndView isCheckedAdminLogin(
        @ModelAttribute Admin admin){        
    ModelAndView modelAndView = new ModelAndView(new MappingJacksonJsonView());
    //Map<String, Object> map = new HashMap<String, Object>();
//    System.out.println(admin.getAdminId()+admin.getAdminPw());
    if(adminService.isCheckedAdmin(admin)){
        modelAndView.addObject("isChecked""true");    
    }else{
        modelAndView.addObject("isChecked""false");    
    }
    return modelAndView;
}


메이븐 추가한 후, ModelAndView를 리턴할때 매핑을 json으로 매핑하면 된다.

댓글()

[Spring]스프링 charactor 인코딩 필터 추가.

<!-- 인코딩 필더-->
 <filter>
  <filter-name>encodingFilter</filter-name>
  <filter-class>
   org.springframework.web.filter.CharacterEncodingFilter
  </filter-class>
  <init-param>
   <param-name>encoding</param-name>
   <param-value>UTF-8</param-value>
  </init-param>
 </filter>

 <filter-mapping>
  <filter-name>encodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

출처 - http://www.java2go.net/blog/12

댓글()

[Mybatis]마이바티스 설정하기.

마이바티스MyBatis 홈페이지 https://code.google.com/p/mybatis/


iBatis       ->    MyBatis  가 되었다.

(apache)         (Google)


mybatis는 자바 소스안에 쿼리를 두지않고 따로 관리한다.

쿼리를 수정하게 되더라도 다시 재 컴파일 할 필요가 없다는 것이다.


1. 마이바티스 라이브러리 추가.


홈페이지에서 라이브러리 다운로드.

클래스패스에 라이브러리 추가.


혹은


메이븐 툴을 이용하여 의존성 주입.


2. 설정파일 생성.


- 설정파일 이름은 자신이 정하는 것이다.


-mybatis-config.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/exam"/>
        <property name="username" value="root"/>
        <property name="password" value="java1234"/>
      </dataSource>
    </environment>
  </environments>
  
  <mappers>
    <mapper resource="AdminMapper.xml"/>
  </mappers>
  
</configuration>


AdminMapper.xml은 쿼리를 모아놓은 xml파일이다.

여러개를 만들 수 있으며 실행 될때 전부 합쳐진다. 관리상 나눈것이다.



-AdminMapper.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
<?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="AdminMapper">
    <select id="selectAdminById" resultType="domain.Admin" parameterType="String">
        SELECT admin_name as adminName
             , admin_id as adminId
             , admin_password as adminPw
        FROM ADMIN
        WHERE admin_id = #{adminId}
    </select>
</mapper>


select태그의 resultType은 쿼리를 실행 후 리턴할 데이터 형이고, parameterType은 입력하는 데이터 형을 말한다.


쿼리문 중 #{}를 이용하여 변수를 입력한다.


3.Dao에서 xml파일 호출, 실행.


-AdminDao.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.io.IOException;
import java.io.InputStream;
 
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 
import domain.Admin;
 
public class AdminDao {
    SqlSessionFactory sqlSessionFactory = null;
    
    public AdminDao(){
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    }
 
    public Admin selectAdminbyId(String adminId){
        SqlSession session = sqlSessionFactory.openSession();
        
        return session.selectOne("AdminMapper.selectAdminById", adminId);
    }
}


- InputStream에 xml파일 리소스를 넣고, 이 것으로 sqlSessionFactory를 만든다.


- dao메소드에 팩토리를 이용하여 sqlSession을 만들고(db에 접속하고),

따로 만든xml파일의 쿼리문을 호출(namespace + sql Id로 호출.), 입력할 변수가 잇다면 변수도 입력한다.


- 리턴 형은 위의 xml파일의 쿼리문의 resultType으로 지정 되어있다.

댓글()