집합 쿼리 - 같은 열의 다른 결과테이블을 합치고 싶을때.
jsp에서 클라이언트에서는 안보이는 주석을 달 수 잇다.
<%-- 주석 내용. --%>
<!-- --> 의 경우에는 html주석이기 때문에 클라이언트에서 소스보기를 하면 보이는 반면,
<%-- --%>는 jsp 주석이기 때문에 클라이언트 까지 가지 않는다.
자바 문법 문제 1 (0) | 2013.12.04 |
---|---|
OR 연산자의 연산. (0) | 2013.12.03 |
[Mybatis] like 파라메터값과 % 같이 쓰기 (0) | 2013.11.15 |
[JSP] jstl - pageContext.request.contextPath 줄여 쓰기. (0) | 2013.11.13 |
[Spring]spring 로그인 체크 하는 인터셉터 (0) | 2013.11.06 |
ban_name LIKE CONCAT('%', #{value}, '%')
<!-- ORACLE : '%' || #{value} || '%' -->
OR 연산자의 연산. (0) | 2013.12.03 |
---|---|
[JSP] 안보이는 주석 (1) | 2013.11.19 |
[JSP] jstl - pageContext.request.contextPath 줄여 쓰기. (0) | 2013.11.13 |
[Spring]spring 로그인 체크 하는 인터셉터 (0) | 2013.11.06 |
[Spring]Spring - MyBatis 연동하기. (0) | 2013.10.28 |
<c:set var="myContextPath" value="${pageContext.request.contextPath}"/>
[JSP] 안보이는 주석 (1) | 2013.11.19 |
---|---|
[Mybatis] like 파라메터값과 % 같이 쓰기 (0) | 2013.11.15 |
[Spring]spring 로그인 체크 하는 인터셉터 (0) | 2013.11.06 |
[Spring]Spring - MyBatis 연동하기. (0) | 2013.10.28 |
[Spring]spring ajax처리할때 간단하게 json으로 보내기 (0) | 2013.10.27 |
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);
}
} |
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> |
[Mybatis] like 파라메터값과 % 같이 쓰기 (0) | 2013.11.15 |
---|---|
[JSP] jstl - pageContext.request.contextPath 줄여 쓰기. (0) | 2013.11.13 |
[Spring]Spring - MyBatis 연동하기. (0) | 2013.10.28 |
[Spring]spring ajax처리할때 간단하게 json으로 보내기 (0) | 2013.10.27 |
[Spring]스프링 charactor 인코딩 필터 추가. (0) | 2013.10.27 |
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> |
javascript json 맵 형태로 받았을때 키 이름을 출력하는 방법 (0) | 2013.12.01 |
---|---|
여러개 체크박스를 가져와 개별 클릭 이벤트 체크 하는방법 (0) | 2013.11.26 |
html 태그 목록 -펌- (0) | 2013.10.18 |
javascript에서 StringBuffer 사용하기. (0) | 2013.10.13 |
jQuery - <select>태그의 선택 된 값 가져오기. (0) | 2013.10.12 |
http://blog.naver.com/sorlove0?Redirect=Log&logNo=20190380263
필요한 라이브러리.
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> |
- 스프링 빈 관리 설정파일에 다음 코드를 추가한다.
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>
|
마이바티스 설정파일에 매퍼 파일을 등록할 필요 없이 여기서 바로 등록 가능하다.
[JSP] jstl - pageContext.request.contextPath 줄여 쓰기. (0) | 2013.11.13 |
---|---|
[Spring]spring 로그인 체크 하는 인터셉터 (0) | 2013.11.06 |
[Spring]spring ajax처리할때 간단하게 json으로 보내기 (0) | 2013.10.27 |
[Spring]스프링 charactor 인코딩 필터 추가. (0) | 2013.10.27 |
[Mybatis]마이바티스 설정하기. (0) | 2013.10.25 |
출처 - http://blog.naver.com/platinasnow?Redirect=Log&logNo=30177554726
JackSon 라이브러리를 추가.
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 설정.
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> |
컨트롤러 사용
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
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]spring 로그인 체크 하는 인터셉터 (0) | 2013.11.06 |
---|---|
[Spring]Spring - MyBatis 연동하기. (0) | 2013.10.28 |
[Spring]스프링 charactor 인코딩 필터 추가. (0) | 2013.10.27 |
[Mybatis]마이바티스 설정하기. (0) | 2013.10.25 |
[Spring]6. spring MVC 시작하기. (0) | 2013.10.22 |
<!-- 인코딩 필더-->
<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>
[Spring]Spring - MyBatis 연동하기. (0) | 2013.10.28 |
---|---|
[Spring]spring ajax처리할때 간단하게 json으로 보내기 (0) | 2013.10.27 |
[Mybatis]마이바티스 설정하기. (0) | 2013.10.25 |
[Spring]6. spring MVC 시작하기. (0) | 2013.10.22 |
[Spring]5. Spring MVC 설정하기. (0) | 2013.10.22 |
마이바티스MyBatis 홈페이지 https://code.google.com/p/mybatis/
iBatis -> MyBatis 가 되었다.
(apache) (Google)
mybatis는 자바 소스안에 쿼리를 두지않고 따로 관리한다.
쿼리를 수정하게 되더라도 다시 재 컴파일 할 필요가 없다는 것이다.
1. 마이바티스 라이브러리 추가.
홈페이지에서 라이브러리 다운로드.
클래스패스에 라이브러리 추가.
혹은
메이븐 툴을 이용하여 의존성 주입.
2. 설정파일 생성.
- 설정파일 이름은 자신이 정하는 것이다.
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파일이다.
여러개를 만들 수 있으며 실행 될때 전부 합쳐진다. 관리상 나눈것이다.
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파일 호출, 실행.
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으로 지정 되어있다.
[Spring]spring ajax처리할때 간단하게 json으로 보내기 (0) | 2013.10.27 |
---|---|
[Spring]스프링 charactor 인코딩 필터 추가. (0) | 2013.10.27 |
[Spring]6. spring MVC 시작하기. (0) | 2013.10.22 |
[Spring]5. Spring MVC 설정하기. (0) | 2013.10.22 |
[Spring]4. scope (0) | 2013.10.21 |