본문 바로가기
spring

spring framewrok MVC - 4 ( 부제 : sign-up & sign-in & session )

by devante 2014. 10. 28.


root-context.xml 에 mysql 과 mybatis 관련 설정 추가




WEB-INF/spring/root-context.xml 

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
    xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
        http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
    <!-- Root Context: defines shared resources visible to all other web components -->
        
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost/mysql"></property>
        <property name="username" value="root"></property>
        <property name="password" value="qwer1234"></property>

         *** 설정에 맞게 셋팅;;
    </bean>
    
    <bean id="sqlSessionFactory"
        class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocation"
            value="classpath:mybatis/mybatis-config.xml">
        </property>
    </bean>
    
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    
    <bean id="sqlSession"
        class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg ref="sqlSessionFactory"></constructor-arg>
    </bean>
</beans>


이제 mybatis-config.xml 과 mapper.xml 파일 추가


/resources/mybatis/mybatis-config.xml

<?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>
    <mappers>
        <mapper resource="mybatis/mapper.xml" />
    </mappers >
</configuration>


/resources/mybatis/mapper.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= "userControlMapper" >  
    <select id ="selectSample" parameterType="java.util.HashMap" resultType= "java.util.HashMap">
        select *
        from pred
    </select >
    
    <select id ="searchSample" parameterType="java.util.HashMap" resultType= "java.util.HashMap">
        select *
        from pred where username=#{j_username} and password=#{j_password}
    </select >
    
    <insert id="writeSample" parameterType="java.util.Map">
         insert into pred(username,password) values(#{j_username},#{j_password})
    </insert>
</mapper>



이것저것 처리할 Controller 처리 -_-


/java/com/spring/pred/HomeController.java

 package com.spring.prede;

import java.text.DateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import javax.servlet.http.HttpSession;

import org.apache.ibatis.session.SqlSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
    
    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
    
    @Autowired
    private SqlSession sqlSession;

    /**
     * Simply selects the home view to render by returning its name.
     */
    @RequestMapping(value = {"/","/home.do"}, method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        logger.info("Welcome home! The client locale is {}.", locale);
        
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
        
        String formattedDate = dateFormat.format(date);
        
        model.addAttribute("serverTime", formattedDate );
        
        List<HashMap<String, String>> outputs = sqlSession.selectList("userControlMapper.selectSample");
        //model.addAttribute("showDB", outputs.toString());
        model.addAttribute("showDB", outputs);
        
        return "home";
    }
    
    @RequestMapping("/signin.do")
      public String signin() {
        return "signin";
    }
    
    @RequestMapping("/signup.do")
      public String signup(Model model) {
        return "signup";
    }
    
    @RequestMapping("/writeProc.do")
    public ModelAndView writeProc(@RequestParam Map<String, Object> paramMap, ModelMap model) throws Throwable{

        System.out.println("username = " + paramMap.get("j_username"));
        System.out.println("password = " + paramMap.get("j_password"));
        
        int writeCnt = writeProc(paramMap);
        
        //System.out.println(writeCnt + " writed...");
        
        ModelAndView mav = new ModelAndView();
        mav.setViewName("redirect:/signup.do");
        return mav;
    }
    
    public int writeProc(Map<String, Object> paramMap) {
        return sqlSession.insert("userControlMapper.writeSample",paramMap );
    }
        
}



  /java/com/spring/pred/LoginController.java

 package com.spring.prede;

import java.security.Principal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;

@Controller
@SessionAttributes("username")
public class LoginController {
    
    @Autowired
    private SqlSession sqlSession;
        
    @RequestMapping(value = {"/answer.do"},method = RequestMethod.POST)
    public String answer(
              @RequestParam Map<String, Object> paramMap, HttpSession session, HttpServletRequest request, Model model) {          
        
        List<HashMap<String, String>> outputs = sqlSession.selectList ("userControlMapper.searchSample",paramMap);
      
          if ( outputs.isEmpty() )
            model.addAttribute("username_result","FAIL");
          else {
            model.addAttribute("username_result","OK");
              session.setAttribute("username", paramMap.get("j_username"));
          }
      
      return "answer";
    }  
}



등등의 이것저것 작업 -_-;;; 갑자기 급귀찮;;;;


spring-prede_4.7z





반응형

댓글