zoukankan      html  css  js  c++  java
  • 架构:第三章:单一(伪分布式)架构之SSM整合

    单一(伪分布式)架构之使用Maven建立各个工程之间的依赖、继承、聚合关系
    SSM jar包依赖统一管理
    工程:parent
    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/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com</groupId>
      <artifactId>parent</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>pom</packaging>
      <modules>
      	<module>common</module>
      	<module>ui-manager</module>
      	<module>component</module>
      </modules>
      
      <!-- 声明properties对依赖版本进行统一管理 -->
        <properties>
            <spring.version>4.0.0.RELEASE</spring.version>
        </properties>
      <!-- 依赖信息的统一管理 -->
    <dependencyManagement>
        <dependencies>
            <!-- Spring依赖 -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</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-test</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
            <!-- Spring辅助依赖 -->
            <dependency>
                <groupId>cglib</groupId>
                <artifactId>cglib</artifactId>
                <version>2.2</version>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>1.6.8</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-mapper-asl</artifactId>
                <version>1.9.2</version>
            </dependency>
    
            <!-- 数据库相关依赖 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.37</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.0.31</version>
            </dependency>
            <!-- Mybatis相关依赖 -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.2.8</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>1.2.2</version>
            </dependency>
    
            <!-- Mybatis的PageHelper插件依赖 -->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>4.0.0</version>
            </dependency>
    
            <!-- 日志打印相关 -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.7</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.7.7</version>
            </dependency>
    
            <!-- 文件上传 -->
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.3.1</version>
            </dependency>
    
            <!-- JSTL标签 -->
            <dependency>
                <groupId>jstl</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
    
            <!-- junit依赖 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
    
            <!-- servlet-api -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>2.5</version>
                <scope>provided</scope>
            </dependency>
    
            <!-- jsp-api -->
            <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>jsp-api</artifactId>
                <version>2.1.3-b06</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    </project>
    

    建库建表SQL

    CREATE DATABASE IF NOT EXISTS `atcrowdfunding` CHARACTER SET utf8 COLLATE utf8_bin;
    USE atcrowdfunding;
    create table IF NOT EXISTS t_user
    (
       id                   int not null auto_increment,
       loginacct            varchar(255) not null,
       userpswd             char(32) not null,
       username             varchar(255) not null,
       email                varchar(255) not null,
       createtime           char(19),
       primary key (id)
    );
    

    Mybatis相关
    MyBatis配置文件

    文件名:mybatis-config.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE 
    	configuration 
    	PUBLIC 
    	"-//mybatis.org//DTD Config 3.0//EN" 
    	"http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    </configuration>
    

    在这里插入图片描述
    创建MyBatis逆向工程
    在其他工程之外创建另外一个工程
    在这里插入图片描述

    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/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com</groupId>
      <artifactId>reverse</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      
      <!-- 这个依赖是为了避免生成Mapper接口后报错,不影响资源生成过程 -->
    	<dependencies>
    	    <dependency>
    	        <groupId>org.mybatis</groupId>
    	        <artifactId>mybatis</artifactId>
    	        <version>3.2.8</version>
    	    </dependency>
    	</dependencies>
    	
    	<!-- 配置逆向工程的Maven插件 -->
    	<build>
    	    <!-- plugins:构建过程中用到的插件 -->
    	    <plugins>
    	        <!-- plugin:具体插件 -->
    	        <plugin>
    	            <!-- MyBatis逆向工程插件坐标 -->
    	            <groupId>org.mybatis.generator</groupId>
    	            <artifactId>mybatis-generator-maven-plugin</artifactId>
    	            <version>1.3.0</version>
    	
    	            <!-- 插件工作过程中用到的依赖 -->
    	            <dependencies>
    	                <dependency>
    	                    <groupId>org.mybatis.generator</groupId>
    	                    <artifactId>mybatis-generator-core</artifactId>
    	                    <version>1.3.2</version>
    	                </dependency>
    	                <dependency>
    	                    <groupId>com.mchange</groupId>
    	                    <artifactId>c3p0</artifactId>
    	                    <version>0.9.2</version>
    	                </dependency>
    	                <dependency>
    	                    <groupId>mysql</groupId>
    	                    <artifactId>mysql-connector-java</artifactId>
    	                    <version>5.1.8</version>
    	                </dependency>
    	            </dependencies>
    	        </plugin>
    	    </plugins>
    	</build>
      
    </project>
    

    逆向工程配置文件:generatorConfig.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE generatorConfiguration
    			  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
    			  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    
    <generatorConfiguration>
    
    	<context id="tables" targetRuntime="MyBatis3Simple" defaultModelType="flat">
    		<commentGenerator>
    			<!-- 是否去除自动生成的注释 true:是;false:否 -->
    			<property name="suppressAllComments" value="true" />
    		</commentGenerator>
    
    		<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
    		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
    			connectionURL="jdbc:mysql://localhost:3306/atcrowdfunding" userId="root"
    			password="root">
    		</jdbcConnection>
    
    		<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 
    			和 NUMERIC 类型解析为java.math.BigDecimal -->
    		<javaTypeResolver>
    			<property name="forceBigDecimals" value="false" />
    		</javaTypeResolver>
    
    		<!-- targetProject:生成Entity类的路径 -->
    		<javaModelGenerator targetProject=".srcmainjava"
    			targetPackage="com.entity">
    			<!-- enableSubPackages:是否让schema作为包的后缀 -->
    			<property name="enableSubPackages" value="false" />
    			<!-- 从数据库返回的值被清理前后的空格 -->
    			<property name="trimStrings" value="true" />
    		</javaModelGenerator>
    
    		<!-- targetProject:XxxMapper.xml映射文件生成的路径 -->
    		<sqlMapGenerator targetProject=".srcmainjava"
    			targetPackage="com.component.mapper">
    			<!-- enableSubPackages:是否让schema作为包的后缀 -->
    			<property name="enableSubPackages" value="false" />
    		</sqlMapGenerator>
    
    		<!-- targetPackage:Mapper接口生成的位置 -->
    		<javaClientGenerator type="XMLMAPPER"
    			targetProject=".srcmainjava" targetPackage="com.component.mapper">
    			<!-- enableSubPackages:是否让schema作为包的后缀 -->
    			<property name="enableSubPackages" value="false" />
    		</javaClientGenerator>
    
    		<!-- 数据库表名字和我们的entity类对应的映射指定 -->
    		<table tableName="t_user" domainObjectName="UserDO" />
    
    	</context>
    </generatorConfiguration>
    

    生成资源的Maven命令:mybatis-generator:generate
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    资源归位F5刷新项目

    在这里插入图片描述

    复制文件到其他项目
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    Spring和MyBatis整合
    在common工程加入Spring和MyBatis整合需要的依赖
    pom.xml

    <dependencies>
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-orm</artifactId>
    	</dependency>
    	<dependency>
    		<groupId>cglib</groupId>
    		<artifactId>cglib</artifactId>
    	</dependency>
    	<dependency>
    		<groupId>org.aspectj</groupId>
    		<artifactId>aspectjweaver</artifactId>
    	</dependency>
    	<dependency>
    		<groupId>org.codehaus.jackson</groupId>
    		<artifactId>jackson-mapper-asl</artifactId>
    	</dependency>
    	<dependency>
    		<groupId>mysql</groupId>
    		<artifactId>mysql-connector-java</artifactId>
    	</dependency>
    	<dependency>
    		<groupId>com.alibaba</groupId>
    		<artifactId>druid</artifactId>
    	</dependency>
    	<dependency>
    		<groupId>org.mybatis</groupId>
    		<artifactId>mybatis</artifactId>
    	</dependency>
    	<dependency>
    		<groupId>org.mybatis</groupId>
    		<artifactId>mybatis-spring</artifactId>
    	</dependency>
    	<dependency>
    		<groupId>log4j</groupId>
    		<artifactId>log4j</artifactId>
    	</dependency>
    	<dependency>
    		<groupId>org.slf4j</groupId>
    		<artifactId>slf4j-api</artifactId>
    	</dependency>
    	<dependency>
    		<groupId>org.slf4j</groupId>
    		<artifactId>slf4j-log4j12</artifactId>
    	</dependency>
    </dependencies>
    

    在ui-manger项目中加入

    jdbc.properties

    jdbc.user=root
    jdbc.password=root
    jdbc.url=jdbc:mysql://localhost:3306/atcrowdfunding?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8
    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.initialSize=20
    jdbc.minIdle=10
    jdbc.maxActive=50
    jdbc.maxWait=10000
    jdbc.timeBetweenEvictionRunsMillis=60000
    jdbc.minEvictableIdleTimeMillis=300000
    jdbc.testWhileIdle=true
    

    log4j.properties

    # For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml!
    # For all other servers: Comment out the Log4J listener in web.xml to activate Log4J.
    # DEBUG < INFO < WARN < ERROR < FATAL
    log4j.rootLogger=DEBUG, a, logfile
    
    log4j.appender.a=org.apache.log4j.ConsoleAppender
    log4j.appender.a.layout=org.apache.log4j.PatternLayout
    log4j.appender.a.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,S} %-5p [%c] %l - %m%n
    
    log4j.appender.logfile=org.apache.log4j.RollingFileAppender
    log4j.appender.logfile.File=D:/atcrowdfunding.log
    log4j.appender.logfile.MaxFileSize=512KB
    # Keep three backup files.
    log4j.appender.logfile.MaxBackupIndex=3 
    # Pattern to output: date priority [category] - message
    log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
    log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
    

    spring-tx.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"
    	xmlns:aop="http://www.springframework.org/schema/aop"
    	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-4.0.xsd
    		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
    		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
    
    	<!-- 引入外部属性文件 -->
    	<context:property-placeholder location="classpath:jdbc.properties"/>
    	<!-- 配置自动扫描的包 -->
    	<context:component-scan base-package="com.component.service.impl"/>
    	<!-- 配置数据源 -->
    	<bean id="dataSource"
    		class="com.alibaba.druid.pool.DruidDataSource">
    		<property name="username" value="${jdbc.user}" />
    		<property name="password" value="${jdbc.password}" />
    		<property name="url" value="${jdbc.url}" />
    		<property name="driverClassName" value="${jdbc.driver}" />
    		<!-- 配置初始化大小、最小、最大 -->
    		<property name="initialSize" value="${jdbc.initialSize}" />
    		<property name="minIdle" value="${jdbc.minIdle}" />
    		<property name="maxActive" value="${jdbc.maxActive}" />
    		<!-- 配置获取连接等待超时的时间 -->
    		<property name="maxWait" value="${jdbc.maxWait}" />
    		<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
    		<property name="timeBetweenEvictionRunsMillis"
    			value="${jdbc.timeBetweenEvictionRunsMillis}" />
    		<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
    		<property name="minEvictableIdleTimeMillis"
    			value="${jdbc.minEvictableIdleTimeMillis}" />
    		<property name="testWhileIdle" value="${jdbc.testWhileIdle}" />
    	</bean>
    	
    	<!-- 配置SqlSessionFactoryBean -->
    	<!-- SqlSessionFactoryBean实现了FactoryBean接口,所以这里配置的bean返回的对象是SqlSessionFactory的对象 -->
    	<!-- SqlSessionFactoryBean将创建SqlSessionFactory对象的繁琐细节进行了封装和屏蔽 -->
    	<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
    		<!-- 装配数据源 -->
    		<property name="dataSource" ref="dataSource"/>
    		
    		<!-- 指定MyBatis配置文件位置 -->
    		<property name="configLocation" value="classpath:mybatis-config.xml"/>
    		
    		<!-- 配置Mapper配置文件路径 -->
    		<property name="mapperLocations" value="classpath:mapper/*Mapper.xml"></property>
    		
    	</bean>
    	
    	<!-- 为Mapper接口的扫描器指定Mapper接口所在包 -->
    	<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    		<!-- 指定Mapper接口所在的包 -->
    		<property name="basePackage" value="com.component.mapper"/>
    	</bean>
    	
    	<!-- 配置声明式事务 -->
    	<!-- 配置事务管理器 -->
    	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    		<!-- 装配数据源 -->
    		<property name="dataSource" ref="dataSource"/>
    	</bean>
    	
    	<!-- 配置事务切面的切入点表达式 -->
    	<aop:config>
    		<aop:pointcut expression="execution(* *..*Service.*(..))" id="txPointCut"/>
    		<!-- 将切入点表达式和事务通知配置关联起来 -->
    		<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
    	</aop:config>
    	
    	<!-- 配置事务通知属性 -->
    	<tx:advice id="txAdvice" transaction-manager="transactionManager">
    		<tx:attributes>
    			<tx:method name="get*" read-only="true"/>
    			<tx:method name="list*" read-only="true"/>
    			<tx:method name="count*" read-only="true"/>
    			<!--rollback-for属性:指定事务回滚的异常 -->
    			<!--propagation属性:事务的传播行为 -->
    			<!--REQUIRED:当前方法必须运行在事务中,但如果当前线程上已经开启了事务,则在当前事务中运行 -->
    			<!--REQUIRES_NEW:当前方法必须运行在事务中,而且一定要开启一个新事务,在自己的事务中运行。避免在共用事务时其他方法操作失败导致当前方法回滚。 -->
    			<tx:method name="remove*" rollback-for="java.lang.Exception" propagation="REQUIRES_NEW"/>
    			<tx:method name="save*" rollback-for="java.lang.Exception" propagation="REQUIRES_NEW"/>
    			<tx:method name="update*" rollback-for="java.lang.Exception" propagation="REQUIRES_NEW"/>
    		</tx:attributes>
    	</tx:advice>
    
    </beans>
    

    测试类

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations="classpath:spring-tx.xml")
    public class AtCrowdfundingTest {
    	
    	@Autowired
    	private DataSource dataSource;
    	
    	@Test
    	public void testDataSource() throws SQLException {
    		Connection connection = dataSource.getConnection();
    		System.out.println(connection);
    	}
    
    }
    

    将spring-tx.xml,jdbc.properties文件放到测试src/test/resources下
    如果出现下列错误

    在这里插入图片描述
    发现报错add添加junit.jar和spring-test
    在这里插入图片描述

    或者在ui-manger项目的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/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>com</groupId>
        <artifactId>parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
      </parent>
      <artifactId>ui-manager</artifactId>
      <packaging>war</packaging>
      <dependencies>
      	<dependency>
      		<groupId>junit</groupId>
      		<artifactId>junit</artifactId>
      	</dependency>
      	<dependency>
      		<groupId>com</groupId>
      		<artifactId>component</artifactId>
      		<version>0.0.1-SNAPSHOT</version>
      	</dependency>
    
      	<dependency>
      		<groupId>org.springframework</groupId>
      		<artifactId>spring-test</artifactId>
      	</dependency>
      </dependencies>
    </project>
    

    如果还有报错
    在这里插入图片描述
    在common项目的pom.xml中添加

     <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
    </dependency>
    

    在这里插入图片描述

    在这里插入图片描述

    Spring和SpringMVC整合
    创建SpringMVC的配置文件
    spring-mvc.xml

    在common工程中加入Web开发相关依赖,之前如果添加过就不用再添加了

    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-webmvc</artifactId>
    	</dependency>
    	<dependency>
    		<groupId>jstl</groupId>
    		<artifactId>jstl</artifactId>
    	</dependency>
    

    在这里插入图片描述
    在ui-manger工程加入Web开发相关依赖

    	<dependency>
    		<groupId>javax.servlet</groupId>
    		<artifactId>servlet-api</artifactId>
    		<scope>provided</scope>
    	</dependency>
    
    	<dependency>
    		<groupId>javax.servlet.jsp</groupId>
    		<artifactId>jsp-api</artifactId>
    		<scope>provided</scope>
    	</dependency>
    

    在spring-mvc.xml中加入名称空间
    在这里插入图片描述
    在这里插入图片描述

    配置spring-mvc.xml

    <?xml version="1.0" encoding="UTF-8"?>

    	<!-- 配置自动扫描的包 -->
    	<context:component-scan base-package="com.component.handler"/>
    	
    	<!-- 配置视图解析器 -->
    	<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<property name="prefix" value="/WEB-INF/"/>
    		<property name="suffix" value=".jsp"/>
    	</bean>
    	
    	<!-- 标配 -->
    	<mvc:annotation-driven/>
    	
    	<!-- DefaultServletHandler[可选]
    	计划在web.xml中让DispatcherServlet映射扩展名,所以DefaultServletHandler可以不配置。 -->
    	<mvc:default-servlet-handler/>
    
    </beans>
    

    在web.xml中配置
    在这里插入图片描述web.xml

    <?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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
      <display-name>ui-manager</display-name>
    <!-- needed for ContextLoaderListener -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-tx.xml</param-value>
    </context-param>
    
    <!-- Bootstraps the root web application context before servlet initialization -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    
    <!-- DispatcherServlet        -->
    <!-- The front controller of this Spring Web application, responsible for handling all application requests -->
    <servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <!-- Map all requests to the DispatcherServlet for handling -->
    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
    
    <!-- CharacterEncodingFilter -->
    <filter>
        <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    <!-- HiddenHttpMethodFilter -->
    <filter>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    </web-app>
    

    如果有其他问题可能是jar包下载失败,可以将你的maven仓库删除重新下载,你也可以按alt+F5,选择项目更新,也可能是你的eclipse没有maven配置或者评论下方留言,如果有时间我可以帮你看看

    伪静态效果
    通过让DispatcherServlet映射*.html实现伪静态。可以将由SpringMVC处理的动态请求从表面看起来像是访问一个HTML静态页面,这样让项目不容易被猜到用什么技术实现的。
    给黑客入侵制造障碍。
    一定程度上有利于SEO优化:让搜索引擎更容易找到我们的网站。

    我自己写好的项目,完整版的SSM整合reverseparent父项目下有子项目,导入带有spring插件的eclipse时,子项目从父项目中导入就即可,注意有spring插件的eclipse要maven配置

    我们做个首页展示
    首页展示
    创建index.jsp
    在这里插入图片描述

    可能报错,解决方案

    在index.jsp中执行转发操作

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    	request.getRequestDispatcher("/index.html").forward(request, response);
    %>
    

    为/index.html地址映射一个handler方法

    package com.component.handler;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class PortalMainHandler {
    	
    	@RequestMapping("/index")
    	public String showIndexPage() {
    		
    		//准备首页要显示的数据……
    		
    		return "portal/main";
    	}
    
    }
    

    经过spring-mvc.xml的视图解析器拼接,我们创建main.jsp

    在这里插入图片描述

    页面自己写,现在直接
    在这里插入图片描述
    就可以看到自己的页面了

    还可以将原型代码(前端人员写的)加入main.jsp中
    但是加上base标签

    <base href="http://${pageContext.request.serverName }:${pageContext.request.serverPort}${pageContext.request.contextPath}/"/>
    

    注意点1:端口号和contextPath之间不要再加“/”。
    注意点2:contextPath后面要加“/”。

    在这里插入图片描述
    样式加一下
    在这里插入图片描述

  • 相关阅读:
    C#题型补充
    php数组
    PHP字符串
    动态网页制作PHP常用的正则表达式
    Objective-C:Foundation框架-常用类-NSArray
    Objective-C:Foundation框架-常用类-NSMutableString
    Objective-C:Foundation框架-常用类-NSString全解
    Objective-C:Block
    Objective-C:Category
    Objective-C:@property参数详解
  • 原文地址:https://www.cnblogs.com/javawxid/p/12812055.html
Copyright © 2011-2022 走看看