• YOUNG博客项目设计书_v01.00_SSH项目结构创建。


    1.项目结构创建

    创建Maven的Web项目,目录结构如下:

    添加素材和静态界面,并将其后缀改为.jsp。

    配置pom.xml文件,搭建SSH 开发环境。

    <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.young.blog</groupId>
        <artifactId>blog_v001</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>war</packaging>
        <name>blog_v001</name>
        <properties>

          <servlet.version>2.5</servlet.version>
          <jsp.version>6.0.32</jsp.version>

            <webVersion>3.0</webVersion>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <junit.version>4.10</junit.version>
            <spring.version>3.1.1.RELEASE</spring.version>
            <mysql.version>5.0.8</mysql.version>
            <struts.version>2.3.1</struts.version>
            <hibernate.version>3.6.5.Final</hibernate.version>
            <c3p0.version>0.9.2.1</c3p0.version>
            <log4j.version>1.2.16</log4j.version>
            <slf4j.version>1.6.1</slf4j.version>
            <javassist.version>3.11.0.GA</javassist.version>
            <fastjson.version>1.2.15</fastjson.version>
        </properties>
        <dependencies>
         <!-- mysql -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-core</artifactId>
                <version>${struts.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-spring-plugin</artifactId>
                <version>${struts.version}</version>
            </dependency>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>${hibernate.version}</version>
            </dependency>
            <dependency>
                <groupId>com.mchange</groupId>
                <artifactId>c3p0</artifactId>
                <version>${c3p0.version}</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-nop</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>javassist</groupId>
                <artifactId>javassist</artifactId>
                <version>${javassist.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</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-jdbc</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-web</artifactId>
                <version>${spring.version}</version>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>${fastjson.version}</version>
            </dependency>
    
    
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>${servlet.version}</version>
                <scope>provided</scope>
            </dependency>

          <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>jsp-api</artifactId>
            <version>${jsp.version}</version>
            <scope>provided</scope>
          </dependency>


    </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <executions> <execution> <phase>package</phase> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins>

          <resources>
            <resource>
              <directory>src/main/java</directory>
              <includes>
                <include>**/*.xml</include>
              </includes>
              <filtering>true</filtering>
            </resource>
            <resource>
              <directory>src/main/resources</directory>
              <includes>
                <include>*</include>
              </includes>
              <filtering>true</filtering>
            </resource>
          </resources>

        </build>
    </project>

    配置web.xml 文件

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    
        <!-- spring -->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </context-param>
    
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    
        <filter>
            <filter-name>encoding</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>
        </filter>
        <filter-mapping>
            <filter-name>encoding</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
        <!-- 配置opensessioninview解决懒加载,本质一个过滤器. -->
        <filter>
            <filter-name>OpenSessionInViewFilter</filter-name>
            <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>

          <init-param>
            <param-name>flushMode</param-name>
            <param-value>AUTO</param-value>
          </init-param>

        </filter>
        <filter-mapping>
            <filter-name>OpenSessionInViewFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <!--struts2 -->
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
            <dispatcher>REQUEST</dispatcher>
            <dispatcher>FORWARD</dispatcher>
        </filter-mapping>
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>

    在classpath下创建spring的配置文件applicationContext.xml和struts2的配置文件struts.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:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        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/aop
                            http://www.springframework.org/schema/aop/spring-aop.xsd
                            http://www.springframework.org/schema/tx 
                            http://www.springframework.org/schema/tx/spring-tx.xsd">
        
        <!-- 加载jdbc属性文件  -->
        
        <context:property-placeholder location="classpath:jdbc.properties" />
        <!-- 配置连接池  -->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc.driverClass}"></property>
            <property name="jdbcUrl" value="${jdbc.url}"></property>
            <property name="user" value="${jdbc.username}"></property>
            <property name="password" value="${jdbc.password}"></property>
        </bean>
        
        <!-- spring框架用于整合Hibernate的工厂bean -->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <!-- 注入Hibernate相关的属性 -->
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                    <prop key="hibernate.show_sql">true</prop>
                    <prop key="hibernate.format_sql">true</prop>
                    <prop key="hibernate.hbm2ddl.auto">update</prop>
                </props>
            </property>
            <!-- 注入Hibernate的映射文件 -->
            <property name="mappingLocations">
                    <value>classpath:/com/young/account/action/domain/User.hbm.xml</value>
            </property>
        </bean>
         <!-- class=""  -->
        <!-- 事务管理器 -->
        <bean id="transactionManager"
            class="org.springframework.orm.hibernate3.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"/>
        </bean>
    
        <!-- 组件扫描 -->
        <context:component-scan base-package="com.bos"/>
        <!-- 引入注解解析器 -->
        <context:annotation-config/>
        <!-- 事务注解 -->
        <tx:annotation-driven />
    </beans>
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
    
        <constant name="struts.devMode" value="true"/>
        <!-- 加载国际化文件 -->
        <constant name="struts.custom.i18n.resources" value="message"/>
        
        <package name="basicstruts2" extends="struts-default">
    
            
            <!-- 需要进行权限控制的页面访问 -->
            <action name="page_*_*">
                <result name="success" type="dispatcher">/WEB-INF/pages/{1}/{2}.jsp</result>
            </action>
            
        </package>
    </struts>

    最后添加数据库配置文件jdbc.properties和log4j.properties。

    jdbc.driverClass=com.mysql.jdbc.Driver
    jdbc.username=root
    jdbc.password=root
    jdbc.url=jdbc:mysql://127.0.0.1:3306/kf_young
    #log4j.rootLogger=warn,systemOut,logFile,logDailyFile,logRollingFile,logMail,logDB 
    
    #log4j.appender.systemOut= org.apache.log4j.ConsoleAppender
    #log4j.appender.systemOut.layout= org.apache.log4j.PatternLayout 
    #log4j.appender.systemOut.layout.ConversionPattern= [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%n 
    #log4j.appender.systemOut.Threshold= DEBUG 
    #log4j.appender.systemOut.ImmediateFlush= TRUE 
    #log4j.appender.systemOut.Target=System.out 

    此时SSH的基本运行环境就搭建好了。

    最后我们再添加一些常用的工具类:

    1.文件操作类FileUtils.java

    package com.young.util;
    
    import java.io.IOException;
    import java.net.URLEncoder;
    
    import sun.misc.BASE64Encoder;
    
    public class FileUtils {
            /**
             * 下载文件时,针对不同浏览器,进行附件名的编码
             * 
             * @param filename
             *            下载文件名
             * @param agent
             *            客户端浏览器
             * @return 编码后的下载附件名
             * @throws IOException
             */
            @SuppressWarnings("restriction")
            public static String encodeDownloadFilename(String filename, String agent)
                    throws IOException {
                if (agent.contains("Firefox")) { // 火狐浏览器
                    filename = "=?UTF-8?B?"
                            + new BASE64Encoder().encode(filename.getBytes("utf-8"))
                            + "?=";
                    filename = filename.replaceAll("
    ", "");
                } else { // IE及其他浏览器
                    filename = URLEncoder.encode(filename, "utf-8");
                    filename = filename.replace("+"," ");
                }
                return filename;
            }
    }

    MD5加密MD5Utils.java

    package com.young.util;
    
    import java.math.BigInteger;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    public class MD5Utils {
        /**
         * 使用md5的算法进行加密
         */
        public static String md5(String plainText) {
            byte[] secretBytes = null;
            try {
                secretBytes = MessageDigest.getInstance("md5").digest(
                        plainText.getBytes());
            } catch (NoSuchAlgorithmException e) {
                throw new RuntimeException("没有md5这个算法!");
            }
            String md5code = new BigInteger(1, secretBytes).toString(16);// 16进制数字
            // 如果生成数字未满32位,需要前面补0
            for (int i = 0; i < 32 - md5code.length(); i++) {
                md5code = "0" + md5code;
            }
            return md5code;
        }
    
    }
  • 相关阅读:
    Redis 常用操作
    Redis持久化功能
    Redis 和 memcache 简单比较
    你不知道的 JavaScript 系列中( 1 ) - 内置类型
    你不知道的 JavaScript 系列上( 57 ) - 类和委托思维模型的区别
    你不知道的 JavaScript 系列上( 56) - 委托行为
    你不知道的 JavaScript 系列上( 55) - Object.create()
    你不知道的 JavaScript 系列上( 54) - 检查 [[Prototype]]
    你不知道的 JavaScript 系列上( 53 ) - 原型继承
    你不知道的 JavaScript 系列上( 52 ) - .constructor
  • 原文地址:https://www.cnblogs.com/Jxiaobai/p/6849871.html
Copyright © 2020-2023  润新知