SpringMVC+MyBatis 페이지(최신)
MyBatis 는 ibatis 의 업그레이드 버 전 으로 hibenate 의 오 랜 라이 벌 로 서 SQL,저장 과정,고급 맵 을 사용자 정의 할 수 있 는 영구적 인 프레임 워 크 입 니 다.
hibenate 와 의 주요 차이 점 은 my batis 가 반자동 화 된 것 이 고 hibenate 는 전자 동 이기 때문에 응용 수요 가 점점 복잡 해 질 때 자동 화 된 sql 은 비교적 서 툴 러 보인다.
얼마 전에 프로젝트 를 받 아서 springmvc 로 해 야 하기 때문에 저 는 연습 하 는 태 도 를 가지 고 프레임 워 크 를 통합 하 는 게임 을 했 습 니 다.프레임 워 크 를 자주 만 드 는 사람들 은 프레임 워 크 구축 의 핵심 은 프로필 이라는 것 을 잘 알 아야 한다.그래서 나 는 주로 몇 개의 프로필 코드 를 붙 였 다.아니면 그 말?여기에 내 가 사용 하 는 jar 가방 을 열거 하 세 요.
비고:위의 그림 에는 추가 jar 가 있 습 니 다.예 를 들 어 제 가 사용 하 는 데이터베이스 연결 탱크 는 알 리 바 바 의 druid,로그 프레임 워 크 logback 이기 때문에 관련 jar 를 도입 하 였 습 니 다.이 두 프레임 워 크 의 사용 과 설정 은 매우 간단 하기 때문에 여 기 는 자세히 말 하지 않 습 니 다.
1.SpringMVC 통합
springMybatis-servlet.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.xsd">
<!-- spring mvc -->
<mvc:annotation-driven>
</mvc:annotation-driven>
<!-- , Spring , Controller-->
<context:component-scan base-package="com.alibaba.controller" />
<context:component-scan base-package="com.alibaba.service"/>
<!-- : -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" /> <!-- , -->
</bean>
<!-- , , -->
<mvc:interceptors>
<mvc:interceptor>
<!-- url -->
<mvc:mapping path="/" />
<mvc:mapping path="/user/**" />
<mvc:mapping path="/test/**" />
<bean class="com.alibaba.interceptor.CommonInterceptor"></bean>
</mvc:interceptor>
<!-- , preHandle , postHandle afterCompletion -->
</mvc:interceptors>
</beans>
2.Mybatis 통합spring-dao.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:mybatis="http://mybatis.org/schema/mybatis-spring"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- , {@code mybatis mapper} mapper -->
<mybatis:scan base-package="com.alibaba.dao"/>
<!-- -->
<context:property-placeholder location="classpath:configuration.properties"/>
<!-- -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!-- 、 、 -->
<property name="initialSize"><value>1</value></property>
<property name="maxActive"><value>5</value></property>
<property name="minIdle"><value>1</value></property>
<!-- -->
<property name="maxWait"><value>60000</value></property>
<!-- filters -->
<property name="filters"><value>stat</value></property>
<!-- , , -->
<property name="timeBetweenEvictionRunsMillis"><value>60000</value></property>
<!-- , -->
<property name="minEvictableIdleTimeMillis"><value>300000</value></property>
<!--
<property name="validationQuery"><value>SELECT 'x'</value></property>
<property name="testWhileIdle"><value>true</value></property>
<property name="testOnBorrow"><value>false</value></property>
<property name="testOnReturn"><value>false</value></property>
<property name="poolPreparedStatements"><value>true</value></property>
<property name="maxOpenPreparedStatements"><value>20</value></property>
-->
</bean>
<!-- mybatis -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
3.web.xml 는 SpringMVC 와 Mybatis 를 통합 합 니 다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<!-- servlet tomcat,jetty , / /static/ , http://localhost/foo.css , http://localhost/static/foo.css -->
<!-- -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/js/*</url-pattern>
<url-pattern>/css/*</url-pattern>
<url-pattern>/images/*</url-pattern>
<url-pattern>/fonts/*</url-pattern>
</servlet-mapping>
<!-- -->
<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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- DispatcherServlet , web WEB-INF [servlet- ]-servlet.xml ,
Beans, Beans -->
<servlet>
<servlet-name>springMybatis</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMybatis</servlet-name>
<!-- , DispatcherServlet -->
<url-pattern>/</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/spring-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- druid web -->
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>
<error-page>
<error-code>404</error-code>
<location>/error/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error/500.jsp</location>
</error-page>
</web-app>
4.logback.xml 로그 설정
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<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>
<logger name="test.LogbackTest" level="TRACE"/>
<logger name="com.alibaba.controller.TestController" level="TRACE"/>
<logger name="org.springframework.web.servlet.DispatcherServlet" level="DEBUG" />
<logger name="druid.sql" level="INFO" /><!-- spring-config slf4j, sql ,logback slf4j -->
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
5.configuration.properties 설정
jdbc.url=jdbc\:mysql\://localhost\:3306/druid?useUnicode\=true&characterEncoding\=UTF-8&zeroDateTimeBehavior\=convertToNull
jdbc.username=root
jdbc.password=123456
6.구축 성공 여부,배경 코드 테스트우선 로그 인 입 니 다.암호 화 를 사용 하면 지 울 수 있 습 니 다.
package com.alibaba.controller;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.codec.digest.DigestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.alibaba.model.User;
import com.alibaba.service.UserService;
import com.alibaba.util.RequestUtil;
/**
* @author tfj
* 2014-7-26
*/
@Controller
public class SystemController {
private final Logger log = LoggerFactory.getLogger(SystemController.class);
@Resource
private UserService userService;
@RequestMapping(value = "/",method = RequestMethod.GET)
public String home() {
log.info(" !");
return "index";
}
@RequestMapping(value = "/test/hello",method = RequestMethod.GET)
public String testHello() {
log.info(" testHello !");
return "testHello";
}
@RequestMapping(value = "/login",method = RequestMethod.POST)
public String testLogin(HttpServletRequest request,@RequestParam String username, @RequestParam String password) {
log.info(" testLogin !");
User user = userService.findUserByName(username);
if(user!=null){
if(user.getPassword().equals(DigestUtils.md5Hex(password))){
request.getSession().setAttribute("userId", user.getId());
request.getSession().setAttribute("user", username);
return "redirect:" + RequestUtil.retrieveSavedRequest();//
}else{
log.info(" ");
request.getSession().setAttribute("message", " , ");
return "login";
}
}else{
log.info(" ");
request.getSession().setAttribute("message", " , ");
return "login";
}
}
}
service 와 model 에 대해 서 는 쓰 지 않 습 니 다.my batis 의 mapper 클래스 맵 을 쓰 십시오.
<?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="com.alibaba.dao.UserMapper">
<select id="findUserByName" resultType="com.alibaba.model.User">
select id, username , password from sysuser where username = #{username}
</select>
</mapper>
7.프런트 jsp 는 주로 로그 인 및 로그 인 에 성공 한 페이지 이 므 로 쓰 지 않 습 니 다.캡 처 를 붙 여 주세요.
이로써 springmvc+mybatis 통합 에 성 공 했 습 니 다.후속 복잡 한 기능 추가
주의 사항
1.프레임 워 크 에서 druid 와 logback 에 대한 설정 은 모두 홈 페이지 에서 복사 되 기 때문에 가장 기본 적 인 것 입 니 다.독 자 는 무시 할 수도 있 고 독자 가 잘 아 는 데이터베이스 구성 요소 와 로그 프레임 워 크 로 바 꿀 수도 있 습 니 다.예 를 들 어 c3p 0 과 log4j.
2.코드 에 권한 관리 가 추가 되 었 습 니 다.즉,방문 전에 로그 인 해 야 합 니 다.로그 인 후 방문 대기 페이지 로 이동 합 니 다.springmvc 에 대한 권한 관 리 는 https://www.jb51.net/article/99569.htm 을 보십시오.
3.본 고 는 제 테스트 코드 에서 벗 겨 진 가장 간단 하고 기본 적 인 코드 입 니 다.깨끗 하지 않 은 부분 이 있 으 니 양해 해 주 십시오.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
springmvc application/octet-stream problemmistake: Source code: Solution: Summarize: application/octet-stream is the original binary stream method. If the convers...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.