Hablemos brevemente sobre Maven Building SSM Project (el uso de la base de datos Oracle es un poco más problemática que MySQL, así que hablemos de ello aquí)
Al crear proyectos web Maven, a menudo faltan dos carpetas: Main/Java y Main/Test.
Solución:
①: haga clic con el botón derecho en el proyecto y seleccione Propiedades, luego haga clic en la ruta de compilación Java, en Bibliotecas, editar Biblioteca del sistema JRE y seleccionar el espacio de trabajo JRE predeterminado. (Esto se recomienda)
②: Crea un directorio manualmente. La vista Switch usa la vista Navigator y crea directamente un directorio Java en el directorio SRC/principal.
Estructura del directorio del proyecto:
Archivos de configuración importantes:
Archivo de configuración del modelo de objeto: pom.xml
Archivo de configuración de Spring: ApplicationContext.xml
Archivo de configuración de Spring MVC: Springmvc.xml
Archivo de configuración de la base de datos: JDBC.Properties
Archivo de configuración de registro: log4j.properties
Archivo de configuración de MyBatis: mybatis-config.xml
Archivo de configuración del programa de red: web.xml
Primero configurar pom.xml
Pom.xml describe principalmente las coordenadas, dependencias Maven del proyecto, e introduce automáticamente paquetes JAR.
<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.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. http://maven.apache.org/maven-v4_0_0.xsd "> <modelVersion> 4.0.0 </modelversion> <MoupRupid> com.krry </groupid> <arifactid> maven_ssm </artifactID> <Ponsions> <URL> http://maven.apache.org </sl> <pendencies> <!-Introducir Junit-> <Spendency> <MoupRoMID> Junit </Groupid> <AriFactId> Junit </arifactId> <Versión> 4.11 </Version> <Cope> Test </Scope> </Dependency> <!-Introducción-> <<vergency> Dependency> <MoupRid> javax.servlet </groupid> <artifactid> servlet-api </artifactid> <versión> 3.0-alpha-1 </versewers> <cope> proporcionó </cope> </dependency> <!-Introducción del paquete de jstl-> <pendence> <proupID> jstl </groupid> <artifactid> jstl </artes> <cope> proporcionó </cope> </dependence> <!-Introduciendo la dependencia de la compilación de JSP-> <Spendency> <MoupRupid> javax.servlet.jsp </groupid> <artifactid> jsp-api </artifactID> <versión> 2.2 </versión> <cope> proporcionó </pope> </pendency> <MoupRid> log4j </groupid> <artifactid> log4j </artifactid> <versión> 1.2.17 </versión> </pendency> <!-spring springmvc mybatis-> <!-spring y springmvc jar de construcción relacionado-> <fependency> <grupid> org.springframework </armupid> <artifactid> spring-contextid> </artext> <versión> 4.2.1.release </verversion> </pendency> <pendency> <grupoD> org.springframework </groupid> <artifactid> spring-jdbc </artifactid> <lote> 4.2.1.release </verververence> </dependency> <!-springmvc-related-> <ependency> <grupid> org.springframework </groupid> <artifactId>spring-webmvc</artifactId> <version>4.2.1.RELEASE</version> </dependency> <!--springmvc requires json conversion package jackson --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.5.4</version> </dependency> <Spendency> <MoupRid> com.fasterxml.jackson.core </proupid> <artifactid> jackson-annotations </artifactid> <versión> 2.5.4 </versión> </pendency> <ependency> <proupid> com.fasterxml.jackson.core </groupid> <artifactid> jackson </artifact> <verversion> <versión <versión> <ververion> </pendency> <!-JSR303 Validador de Hibernate Validator-> <Spendency> <MoupRoD> org.hibernate </groupid> <artifactid> hibernate-validator </artifactid> <versión> 5.1.1.1.final> </pepresion> </spendency> < <Atifactid> commons-io </arfactid> <versever> 2.4 </versión> </pendency> <pendency> <MoupRoMID> Commons-FileUpload </groupid> <artifactid> commons-FileUpload </arfactid> <Version> 1.3.1 </versión> </dependencia> <dependency> <grupe> org.apache.commons </Version> 1.3.1 </Version> </pendency> <depentency> <grupe> org.apache.commons </Version> 1.3.1 </Version> </Dependency> <Efferency> <Proupid> org.Apache.Commons </Version> <artifactId>commons-lang3</artifactId> <version>3.3.2</version> </dependency> <!--codeC related to encryption algorithms --> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.9</version> </dependency> <!--orm or jdbc component requires mybatis -> <!-Oracle Database Driver-> <Spendency> <ProupId> com.oracle </proupid> <artifactid> ojdbc6 </artifactid> <versión> 12.1.0.2.0 </versión> </dependency> <!-MySQL DataBase Driver (no se usa aquí, el controlador de arriba se usa)--> <!-<<remoupdence> MySQL> MySQL> <artifactid> mysql-confonector-java </artifactid> <versión> 5.0.8 </versions> <cope> runtime </cope> </dependency>-> <!-proxool conection piscol-> <pendency> <proupid> com.cloudhopper.proxool </groupid> <artifactid> proxool </artifactid> <versión> 0.1.109.109.1 <version> version> 0.1. </pendency> <pendency> <grupid> com.cloudhopper.proxool </groupid> <artifactid> proxool-cglib </artifactid> <version> 0.9.1 </versión> </pendency> <!-Introducción del paquete jar requerido por mybatis-> <pendency> <MoupRid> org.mybatis </groupid> <artifiCactid '> Mybatid <tifactid> <artifiCtid <artifiCtid' <Versión> 3.3.1 </versión> </pendency> <epardency> <grupid> org.mybatis </groupid> <artifactid> mybatis-spring </arfactid> <version> 1.2.4 </versión> </pendency> <!-El paquete jar requerido para la administración de pagination no se usa aquí-> <defepentency> <proupid> com.github.pagithubhelil. <AtifactId> PageHelper </artifactid> <versión> 4.2.1 </versión> </pendency> </pendencs> <struple> <glugins> <glugin> <artifactid> maven-compiler-plugin </arifactid> <figuration> <over> 1.7 </overe> <arget> 1.7 </arget> </figuration> </tugingingument> <tugin> <tugin> <tugin> <glactin> <AtifactID> maven-war-plugin </artifactid> <verserse> 2.4 </versión> <necuteation> <verserse> 3.0 </versión> </figuration> </glugin> </glugins> <finalName> maven_ssm </ finalName> </build> </jection>
Aquí hay una pregunta sobre el proyecto Maven que usa Pom.xml para importar el paquete de controladores Oracle:
Debido a los problemas de autorización de Oracle, Maven no proporciona el controlador de Oracle JDBC. Para aplicar el controlador Oracle JDBC en proyectos Maven, debe agregarse manualmente al repositorio local.
Si la base de datos Oracle ya está instalada en la computadora, hay un controlador de la base de datos en la ruta de instalación y se puede usar directamente. D: /oracle/oraclexe/app/oracle/product/10.2.0/server/jdbc/lib
También puede descargar el controlador de la base de datos Oracle directamente desde el sitio web oficial de Oracle y usar las declaraciones SQL para consultar la versión del controlador de la base de datos: Seleccione * de V $ Instance
Luego confirme la versión Descargar: http://www.oracle.com/technetwork/database/features/jdbc/default-2280470.html
Abra la interfaz de línea de comando de Windows, ingrese el directorio del paquete de controlador OJDBC6 y luego ejecute:
MVN Install: Install -File -DgroupId = com.oracle -DartifactId = OJDBC6 -DVersion = 12.1.0.2.0 -dpackaging = jar -dfile = ojdbc6.jar
Si el "éxito de compilación" se muestra con éxito, su repositorio local Maven se importará automáticamente.
Luego puede agregar dependencia al proyecto Maven, y cada coordenada corresponde a los elementos del comando anterior, de la siguiente manera:
<Spendency> <ProupId> com.oracle </proupid> <artifactId> ojdbc6 </artifactid> <versión> 12.1.0.2.0 </versión> </pendency>
Archivo de configuración de Spring: ApplicationContext.xml
<? xml versión = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" "" "" xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: context = "http://www.springframework.org/schema/tx" xmlns: util = "http://www.springframe xmlns: p = "http://www.springframework.org/schema/p" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/Beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd " escaneo-> <context: component-scan base-package = "com.krry"> < /context: component-scan> <!-importar archivo de recursos externos-> <!-<context: property-placeholeation = "classpath: jdbc.properties" />-> <bean p: ubicación = "classpath: jdbc.properties" P: fileenCoding = "Utf-8" "" grupo-> <bean id = "dataSource"> <!-Nombre del controlador, mysql-> <Property name = "controlador" value = "$ {db.driver}"> </sperties> <!-proxool la cadena de conexión de URL de esto debe determinar el nombre de usuario y la contraseña-> <name de propiedad = "conducturl" valor = "$ {db.url}"> </propiedad> <!-usereMe (no puede usarse (no puede usar (no puede usar (no puede usarse (no puede usar ". quedarse fuera)-> <Property name = "user" value = "$ {db.username}"> </property> <!-contraseña (proxool no se usa, pero no se puede dejar fuera)-> <name de propiedad = "contraseña" value = "$ {db.password}"> </sperties> <!-intervalo de tiempo para proxol para recuperar automáticamente cada conexión estatal (Milliseconds). Cuando se realice el reconocimiento, recíntelo de inmediato. The timeout destruction is now set to 4 seconds) --> <property name="houseKeepingSleepTime" value="3000"></property><!-- Automatically check whether the connection is broken--> <property name="testBeforeUse" value="true"></property> <!-- If an idle database connection is found, the house keeper will be tested with this statement. Esta declaración se ejecuta mejor muy rápidamente. Si no se define, el proceso de prueba se ignorará-> <propiedad name = "HousekeepingTestSql" value = "Seleccione recuento (1) de dual"> </property> <!-Si la ama de llaves detecta que el tiempo de actividad de un hilo es mayor que este valor. Matará el hilo. Así que confirme el ancho de banda de su servidor. Luego establezca un valor adecuado. El valor predeterminado es de 5 minutos. Ahora establezca 10 segundos-> <Property name = "MaximumumAcTiveTime" value = "10000"> </property> <!-El número mínimo de conexiones inactivas a mantener (ahora establece 20)-> <Property Name = "PrototyPecount" valor = "20"> </Property> <!-El número máximo de conexiones (ahora establece 100)-> <Nombre de propiedad = "Máximo CONNECCIÓN" Valor = "Value =" Value = "200" ". Número de conexiones (ahora establecidas 50)-> <propiedad name = "MinimumConnectionCount" Value = "50"> </property> <!-Si es verdadero, entonces cada instrucción SQL ejecutada se registrará durante el período de ejecución (nivel de depuración). También puede registrar un ConnectionListener (ver Proxoolfacade) para obtener esta información. -> <Property name = "traza" valor = "falso"> </propiedad> <propiedad name = "verbose" value = "true"> </property> </bean> <!-Registro de transacciones Administrador-> <bean id = "txmgr"> <Property name = "dataSource" ref = "dataSource"> </prown> </bean> <! transaccion-ganager = "txmgr"/> <!-Configurar sqlsessionFactory de myBatis-> <bean id = "sqlsessionFactory"> <propiedad name = "dataSource" ref = "dataSource"> </Property> <Property name = "configLocation" value = "classpath: myBatis-conconfig.xml"> </property> </name = "configLocation" value = "classpath: myBatis-concli Escanee el mapeador en su conjunto-> <rem Bean> <!-Si hay múltiples informes, separen con comas-> <propiedad name = "basepackage" value = "com.krry.mapper"> </propine> <Property name = "sqlSessionFactoryBeanName" value = "sqlsessionFactory"> </propiedad> </beons> </ Beans> Archivo de configuración de Spring MVC: Springmvc.xml
<? xml versión = "1.0" encoding = "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/util" xmlns: mvc = "http://www.springframework.org/schema/schemhema" " xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/contextExt http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd http://www.springframework.org/schema http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.Xsd "> < FormattingConversionServiceFactoryBean-> <mvc: annotation-driven> <mvc: mensaje-confonverters registre-defaults = "true"> <bean> <propiedad name = "admitededMediatypes"> <List> <alon valor> text/lisin; charset = utf-8 </valor> <valor> text/html; charset = utf-8 </valor </list> </list> <bean/> <bean/> <bean> <bean> <property name="prefixJson" value="false" /> <property name="objectMapper"> <bean> <!-- Handle the date type in the responseBody--> <property name="dateFormat"> <bean> <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" /> </bean> </Property> <!-No se muestra cuando el campo es nulo-> <Property name = "SerializationInclusion"> <valor tipo = "com.fasterxml.jackson.annotation.jsoninclude.include"> non_null </alon value> </bean> </property> <propers name = "con compatible conmediatypes"> <In List> <Value> aplicación/json; <valor> aplicación/x-www-form-urlencoded; charset = utf-8 </alone> </list> </propiional> </aBre> </mvc: mensajes-Converters> </mvc: annotation-driven> <!-paquete de escaneo-> <context: component-scan-base-trackage = "com.krry.constroller"> </////scan de componente de componente a statscan a stattate a statsate a statcan a statcan a stattate a stattat. Los archivos deben establecerse, porque en la configuración de SpringMVC, todas las solicitudes (.do, adduser, js/image/css) en este proyecto se analizarán por SpringMVC, y todos los archivos de recursos estáticos deben filtrarse y liberarse-> <! mapping = "/resourse/**" ubicación = "/resourse/"/> <!-Definición de interceptor-> <mvc: interceptores> <mvc: interceptor> <!-el centro personal también necesita iniciar sesión en configuraciones que comienzan con administrador a intercept-> <mvc: asignando ruta = "/administrador/**"> </mvc: mapear> <!-esto es el ruta que no ingrese el interceptor- <mvc: excluir-mapping ruta = "/resourse/**"/> <!-La clase en la que entra el interceptor, devuelve falso para indicar que la entrada no ingresará-> <bean/> </mvc: interceptor> </mvc: interceptores> <! name = "uploadTempDir" value = "/temp"> </property> <propiedad name = "maxUploadSize"> <value> 209715200 </value> <!-200mb-> </Property> <Property name = "MaxInMemorySize"> <Value> 4096 </valor> <!-4KB size Read and Write-> </</"/</beay </beay <! JSP/Freemaker/Velocity-> <Bean> <!-Cree una ruta al almacenamiento de la página-> <Property Name = "Prefix" Value = "/Web-Inf/Pages/"> </Property> <!-File Suffix-> <Property Name = "Suffix" Value = ". JSP"> </Property> </ Beans>
Archivo de configuración de la base de datos: JDBC.Properties
db.driver = oracle.jdbc.oracledriver db.url = jdbc: oracle: delgado:@127.0.0.1: 1521: orcl db.username = 4m+LA23KCA4 = db.password = wwijciympau/= = =
He usado el algoritmo de cifrado aquí
Archivo de configuración de registro: log4j.properties
log4j.rootlogger = debug, console, filelog4j.appender.console = org.apache.log4j.consoleppenderlog4j.appender.console.layout = org.apache.log4j.patternlaylog4j.appender.console.layout.conconversionpattern HH: MM: SS} %-5p [ %t] %10l - %m %nlog4j.appender.file = org.apache.log4j.rollingFileApeppenderlog4j.appender.file.file = d: /Logs/log4j.loglog4j.apender.file.maxfilesize=1mblog4J truelog4j.appender.file.layout = org.apache.log4j.patternlayoutlog4j.appender.file.layout.conversionPattern = %d {yyyy/mm/dd/hh: mm: ss} %-5p [ %t] %10l - %m %n Archivo de configuración de MyBatis: mybatis-config.xml
<? xml versión = "1.0" encoding = "utf-8"?> < name = "Cacheenabled" value = "true" /> <!-Apague la carga instantánea del objeto asociado para el rendimiento-> <setting name = "lazyLoadingEnabled" value = "true" /> <!-Establezca la forma de carga del objeto asociado. Aquí hay un campo de carga a pedido (el campo de carga es especificado por SQL). Todos los campos de la tabla asociada no se cargarán para mejorar el rendimiento-> <setting name = "agressiveRiveLAwaring" value = "false" /> <! Para consultas SQL desconocidas, se permiten que se devuelvan diferentes conjuntos de resultados para lograr un efecto común-> <setting name = "multipLaterSultSetSenabled" value = "verdadero" /> <!-Permitir usar columnas etiquetas en lugar de nombres de columna de columna en columna. value = "true" /> <!-Permitir usar valores de clave primarios personalizados (como la codificación UUID de 32 bits generada por el programa como valores clave), y la estrategia de generación PK de la tabla de datos se sobrescribirá-> <setting name = "useGeneratedKeys" value = "true" /> <!-dar un soporte de resultados de resultados para el mapaje de campo de campo < </etenchings> <pyetealias> <!-alias para objeto de usuario personalizado-> <!-<typealias type = "com.krry.mybatis.sysmanage.entity.user" alias = "user"/>-> <!-Definición de lotes alias-> <packer = "com.krry.entity"/> </typealiases> </configuración>
Archivo de configuración del programa de red: web.xml
<? xml versión = "1.0" encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://xmlns.jcp.org/xml/ns/Javaee" xsi: schemalocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3" id = "WebApp_id" Version = "3.1"> <Spant-Name> maven_ssm </sipplave-name> <welcome-file-list> <calle-file> index </ bevie-file> </welcome-file-list> <!-Cargando el contenedor Spring IOC-> <context-param> <amam-name> contextciglocation </param-name> <amam-value> classpath: applicationContext.xml </param-value> </context-param> <!-spring context oyeer-> <searcher> <searcher-class> org.springframework.web.context.contextloaderListener </chearer-class> </oyear> <! <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <filter> <filter-name>encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <amamname> codificación </amamname> <amam-value> utf-8 </marr-value> </ init-param> </filter> <filter-mapping> <filter-name> codificación </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-Configurar envío de compatibilidad-> <ervlet> <Servlet-name> maven_ssm </servlet-name> <ervlet-class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <!-configure el archivo de configuración de SpringMvc-> <!-Si las siguientes opciones no están configuradas, el sistema predetermina el archivo de carga [servlet-name] -servlet.xml bajo Classpath en Classpath springmvc01-servlet.xml-> <init-param> <amamname> contextConfigLocation </param-name> <amam-value> classpath: springmvc.xml </param-value> </initparam> </servlet> <ervlet-mapping> <ervlet-name> maven_ssm </servlet-name> <url-pattern> < / servlet-mapping> <!-puede coincidir *.do, *.Action (comprensión) / (clave): todas las solicitudes serán analizadas por Spring MVC, pero los archivos de recursos estáticos deben filtrarse y lanzarse. Se recomienda que use este método/*: no se recomienda que use-> <servlet-mapping> <ervlet-name> maven_ssm </servlet-name> <url-pattern>/</sl-pattern> </servlet-mapping> </web-app>
En este punto, la configuración básica está completa y el paquete JAR se confía automáticamente. Pruebe y escriba el código Java posterior
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.