English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
기본 개념
1.1와 Spring
Spring은 오픈 소스 프레임워크로, Spring은2003 년에 등장한 가벼운 Java 개발 프레임워크로, Rod Johnson의 저서 Expert One-On-One J2EE Development and Design에 설명된 일부 이론과 프로토타입에서 파생된 것입니다. 이는 기업 애플리케이션 개발의 복잡성을 해결하기 위해 만들어진 것입니다. Spring은 기존에는 EJB로만 할 수 있었던 일을 기본적인 JavaBean으로 완성합니다. 그러나 Spring의 용도는 서버 측 개발에만 국한되지 않습니다. 간단성, 테스트 가능성, 약한 결합에서 본다면, 어떤 Java 애플리케이션도 Spring에서 이익을 볼 수 있습니다. 간단히 말해서, Spring은 가벼운 중앙화된 주입(IoC)과 단면 방향화(AOP)의 컨테이너 프레임워크입니다.
1.2、SpringMVC
Spring MVC는 Spring Framework의 후속 제품으로, Spring Web Flow에 통합되었습니다. Spring MVC는 컨트롤러, 모델 객체, 디스패치어 및 처리자 객체의 역할을 분리하여, 이를 통해 더 쉽게 사용자 정의할 수 있습니다.
1.3、MyBatis
MyBatis는 원래 Apache의 오픈 소스 프로젝트 iBatis입니다. 2010이 프로젝트는 Apache Software Foundation으로 이동했고 MyBatis라는 이름으로 변경되었습니다. MyBatis는 Java 기반의 Persistence Layer 프레임워크입니다. iBATIS가 제공하는 Persistence Layer 프레임워크는 SQL Maps와 Data Access Objects(DAO)를 포함합니다. MyBatis는 거의 모든 JDBC 코드와 매개변수의 수동 설정 및 결과 집합의 검색을 제거합니다. MyBatis는 간단한 XML이나 애노테이션을 사용하여 설정과 원시 맵핑을 수행하고, 인터페이스와 Java의 POJOs(Plain Old Java Objects, 일반적인 Java 객체)을 데이터베이스의 레코드로 맵핑합니다.
第一步:Maven을 통해 웹 프로젝트를 만듭니다.
第二步:pom 파일에 jar 패키지를 도입합니다
(1) pom.xml
저는 제 pom 파일 전체를 복사해왔고, 일부 초기화된 것들은 제거하고, 자신의 pom 생성된 파일을 유지해야 합니다.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-인스턴스 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.test</groupId> <artifactId>ssm</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>ssm Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <!-- 스프링 버전 번호 --> <spring.version>4.0.2.RELEASE</spring.version> <!-- mybatis 버전 번호 --> <mybatis.version>3.2.6</mybatis.version> <!-- log4j 로그 파일 관리 패키지 버전 --> <slf4j.version>1.7.7</slf4j.version> <log4j.version>1.2.17</log4j.version> </properties> <dependencies> <dependency> <groupId>junit/groupId> <artifactId>junit/artifactId> <version>3.8.1</version> <scope>test/scope> </dependency> <dependency> <groupId>org.springframework/groupId> <artifactId>spring-core/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-oxm/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-jdbc/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-aop/artifactId> <version>${spring.version}/version> </dependency> <dependency> <groupId>org.springframework/groupId> <artifactId>spring-컨텍스트-support/artifactId> <version>${spring.version}/version> </dependency> <dependency> <groupId>org.springframework/groupId> <artifactId>spring-test/artifactId> <version>${spring.version}/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.2.2</version> </dependency> <!-- java ee JAR 패키지를 임포트합니다 --> <dependency> <groupId>javax/groupId> <artifactId>javaee-api/artifactId> <version>7.0</version> </dependency> <!-- Mysql 데이터베이스 링크 JAR 패키지를 임포트합니다 --> <dependency> <groupId>mysql/groupId> <artifactId>mysql-connector-java/artifactId> <version>5.1.30</version> </dependency> <!-- dbcp의 JAR 패키지를 임포트하여 applicationContext.xml에서 데이터베이스를 구성합니다 --> <dependency> <groupId>commons-dbcp/groupId> <artifactId>commons-dbcp/artifactId> <version>1.2.2</version> </dependency> <!-- JSTL 태그 클래스 --> <dependency> <groupId>jstl/groupId> <artifactId>jstl/artifactId> <version>1.2</version> </dependency> <!-- 로그 파일 관리 패키지 --> <!-- log start --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version></version> </dependency> <!-- 객체를 포맷화하여 로그 출력을 쉽게 합니다 --> <dependency> <groupId>com.alibaba/groupId> <artifactId>fastjson/artifactId> <version>1.1.41</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api/artifactId> <version>${slf4j.version></version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version></version> </dependency> <!-- log end --> <!-- JSON에 반영 --> <dependency> <groupId>org.codehaus.jackson/groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <!-- 업로드 컴포넌트 패키지 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.9</version> </dependency> </dependencies> <build> <finalName>ssm</finalName> </build> </project>
제3단계:전체 프로젝트 아키텍처를 확인해 보세요. 저는 여기에 springMVC와 관련된 것이 없습니다. 왜냐하면 저는 먼저 spring을 통합한 것입니다-mybatis, 성공 여부를 테스트하기 위해, 성공하면 springMVC와 통합
제4단계:model 클래스를 만듭니다
public class User { private int id; private String name; private String password; private String password2; /*set과 get 메서드, toString 메서드를 제공*/ }
5단계:데이터베이스를 생성하고, UserDao 인터페이스와 mapper 맵핑 파일을 제공
(1)간단한 테이블을 하나 만듭니다
(2)UserDaо 인터페이스
public interface UserDao { User findUserById(User user); }
(3)UesrMapper.xml
<?xml 버전="1.0" 인코딩="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace 네임스페이스, UserDao 전체 경로를 지정--> <mapper namespace="com.ssm.dao.UserDao"> <!-- id에 따라 사용자 정보를 조회 --> <!-- id:하나의 statement를 식별, UserDaо 메서드 이름과 일치 #{}:하나의 대체 문자를 나타냅니다. #{}에 간단한 타입의 파라미터를 전달하면, #{} 내 이름은 자유롭게 선택할 수 있습니다 parameterType:입력 파라미터 타입, UserDaо() 내 파라미터와 일치 resultType:출력 결과 타입, UserDaо() 반환 타입과 일치 --> <select id="findUserById" parameterType="com.ssm.model.User" resultType="com.ssm.model.User"> SELECT * FROM USER <where> <if test="name != null"> AND Name= #{name} </if> <if test="password != null"> AND password= #{password} </if> </where> </select> </mapper>
5단계:UserService와 UserServerImpl을 생성합니다
(1)UserService
public interface UserService { public User getUserById(User user); }
(2)UserServiceImpl
import org.springframework.stereotype.Service; import com.ssm.dao.UserDao; import com.ssm.model.User; import com.ssm.service.UserService; @Service("userService") public class UserServerImpl implements UserService { @Resource private UserDao userDao; public User getUserById(User user) { return this.userDao.findUserById(user); } }
6단계:jdbc 파일과 log 로그 파일을 생성합니다
(1)jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc\:mysql\://localhost\:3306/test?useUnicode=true&&characterEncoding=UTF-8 jdbc.username=root jdbc.password=root
(2)log4j.properties
log4j.rootLogger=INFO,Console,File #로그 출력 위치를 컨솔로 정의합니다 log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.Target=System.out #일관되게 로그 출력 형식을 지정할 수 있습니다. 아래 행은 특정 형식을 지정합니다 log4j.appender.Console.layout = org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n # 파일 크기가 지정된 크기에 도달하면 새 파일 생성 log4j.appender.File = org.apache.log4j.RollingFileAppender # 출력 디렉토리 지정 log4j.appender.File.File = logs/ssm.log # 파일 최대 크기 정의 log4j.appender.File.MaxFileSize = 10MB # 모든 로그 출력, DEBUG로 변경하면 DEBUG 이상의 로그 출력 log4j.appender.File.Threshold = ALL log4j.appender.File.layout = org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
제7단계:스프링 통합-mybatis.xml
<?xml 버전="1.0" 인코딩="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 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-3.1.xsd http://www.springframework.org/schema/컨텍스트 http://www.springframework.org/schema/컨텍스트/spring-컨텍스트-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 자동 스캔 --> <context:component-scan base-package="com.ssm" /> <!-- jdbc 설정 파일 구현을 도입합니다 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties" /> </bean> <!-- 2. 데이터베이스 연결 풀 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <!-- 스프링과 MyBatis를 통합하여 스프링이 MyBatis의 SqlSessionFactory 세션 팩토리를 관리합니다 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 指定数据库连接池引用 --> <property name="dataSource" ref="dataSource" /> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath:com/ssm/mapper/*.xml"></property> </bean> <!-- DAO接口所在包名,Spring会自动查找其下的类 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.ssm.dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> </beans>
第八步:建立测试类
经过以上步骤(log4j不配也没影响),我们已经完成了Spring和mybatis的整合,这样我们就可以编写一段测试代码来试试是否成功了。
测试类在src/test/java中建立,如果测试成功,表示Spring和Mybatis已经整合成功了。输出信息使用的是Log4j打印到控制台。
(1)TestMyBatis测试类
package ssm; import javax.annotation.Resource; import org.apache.log4j.Logger; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.ssm.model.User; import com.ssm.service.UserService; /*Spring 테스트 환경에서 테스트를 실행합니다*/ @RunWith(SpringJUnit4ClassRunner.class) /*로드할 Spring 설정 파일의 위치를 지정합니다. 기본 설정 파일을 로드합니다*/ @ContextConfiguration(locations = { "classpath:spring-mybatis.xml" }) public class TestMyBatis { @Resource(name = "userService") private UserService userService; @Test public void test1() { User user=new User(); user.setName("张三"); user.setPassword("123"); User user1 = userService.getUserById(user); System.out.println(user1.toString()); } }
마지막! 중요한 것은 백엔드 출력을 확인하는 것입니다. 객체가 출력되면 통합이 성공적으로 완료되었다는 증거입니다!
그렇다면 다음에 SpringMVC를 통합하기 시작합니다
第九歩:springmvc.xml를 설정합니다
<?xml 버전="1.0" 인코딩="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 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-3.1.xsd http://www.springframework.org/schema/컨텍스트 http://www.springframework.org/schema/컨텍스트/spring-컨텍스트-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 자동으로 해당 패키지를 스캔하여 SpringMVC가 패키지 아래에 @controller 애노테이션을 사용한 클래스가 컨트롤러라고 인식하도록 합니다 --> <context:component-scan base-package="com.ssm.controller" /> <!--IE가 AJAX를 실행할 때 JSON이 다운로드되는 것을 방지하기 위해 --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <!-- SpringMVC의 어노테이션 기능 시작, 요청과 어노테이션 POJO의 매핑 완료 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON 변환기 --> </list> </property> </bean> <!-- 이동할 파일의 전후缀 정의, 뷰 모드 설정--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 이곳의 설정은 저의 이해에 따르면 앞으로의 action 메서드의 return 문자열에 프리كس와 심볼을 추가하여 사용 가능한 URL 주소로 만들어 주는 것입니다 --> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> <!-- 파일 업로드 설정, 파일 업로드를 사용하지 않는다면 설정할 필요가 없습니다. 물론 설정하지 않으면 설정 파일에 업로드 컴포넌트 패키지도 포함되지 않습니다. --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 기본 인코딩 --> <property name="defaultEncoding" value="utf-8" /> <!-- 파일 크기 최대 값 --> <property name="maxUploadSize" value="10485760000" /> <!-- 메모리의 최대 값 --> <속성 이름="maxInMemorySize" 값="}}40960" /> </bean> </beans>
第十步:web.xml 파일을 설정합니다.
여기서 Spring-mybatis.xml의 참조 및 설정된 Spring-MVC Servlet은 SSM 통합을 완료하기 위해 필요합니다.2프레임워크 통합을 위해 여기서 어떤 설정도 필요하지 않습니다.
<?xml 버전="1.0" 인코딩="UTF-8"?> <웹-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-인스턴스 xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 버전="3.0"> <표시-이름>Archetype Created Web Application</표시-name> <!-- Spring과 mybatis 설정 파일 --> <컨텍스트-param> <param-name>contextConfigLocation</param-name> <param-값>classpath:spring-mybatis.xml/param-value> </컨텍스트-param> <!-- 인코딩 필터 --> <필터 <필터-이름>encodingFilter</필터-name> <필터-class>org.springframework.web.filter.CharacterEncodingFilter</필터-class> <async-supported>true</async-supported> <init>-param> <param-이름>encoding/param-name> <param-값>UTF-8</param-value> </init-param> </필터> <필터-mapping> <필터-이름>encodingFilter</필터-name> <url-pattern>/*</url-pattern> </필터-mapping> <!-- Spring 리스너 --> <listener <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Spring内存오버플로우 방지 리스너 --> <listener <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!-- Spring MVC servlet --> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init>-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.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, struts의 접미사 습관에 맞게 --> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> </web-app>
第十一步마지막 테스트:
(1) login.jsp를 먼저 작성하세요
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> head> <title>사용자 로그인:</title> </head> <body> <form action="login"> <label>사용자 이름:</label> <input type="text" id="username" name="username"></input><br><br> <label>비밀번호:</label> <input type="text" id="password" name="password"></input><br><br> <input type="submit" value="로그인"/> </form> </body> </html>
화면:
(2) UserController를 작성하는 중
import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.ssm.dao.UserDao; import com.ssm.model.User; @Controller public class UserController { @Resource private UserDao userDao; @RequestMapping("/jsp/login") public String login(HttpServletRequest request){ String username=request.getParameter("username"); String password=request.getParameter("password"); User user=new User(); //사용자 이름과 학생을 기준으로 데이터베이스를 검색합니다 user.setName(username); user.setPassword(password); User users=userDao.findUserById(user); //학생이 있다면 로그인이 성공하였음을 의미합니다 if(users!=null){ return "susscss"; } //저는 이 jsp를 작성하지 않았으며, 알고 계시면 됩니다. 여러분은 직접 작성할 수 있습니다. return "err"; } }
(3)마지막 susscss.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <body> <P>사용자 계정 비밀번호가 정확하며, 로그인 성공</P> </body> </html>
완벽!
이상이 본 문서의 전체 내용입니다. 많은 도움이 되길 바라며, 많은 지원을 해 주시기를 바랍니다.
성명: 본 문서의 내용은 인터넷에서 가져왔으며, 저작권은 원저자에게 있으며, 인터넷 사용자가 자발적으로 기여하고 업로드한 내용입니다. 본 웹사이트는 소유권을 가지지 않으며, 인공 편집을 하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 문제가 있는 내용을 발견하시면, notice#w로 이메일을 보내 주시기 바랍니다.3codebox.com에 (이메일 작성 시 #을 @으로 변경하시고) 신고를 하시고 관련 증거를 제공하시면, 실제로 확인되면 해당 도메인의 내용을 즉시 삭제하겠습니다.