idea 2017 을 사용 하여 SSM 프레임 워 크 구축(그림 단계)

23749 단어 idea세우다SSM
SSM 프레임 을 만 드 는 데 오 랜 시간 이 걸 렸 다 니!특별히 기록 합 니 다!
준비 해 야 할 환경:
  • idea 2017.1
  • jdk1.8
  • Maven 3.3.9
  • 아이디어 와 Maven,jdk 를 미리 설정 하 십시오.이번 프로젝트 는 모두 비교적 새로운 것 을 사용 합 니 다.
    주:ide 레 드 라인 설정 이 잘못 되 었 습 니 다.괜 찮 습 니 다!실행 가능!
    단계:
    첫째,아이디어 로 Maven webapp 프로젝트 를 새로 만 듭 니 다.




    Finish 를 클릭 하면 첫 번 째 구축 이 느 릴 수 있 고 심지어 VPN 이 있어 야 구축 에 성공 할 수 있 습 니 다.
    2.디 렉 터 리 구조 구축
    제 가 열거 한 것 은 구축 이 끝 난 후에 모든 디 렉 터 리 와 파일 입 니 다.여러분 은 먼저 디 렉 터 리 파일 을 만 든 다음 에 저 는 파일 내용 을 드 리 고 있 습 니 다.

    이 디 렉 터 리 가 만들어 진 후에 아이디어 가 디 렉 터 리 역할 을 식별 할 수 있 도록 설정 해 야 합 니 다.File-Project Structure 를 선택 하 십시오.

    설정 완료 후 ok
    3.프로필 내용
    pom.xml
    
    <project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.chatRobot</groupId>
      <artifactId>ChatRobot</artifactId>
      <packaging>war</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>ChatRobot Maven Webapp</name>
      <url>http://maven.apache.org</url>
    
      <properties>
        <!--          -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <!-- spring    -->
        <spring.version>4.3.5.RELEASE</spring.version>
        <!-- mybatis    -->
        <mybatis.version>3.4.1</mybatis.version>
      </properties>
    
      <dependencies>
    
        <!-- java ee -->
        <dependency>
          <groupId>javax</groupId>
          <artifactId>javaee-api</artifactId>
          <version>7.0</version>
        </dependency>
    
        <!--      -->
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.12</version>
        </dependency>
    
        <!--   slf4j      -->
        <dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-classic</artifactId>
          <version>1.2.2</version>
        </dependency>
    
        <!-- JSON -->
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.8.7</version>
        </dependency>
    
    
        <!--     -->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.41</version>
          <scope>runtime</scope>
        </dependency>
    
        <!--        -->
        <dependency>
          <groupId>com.mchange</groupId>
          <artifactId>c3p0</artifactId>
          <version>0.9.5.2</version>
        </dependency>
    
        <!-- MyBatis -->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>${mybatis.version}</version>
        </dependency>
    
        <!-- mybatis/spring    -->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>1.3.1</version>
        </dependency>
    
        <!-- Spring -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-beans</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-tx</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-test</artifactId>
          <version>${spring.version}</version>
        </dependency>
    
      </dependencies>
    
      <build>
        <finalName>ChatRobot</finalName>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <!--   JDK   -->
              <source>1.8</source>
              <target>1.8</target>
            </configuration>
          </plugin>
        </plugins>
      </build>
    
    </project>
    오른쪽 하단 업데이트 pom 주의
    logback.xml
    
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration debug="true">
      <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
          <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
      </appender>
      <root level="debug">
        <appender-ref ref="STDOUT"/>
      </root>
    </configuration>
    출력 형식 과 내용 을 제어 할 수 있 으 며 관심 있 는 것 은 스스로 설정 할 수 있 습 니 다.
    jdbc.properties
    
    jdbc.driver=com.mysql.jdbc.Driver
    #     
    jdbc.url=jdbc:mysql://xxxxxxxxx:3306/ChatRobot?useUnicode=true&characterEncoding=utf8
    #   
    jdbc.username=xxxx
    #  
    jdbc.password=xxxxx
    #     
    c3p0.maxPoolSize=30
    #     
    c3p0.minPoolSize=10
    #        commit
    c3p0.autoCommitOnClose=false
    #        
    c3p0.checkoutTimeout=10000
    #           
    c3p0.acquireRetryAttempts=2
    spring-mybatis.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:context="http://www.springframework.org/schema/context"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd">
    
      <!--   service            -->
      <context:component-scan base-package="com.chatRobot.service"/>
    
      <!--          properties   :${url} -->
      <context:property-placeholder location="classpath:jdbc.properties"/>
    
      <!--        -->
      <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="maxPoolSize" value="${c3p0.maxPoolSize}"/>
        <property name="minPoolSize" value="${c3p0.minPoolSize}"/>
        <property name="autoCommitOnClose" value="${c3p0.autoCommitOnClose}"/>
        <property name="checkoutTimeout" value="${c3p0.checkoutTimeout}"/>
        <property name="acquireRetryAttempts" value="${c3p0.acquireRetryAttempts}"/>
      </bean>
    
      <!--   SqlSessionFactory   -->
      <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--          -->
        <property name="dataSource" ref="dataSource"/>
        <!--   model       -->
        <property name="typeAliasesPackage" value="com.chatRobot.model"/>
        <!--   sql    :mapper   xml   -->
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
      </bean>
    
      <!--     Dao   ,    Dao  ,   spring    -->
      <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--   sqlSessionFactory -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <!--       Dao    -->
        <property name="basePackage" value="com.chatRobot.dao"/>
      </bean>
    
      <!--         -->
      <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!--          -->
        <property name="dataSource" ref="dataSource"/>
      </bean>
    
      <!--              -->
      <tx:annotation-driven transaction-manager="transactionManager"/>
    
    </beans>
    spring-mvc.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:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
    
      <!--   web   bean -->
      <context:component-scan base-package="com.chatRobot.controller"/>
    
      <!--   SpringMVC     -->
      <mvc:annotation-driven/>
    
      <!--       servlet   -->
      <mvc:default-servlet-handler/>
    
      <!--   jsp   ViewResolver -->
      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
      </bean>
    
    </beans>
    web.xml
    
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    
      <display-name>ChatRobot</display-name>
      <description>ChatRobot_Alpha_0.0.1</description>
    
      <!--       -->
      <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>
    
      <!--   DispatcherServlet -->
      <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--   springMVC         -->
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:spring-*.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
        <async-supported>true</async-supported>
      </servlet>
      <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <!--       ,         *.do    -->
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
      </welcome-file-list>
    
    </web-app>
    여기까지 기본적으로 환경 구축 이 완료 되 었 습 니 다.다음은 테스트 를 시작 하 겠 습 니 다.
    테스트
    데이터베이스 테스트 파일 먼저 가 져 오기
    
    CREATE TABLE `user` (
     `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '  ID',
     `email` varchar(255) NOT NULL COMMENT '    ',
     `password` varchar(255) NOT NULL COMMENT '    ',
     `username` varchar(255) NOT NULL COMMENT '    ',
     `role` varchar(255) NOT NULL COMMENT '    ',
     `status` int(1) NOT NULL COMMENT '    ',
     `regTime` datetime NOT NULL COMMENT '    ',
     `regIp` varchar(255) NOT NULL COMMENT '  IP',
     PRIMARY KEY (`id`),
     UNIQUE KEY `email` (`email`) USING BTREE
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
    INSERT INTO `user` VALUES ('1', 'xxx', 'xxxxx', 'xxxxx', 'root', '0', '2017-03-28 09:40:31', '127.0.0.1');
    SET FOREIGN_KEY_CHECKS=1;
    다음 설정 클래스
    UserController
    
    package com.chatRobot.controller;
    
    import javax.servlet.http.HttpServletRequest;
    
    import com.chatRobot.model.User;
    import com.chatRobot.service.IUserService;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @Controller
    @RequestMapping("/user")
    public class UserController {
    
      @Resource
      private IUserService userService;
    
      @RequestMapping("/showUser.do")
      public void selectUser(HttpServletRequest request, HttpServletResponse response) throws IOException {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        long userId = Long.parseLong(request.getParameter("id"));
        User user = this.userService.selectUser(userId);
        ObjectMapper mapper = new ObjectMapper();
        response.getWriter().write(mapper.writeValueAsString(user));
        response.getWriter().close();
      }
    
    }
    IUserDao
    
    package com.chatRobot.dao;
    
    import com.chatRobot.model.User;
    
    public interface IUserDao {
    
      User selectUser(long id);
    
    }
    User
    
    package com.chatRobot.model;
    
    import java.util.Date;
    
    public class User {
    
      private long id;
      private String email;
      private String password;
      private String username;
      private String role;
      private int status;
      private Date regTime;
      private String regIp;
    
      public long getId() {
        return id;
      }
    
      public void setId(int id) {
        this.id = id;
      }
    
      public String getEmail() {
        return email;
      }
    
      public void setEmail(String email) {
        this.email = email;
      }
    
      public String getPassword() {
        return password;
      }
    
      public void setPassword(String password) {
        this.password = password;
      }
    
      public String getUsername() {
        return username;
      }
    
      public void setUsername(String username) {
        this.username = username;
      }
    
      public String getRole() {
        return role;
      }
    
      public void setRole(String role) {
        this.role = role;
      }
    
      public int getStatus() {
        return status;
      }
    
      public void setStatus(int status) {
        this.status = status;
      }
    
      public Date getRegTime() {
        return regTime;
      }
    
      public void setRegTime(Date regTime) {
        this.regTime = regTime;
      }
    
      public String getRegIp() {
        return regIp;
      }
    
      public void setRegIp(String regIp) {
        this.regIp = regIp;
      }
    
    }
    IUserService
    
    package com.chatRobot.service;
    
    import com.chatRobot.model.User;
    
    public interface IUserService {
    
      public User selectUser(long userId);
    
    }
    UserServiceImpl
    
    package com.chatRobot.service.impl;
    
    import com.chatRobot.dao.IUserDao;
    import com.chatRobot.model.User;
    import com.chatRobot.service.IUserService;
    import org.springframework.stereotype.Service;
    
    import javax.annotation.Resource;
    
    @Service("userService")
    public class UserServiceImpl implements IUserService {
    
      @Resource
      private IUserDao userDao;
    
      public User selectUser(long userId) {
        return this.userDao.selectUser(userId);
      }
    
    }
    UserDao.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">
    
    <!--    IUserDao      sql     -->
    <mapper namespace="com.chatRobot.dao.IUserDao">
    
      <select id="selectUser" resultType="User" parameterType="long">
        SELECT * FROM user WHERE id = #{id}
      </select>
    
    </mapper>
    그리고 my batis 를 테스트 하기 위해 테스트 클래스 를 새로 만 듭 니 다.
    IUserDaoTest
    
    package com.chatRobot.dao;
    
    import com.chatRobot.model.User;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    //   spring    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration({"classpath:spring-mybatis.xml"})
    public class IUserDaoTest {
    
      @Autowired
      private IUserDao dao;
    
      @Test
      public void testSelectUser() throws Exception {
        long id = 1;
        User user = dao.selectUser(id);
        System.out.println(user.getUsername());
      }
    
    }
    실행 후 결 과 는 콘 솔 에서 id 가 1 인 사용자 이름 을 출력 할 것 입 니 다.성공 하지 못 하면 BUG 를 찾 아가 세 요.

    springmvc 와 my batis 를 테스트 하기 위해 새 페이지 를 계속 만 듭 니 다.
    index.html
    
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
      <title>test</title>
    </head>
    <script>
      function selectUser() {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function () {
          if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("test").innerHTML = xmlhttp.responseText;
          }
        }
        xmlhttp.open("POST", "user/showUser.do", true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.send("id=1");
      }
    </script>
    <body>
    <p id="test">Hello World!</p>
    <button type="button" onclick="selectUser()">onclick test</button>
    </body>
    </html>
    새로 만 든 후 프로젝트 실행 환경 을 설정 하고 Run-edit Configurations 를 누 르 면...
    추가 실행 환경 을 누 르 고 Tomcat Server-Local 을 선택 하 십시오.

    새로 만 든 서버 를 선택 하고 오른쪽 에 Deployment 를 선택 하고 추가 번호-tifact 를 누 르 십시오...

    두 번 째 항목 선택

    그리고 오른쪽 Application context 에서 프로젝트 이름 을 설정 합 니 다.

    마지막 으로 항목 을 실행 합 니 다.열 린 페이지 에서 단 추 를 누 르 면 테스트 가 성공 하면 페이지 에 id 가 1 인 사용자 정 보 를 표시 합 니 다.
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기