В дополнение к стойке, основной веб -структуры MVC в настоящее время также имеет Spring MVC. Это происходит главным образом потому, что Spring MVC относительно прост в настройке и очень ясной для использования. Он очень гибкий, имеет хорошую интеграцию с пружиной и поддерживает Restful API лучше, чем стойки.
Mybatis - обновленная версия Ibatis. Как старый соперник Hibernate, это постоянная структура слоя, которая может настроить SQL, хранимые процедуры и передовые отображения.
Основное различие с Hibernate заключается в том, что Mybatis полуавтоматизируется, в то время как Hibernate полностью автоматически, поэтому, когда требования к применению становятся все более сложными, автоматизированный SQL, по-видимому, более неуклюжий.
С тех пор, как я взял на себя проект некоторое время назад, я хотел использовать Springmvc, чтобы сделать это, поэтому я начал играть в игру, чтобы интегрировать рамки с практикой. Люди, которые часто строят рамки, должны знать, что ядро строительства кадров - это файлы конфигурации. Поэтому я в основном публикую несколько кодов файлов конфигурации. То же самое касается меня, после того, как я написал файл конфигурации, я запустил ошибку и добавил JAR. Вот пакеты JAR, которые я использую (должен быть наименьшим):
Примечание. На рисунке выше есть несколько дополнительных банок, например, пул соединений базы данных, который я использую, представляет собой заповедник Alibaba Druid и Log Frame, поэтому вводятся связанные банки. Использование и конфигурация этих двух структур очень просты, поэтому я не буду вдаваться в подробности здесь.
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://wwww.spramemema. 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 http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <! Имя пакета, создающее автоматическое обнаружение компонентов, такого как аннотированный контроллер-> <Контекст: Component-Scan Base-package = "com.alibaba.controller" /> <Контекст: компонент-сканирование Base-package = "com.alibaba.service" /> <!-View Parser: Define Pre-Suffies of the Jumped File-leiper-> ">" view Parser: Define the Pre-suffix of Promeed-файл-> " name = "prefix" value = "/web-inf/jsp/"/> <name = "suffix" value = ". jsp"/> <!-Может быть пустым, удобным для реализации логики класса интерпретации представления на основе расширения-> </bean> <!-Конфигурация перехватчика, множественные перехватчики, выполненные последовательно-> <mvc: interceptors> <mvcertortors! PATH-> <MVC: PATH mapping = "/user/**"/> <mvc: mapping path = "/test/**"/> <bean> </bean> </mvc: interceptor> <!-При настройке нескольких интерцепторов, сначала вызовите метод Prehandle, и затем вызовут методы Posthandle и Aftercomptortion в обратном порядке. </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://wwww.springframe. http://www.springframework.org/schema/beans/spring-beans.xsd http://mybatis.org/schema/mybatis-sprin http://www.springframework.org/schema/context/spring-context.xsd "> <!-Класс в этом пакете поддерживает аннотации, указывая на то, что он будет обрабатываться как {@code mybatis mapper}, а затем настраивается, что указывает на то, что класс Mapper может быть автоматически введен-> <mybatis: scan: base-package = "com.alibaba.dao"/> <!-ввести файлы свойств-> <Контекст: Property-Placeholder location = "classPath: configuration.properties"/> <!-Соединение базы данных-> <bean id = "dataSource" init-method = "init method =" close "> <properation =" url "value =" jdb. name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <!-- Configure initialization size, minimum, maximum--> <property name="initialSize"><value>1</value></property> <property name="maxActive"><value>5</value></property> <property name = "minidle"> <dulch> 1 </value> </property> <!-Настройте время для получения времени ожидания подключения-> <name = name = "maxwait"> <value> 60000 </value> </свойство> <!-Настройка фильтров для мониторинга статистики-> <property name = «Фильтры»> «Значение> Стату the idle connection that needs to be closed, in milliseconds --> <property name="timeBetweenEvictionRunsMillis"><value>60000</value></property> <!-- Configure the minimum time for a connection to survive in the pool, in milliseconds --> <property name="minEvictableIdleTimeMillis"><value>300000</value></property> <!-- <property name = "validationQuery"> <datue> select 'x' </value> </propertive> <name = "testwhileIdle"> <duld> true </value> </property> <name = "testonBorrow"> <dall> false </value> </property> <name = "testonRetur name = "poolpreparedStatements"> <dure> true </value> </property> <name = "maxopenpreparedStatements"> <dall> 20 </value> </propetion>-> </bean> <!-конфигурация mybatis-> <bean id = "sqlsessionFactaft”> <properation = "dataSource" ref = "/beansemour"/beanse-name = "dataSource" ref = "beanour"/beanse-name = "beancou 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" 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" версии = "3.0"> <!-Сервис предоставляется для контейнеров, таких как томкат, и и т.д. / статический / каталог. For example, when you visited http://localhost/foo.css, now http://localhost/static/foo.css --> <!-- Don't intercept static files --> <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> <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> <!-При инициализации DispatcherServled, Framework ищет File-name-name. directory, and defines the relevant beans there, overriding any beans defined globally --> <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-> <crop-patern>/</url-pattern> </servlet-mapping> <context-param> <param-name> contextconfiglocation </param-ame> <param-value>/web-inf/spring-*. xml </param-name> <param-value>/web-inf/spring-*. <Learser> <lloader-class> org.springframework.web.context.contextloaderListener </stirler-class> </alinger> <!-Веб-мониторин <Servlet-class> com.alibaba.druid.support.http.statviewservlet </servlet-class> </servlet> <servlet-mapping> <servlet-name> druidstatview </servlet-name> <url-pattern>/druid/*</url-pattern> </servlet> <errl-pattern>/*</</url-pattern> </servlet> <remorry-page> <merrl-page> <Rerrl-page> <Rerrl-page> <Rerrl-page> <Rerrl-page> <Rerr-page> <Rerrl-page>/*</url-patterdn> <sociate>/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"?> <Конфигурация> <vally name = "stdout"> <concoder> <tlement> %d {hh: mm: ss.ss} [ %think] %-5level %logger {36}- %msg %n </pattern> </encoder> </appender> < %ntampback names = "test" = "test" = "test" = "test" = stames ytems spectbge> "stames 'stames stames'/vatceblet names. level = "trace" /> <logger name = "com.alibaba.controller.testcontroller" level = "trace" /> <logger name = "org.springframework.web.servlet.dispatcherservlet" Level = "Debug" /> <logger name = "druid.sql" veloy " /> <! Spring-Config, журнал SQL не будет отображаться. Заготование-это просто реализация SLF4J-> <root Level = "Debug"> <appender-ref ref = "stdout"/> </root> </configuration> 5. Configuration.Properties Configuration
jdbc.url = jdbc/: mysql/: // localhost/: 3306/druid? useunicode/= true & haremencoding/= utf-8 & Zerodatetimebehavior/= convertonull jdbc.username = root jdbc.password = 123456
6. Проверьте, является ли конструкция успешной, фоновой код
Во -первых, войдите в систему, используйте шифрование, вы можете его удалить
пакет com.alibaba.controller; Импорт javax.annotation.resource; Импорт javax.servlet.http.httpservletrequest; Импорт org.apache.commons.codec.digest.digestutils; Импорт org.slf4j.logger; Импорт org.slf4j.loggerfactory; Import org.springframework.sterotype.controller; Импорт org.springframework.web.bind.annotation.requestmapping; Импорт org.springframework.web.bind.annotation.requestmethod; Импорт org.springframework.web.bind.annotation.requestparam; Импорт com.alibaba.model.user; Импорт com.alibaba.service.userservice; импорт 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 to Home страница!"); вернуть "индекс"; } @RequestMapping (value = "/test/hello", method = requestMethod.get) public String testHello () {log.info ("Выполнить метод TestHello!"); вернуть "testHello"; } @RequestMapping (value = "/login", method = requestMethod.post) public String testlogin (httpservletrequest, @requestparam string username, @requestparam String пароль) {log.info («Выполните метод testlogin!»); User user = userservice.finduserbyname (имя пользователя); if (user! = null) {if (user.getpassword (). request.getSession (). setattribute ("user", имя пользователя); return "redirect:" + requestutil.retrivevedRequest (); // пропустить на страницу доступа} else {log.info ("ошибка пароля"); request.getSession (). setattribute («Сообщение», «Имя пользователя и пароль неверны, пожалуйста, войдите в систему снова»); вернуть "вход"; }} else {log.info ("Имя пользователя не существует"); request.getSession (). setattribute ("Message", "Имя пользователя не существует, пожалуйста, войдите в систему еще раз"); вернуть "вход"; }}} Я не буду писать о сервисе и модели, я напишу о карте класса Mybatis '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" resultype = "com.alibaba.model.user"> выберите идентификатор, имя пользователя, пароль из sysuser, где username = #{username} </selet> </mapper> 7. На стойке регистрации JSP - это в основном страница, где вход и вход успешны, поэтому я не буду писать ее
Разместите скриншот:
На этом этапе интеграция Springmvc+Mybatis была успешной. Впоследствии сложные функции будут добавлены
Что следует отметить
1. Конфигурации друида и резерв в рамках скопированы с официального веб -сайта, поэтому они являются самыми основными. Читатели могут игнорировать их, или их могут заменить компонентами базы данных и фреймворками журнала, с которыми знакомы читатели, такие как C3P0 и LOG4J.
2. Код добавляет управление разрешением, то есть вам необходимо войти в систему перед доступом, а затем перейти на страницу, чтобы получить доступ после входа в систему. Для управления разрешением Springmvc см.
3. Эта статья является самым простым и самым основным кодом, который был исключен из моего тестового кода. Пожалуйста, простите меня за некоторые из областей, которые не были лишены.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.