精华内容
下载资源
问答
  • 仅此作为一个参考,希望下载者更多的自己实践和进行思考。
  • SSM框架项目实战.zip

    2021-01-25 13:25:17
    SSM框架项目实战
  • SSM框架实战系列之十_MyBatis框架
    SSM框架实战系列之十_MyBatis框架

      接下来,就是最后一个框架:MyBatis框架。

      一、MyBatis框架的基本概念
      1、ORM
      ORM:即对象关系映射(Object Relational Mapping)。Java语言是面向对象(Object)的编程语言,而数据库通常是关系型(Relational)的,它们之间存在着天然的不匹配。在开发过程中经常需要将一个Java对象写入数据库,变成一条记录,也经常需要将数据库的一条记录读入内存,变成一个Java对象。
      以往这部分代码通常比较繁琐,写过JDBC程序的开发者应该深有体会。
      一个成熟的ORM框架可以自动地将Java对象写入数据库(自动生成INSERT语句),也可以自动地将记录变成Java对象(根据查询结果封装对象)。

      2、MyBatis框架与Hibernate框架的差异
      二者都是成熟的ORM框架,也存在着一些差异:
      (1) 开发工作量:Hibernate框架会自动生成增删改查所需的SQL语句,完全不需要开发人员编写SQL语句;MyBatis框架依赖开发人员自己编写SQL语句;当然,MyBatis框架也有自动化工具可以辅助生成SQL语句。
      (2) 灵活性:由于Hibernate框架自动生成SQL语句的,如果对Hibernate框架不够了解,性能优化比较困难;MyBatis框架由开发人员自己编写SQL语句,容易进行性能优化,例如可以让DBA协助优化SQL语句的性能。
      (3) 数据库可移植性:Hibernate框架可指定数据库“方言”,然后会自动生成不同数据库环境下的SQL语句,可移植性较强;MyBatis框架的SQL语句由开发人员书写,因为不同数据库的SQL语句会有差异,所以可移植性较差。

      由于大型系统通常数据库选型比较谨慎,不会轻易换数据库,并且大型系统对性能要求比较重视,所以MyBatis框架相对而言是有优势的,简单的SQL语句也有自动化工具可以生成,因此MyBatis框架是大型项目的首选ORM框架。

      二、Web项目中配置MyBatis框架
      以前MyBatis框架有自己的配置文件,不过现在通常是在Spring框架的配置文件中配置MyBatis。

      1、在resources/config目录下,创建一个jdbc.properties文件,用于保存数据库的各项信息:
    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/schooldb?useUnicode=true&characterEncoding=UTF8
    username=root
    password=root
    initialSize=0
    maxActive=20
    maxIdle=20
    minIdle=1
    maxWait=60000

      这个文件中包含了如下信息:
      × driver:数据库的JDBC驱动类名
      × url:数据库连接的URL
      × username:数据库用户名
      × password:密码
      × initialSize:初始连接数
      × maxActive:最大连接数
      × maxIdle:最大空闲连接数
      × minIdle:最小空闲连接数

      × maxWait:超时等待时间,以毫秒为单位


      2、在resources/config目录下,添加一个spring-mybatis.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:p="http://www.springframework.org/schema/p"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans    
                            http://www.springframework.org/schema/beans/spring-beans-4.2.xsd    
                            http://www.springframework.org/schema/context    
                            http://www.springframework.org/schema/context/spring-context-4.2.xsd    
                            http://www.springframework.org/schema/mvc    
                            http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
                            http://www.springframework.org/schema/tx    
                            http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
    
    	<!-- 用于读入外部properties文件 -->
    	<bean id="propertyConfigurer"
    		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    		<property name="location" value="classpath:config/jdbc.properties" />
    	</bean>
    
    	<!-- 数据源,这里使用dbcp连接池 -->
    	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    		destroy-method="close">
    		<property name="driverClassName" value="${driver}" />
    		<property name="url" value="${url}" />
    		<property name="username" value="${username}" />
    		<property name="password" value="${password}" />
    		<property name="initialSize" value="${initialSize}" />
    		<property name="maxActive" value="${maxActive}" />
    		<property name="maxIdle" value="${maxIdle}" />
    		<property name="minIdle" value="${minIdle}" />
    		<property name="maxWait" value="${maxWait}" />
    	</bean>
    
    	<!-- mybatis的session工厂 -->
    	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    		<property name="dataSource" ref="dataSource" />
    		<!-- 指定映射文件的位置 -->
    		<property name="mapperLocations" value="classpath:com/hanhf/ssm/dao/*.xml" />
    	</bean>
    
    	<!-- 扫描mapper接口,spring将创建mapper接口的动态代理 -->
    	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    		<property name="basePackage" value="com.hanhf.ssm.dao" />
    		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    	</bean>
    
    	<!-- 事务管理器 -->
    	<bean id="transactionManager"
    		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    		<property name="dataSource" ref="dataSource" />
    	</bean>
    
    	<!-- 注解驱动的事务管理,@Transactional -->
    	<tx:annotation-driven transaction-manager="transactionManager" />
    </beans>

      下面,分析一下该配置文件中的配置项。

      (1) propertyConfigurer

      该部分指定一个properties文件的处理类,并指定properties文件的位置。properties文件采用键值方式存储配置,方便易用,Spring框架中的PropertyPlaceholderConfigurer类可以辅助读取properties文件。


      (2) dataSource

      此处配置一个数据源,在实际应用中,往往使用数据库连接池技术,即在一个缓存池中事先存储多个已经建立好连接的数据库连接,需要时从连接池中取出一个,不用时再归还到连接池中,这样做可以提升连接速度。

      连接池的厂商很多,此处使用了apache的dbcp连接池。

      此处还配置了连接池的各项参数,其数据取自properties文件。


      (3) sqlSessionFactory

      Session工厂是MyBatis中的一个重要概念。

      在MyBatis中要执行数据操作例如增删改查,必须先取得数据库连接(即Session,数据库会话)。Session工厂采用工厂模式辅助生成数据库连接,工厂模式大家应该都懂,因为数据库厂商各异,取得数据库连接的代码也就各异,工厂模式掩盖了这些差异,对外提供了统一的获取连接的方法。

      此处,配置了Session工厂类的类名为SqlSessionFactoryBean,这是MyBatis框架中常用的Session工厂类。

      另外,还配置了MyBatis映射文件的位置。


      (4) MapperScannerConfigurer

      此处是MyBatis框架对Spring框架的一个适配(org.mybatis.spring.mapper.MapperScannerConfigurer,从包名可以看出这是MyBatis提供的一个类),它指定扫描一个包下的所有DAO接口,并生成DAO实现类。


      (5) 事务

      事务部分有两项:一个是事务管理器,一个是注解驱动的事务。有时也将事务部分独立出来,放在另一个Spring配置文件中。


    展开全文
  • SSM框架实战系列之七_Spring框架

      SSM框架实战系列之七_Spring框架


      从本节开始,我们将分别讲解Spring框架、SpringMVC框架、MyBatis框架。

      由于之前在搭建Maven项目时,已经在pom.xml文件中指定了所有必需的软件依赖,所以后面就只讲解这些框架怎么应用。


      一、什么是Spring框架?

      Spring框架是一个轻量级的控制反转(IoC)面向切面编程(AOP)的容器框架。
      J2EE早先提供了企业级应用开发框架EJB,然而这个框架太重;学习EJB的高昂代价,和极低的开发效率,极高的资源消耗,都造成了EJB的使用困难;Spring出现的初衷就是为了解决类似的这些问题。
      Spring的一个最大的目的就是使J2EE开发更加容易;Spring与Struts、Hibernate等单层框架不同的是,Spring致力于提供一个以统一的、高效的方式构造整个应用,并且可以将单层框架以最佳的组合揉和在一起,建立一个连贯的体系。


      Spring框架的架构如下图所示:


      从图中可以看到,Spring框架拆分得比较细,从下往上看,“Core Container(核心容器)”部分是Spring框架的内核,再上一层就是“AOP(面向切面编程)”部分,再上一层是Web部分和数据处理部分。

      当前Spring框架版本为4。


      二、Spring框架的主要特性

      Spring框架有几个主要特性,分别是:控制反转(IoC)依赖注入(DI)面向切面编程(AOP)


      1、控制反转

      假设有一家汉堡店的软件系统中,设计了汉堡类和三个子类(鸡腿堡、牛肉堡、鱼肉堡)。
      以前我们创建对象通常这么写:Hamburger hamburger = new FishHamburger();
      这种情况下,对象的创建由应用程序来完成,主要缺点是代码中硬编码了子类,代码的灵活性较差,例如要修改成吃另一种汉堡,就必须修改源代码。


      在引入Spring框架后,对象的创建由Spring框架负责,应用程序不再负责对象的创建,这就叫控制反转,即控制权从应用程序转给了Spring框架。
      在Spring配置文件中这么写:
      <bean id="hamburger" class="FishHamburger" />
      今后如果要换成另一种汉堡,修改Spring配置文件即可。


      2、依赖注入

      假设在上述汉堡店的软件系统中,汉堡的配料必须用到番茄酱,而番茄酱有三种:甜番茄酱、酸番茄酱、辣番茄酱。
      以前我们是这么写的:
      public class Hamburger {
        private Ketchup ketchup = new SweetKetchup();
      }

      这样写实际上汉堡类中也是硬编码了番茄酱类的子类,如果换一种酱,还是需要修改源代码。


      “依赖注入”中的“依赖”,表示一个类使用了另一个类作为属性,“注入”,表示为属性赋值。
      使用了依赖注入之后,应用程序不需要再为属性赋值:
      public class Hamburger {
        private Ketchup ketchup;
      }
      而是在Spring框架的配置文件中使用依赖注入,即使用property定义属性,ref表示属性的值来源于另一个bean:
      <bean id="ketchup" class="SweetKetchup" />
      <bean id="hamburger" class="FishHamburger" >
        <property name="ketchup" ref="ketchup" />
      </bean>


      这里还必须强调的是,编程中应依赖于接口编程,而不应依赖于实现类,例如在我的业务逻辑层类中,会使用到数据处理层,此时应该为数据处理层定义接口,然后在业务逻辑层中,定义接口类型的属性。

      例如SchoolDao接口中有增删改查方法,然后又编写了一个实现类SchoolDaoImpl。

      此时,SchoolServiceImpl类的代码应为:

      public class SchoolServiceImpl {

        private SchoolDao schoolDao; // 依赖于接口而不应依赖于实现类

      }


      3、面向切面编程

      面向切面编程,即AOP(Aspect Oriented Programming)。所谓切面,是指每个模块都要用到的通用功能,以前可能是在每个模块中都复制粘贴类似的代码,而面向切面编程,就是将这些通用代码抽取出来,通过定义切面的方式织入特定位置。这些通用功能包括事务、日志等。


      三、Web项目中加载Spring框架

      在Web项目中可以通过配置web.xml文件来加载Spring框架。


      通常有两种加载方式:

      1、Servlet方式

      在web.xml中添加如下Servlet定义:

    <servlet>
        <servlet-name>context</servlet-name>
        <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
      ContextLoaderServlet类会读取Spring框架的配置文件(默认为applicationContext.xml),并根据配置文件初始化Spring框架。


      2、监听器方式

      监听器是较新的Web版本才支持的功能,配置如下:

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:config/spring-*.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
      ContextLoaderListener类与ContextLoaderServlet类功能类似,都可加载配置文件,并初始化Spring框架。此处还配置了配置文件的路径(配置了类路径下,config目录中所有以spring开头的配置文件)。


      在web.xml中,最好再指定一下字符编码:

    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name >
        <url-pattern>/*</url-pattern>
    </filter-mapping>


      四、Spring配置文件

      在resources文件夹下,新建一个config文件夹,并在其中添加一个名为spring-beans.xml的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:p="http://www.springframework.org/schema/p"
    	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-4.2.xsd    
                            http://www.springframework.org/schema/context    
                            http://www.springframework.org/schema/context/spring-context-4.2.xsd    
                            http://www.springframework.org/schema/mvc    
                            http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">
    
    	<mvc:annotation-driven />
    	<context:component-scan base-package="com.hanhf" />
    </beans>
      这里我们不准备使用传统的在Spring配置文件定义bean的方式,而是采用了注解驱动的开发,即控制反转和依赖注入都由注解来完成,下一节会仔细讲解注解的使用。

      由于采用了注解驱动的开发,所以定义了<mvc:annotation-driven />即注解驱动,<context:component-scan base-package="com.hanhf" />即组件扫描,表示扫描根包下的所有类并解析其中的注解。


      最后,贴出代码清单。

      web.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                             http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    	version="3.0">
    
    	<display-name>ssmprj</display-name>
    
    	<!-- 加载spring框架 -->
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>classpath*:config/spring-*.xml</param-value>
    	</context-param>
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
    
    	<!-- 编码过滤器 -->
    	<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>
    </web-app>

      spring-beans文件:

    <?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:p="http://www.springframework.org/schema/p"
    	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-4.2.xsd    
                            http://www.springframework.org/schema/context    
                            http://www.springframework.org/schema/context/spring-context-4.2.xsd    
                            http://www.springframework.org/schema/mvc    
                            http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">
    
    	<mvc:annotation-driven />
    	<context:component-scan base-package="com.hanhf" />
    </beans>

      项目的目录结构:


    展开全文
  • SSM框架实战系列之九_SpringMVC框架

      SSM框架实战系列之九_SpringMVC框架


      从前面的文章中我们可以看到,Spring框架并不复杂,我们暂时只用到了Spring框架自动创建组件和自动注入依赖的特性,更多的特性在后面用到时再提及。

      事实上,Spring框架作为一个万用型框架,它可以粘合各种独立框架。可以说其它框架都可能过时并被替代,但Spring框架作为JavaEE应用程序开发的事实上的标准框架,应该能无悬念地持续生存下去。

      值得一提的是,Spring框架还出了一个Spring Boot版本,进一步简化配置,让开发人员易于入手是它的服务理念。


      本节将介绍SpringMVC框架。


      一、MVC编程模式

      SpringMVC框架是Spring框架的一部分,以前用得较多的是Struts框架,现在Struts框架的地位已经逐渐地被SpringMVC框架所取代。

      SpringMVC框架主要作用在控制器层。


      MVC编程模式:


      在MVC编程模式中,应用程序根据其作用分为三块:Controller(控制器)、Model(模型)、View(视图)。 

      用户请求===>控制器,控制器===>模型(完成实际业务、取得数据),控制器===>视图(使用数据填充视图),控制器===>用户(返回响应结果)。

      业务逻辑层、数据处理层、实体类都属于模型。

      视图部分有很多技术,除了传统的JSP之外,还有Velocity、Freemarker等。大部分技术都是通过编写模板,然后接收数据并填充模板。


      二、Web项目中配置SpringMVC框架

      前面说过,SpringMVC框架主要作用在控制器层,因此SpringMVC框架必须拦截所有的用户请求,这一点是在web.xml中配置的:

    	<servlet>
    		<servlet-name>springmvc</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    		<init-param>
    			<param-name>contextConfigLocation</param-name>
    			<param-value>classpath:config/spring-mvc.xml</param-value>
    		</init-param>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>springmvc</servlet-name>
    		<url-pattern>*.do</url-pattern>
    	</servlet-mapping>

      SpringMVC框架的核心是一个Servlet,名叫DispatcherServlet(Dispatcher:转发)。

      通过配置url-pattern,将拦截所有后缀为.do的请求。当然也可以写成/*,拦截任何请求。


      三、SpringMVC配置文件

      在resources/config文件夹下,添加一个名为spring-mvc.xml的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:p="http://www.springframework.org/schema/p"
    	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-4.2.xsd    
                            http://www.springframework.org/schema/context    
                            http://www.springframework.org/schema/context/spring-context-4.2.xsd    
                            http://www.springframework.org/schema/mvc    
                            http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">
    
    	<!-- 配置JSON -->
    	<bean id="mappingJacksonHttpMessageConverter"
    		class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
    		<property name="supportedMediaTypes">
    			<list>
    				<value>application/json; charset=UTF-8</value>
    			</list>
    		</property>
    	</bean>
    
    	<!-- 配置视图解析器 -->
    	<bean
    		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<property name="prefix" value="/WEB-INF/jsp/" />
    		<property name="suffix" value=".jsp" />
    	</bean>
    </beans>
      在此配置文件中,配置了视图解析器,当控制器方法返回一个字符串时,SpringMVC便会调用InternalResourceViewResolver(内部资源视图解析器)为此字符串加上前缀和后缀,例如控制器方法返回“/usr/add”时,视图资源对应为:“/WEB-INF/jsp/user/add.jsp”。

      另外还定义了JSON格式转换器。

      四、控制器方法

      SpringMVC控制器类的作用类似于Struts2框架中的Action类。
      SpringMVC框架的控制器类可以是一个普通的Java类,一般需要在控制器类前加上@Controller注解。


      SpringMVC的控制器与Struts2的Action类最大的区别是:Struts2的Action类是以类为一个基本单元,数据交互通常定义为类的属性;SpringMVC的控制器是以控制器方法为一个基本单元,数据交互在方法参数上传递。


      控制器方法示例:

    @Controller
    public class UserController {
        @RequestMapping("/login.do")
        public String login(String username, String password) {
            if (!"admin".equals(username) || !"admin".equals(password)) {
                return "failure"; // 视图解析器会加上前缀和后缀;
            }
            return "success";
        }
    }
      控制器方法前有一个@RequestMapping注解,该注解表示请求映射,即与此控制器方法相对应的访问路径,当用户访问login.do时进入此方法。

      1、从页面向控制器传值

      从页面向控制器值,例如登录时,页面需要向登录方法传递用户名和密码。这时,一般是通过定义控制器方法的入参来实现。

      (1) 方式一:直接定义入参

    @RequestMapping("/login.do")
    public String login(String username, String password) {
        if (!"admin".equals(username) || !"admin".equals(password)) {
            return "failure";
        }
        return "success";
    }
      这里直接定义了两个入参:username和password,那么页面上就要有两个name为username和password的表单元素,表单元素的值将赋给username和password。


      (2) 方式二:定义实体类型的入参

    @RequestMapping("/login.do")
    public String login(User user) { // 需要先定义User实体类
        System.out.println("username:" + user.getUsername());
        System.out.println("password:" + user.getPassword());
        return "success";
    }

      如果定义了一个User实体类,则入参可以是实体类型。页面代码不变,仍有两个名为username和password的表单元素。


      (3) 方式三:使用request接收
    @RequestMapping("/login.do")
    public String login(HttpServletRequest request) {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        return "success";
    }
      可以将入参定义为HttpServletRequest类型,此时request变量的用法与JSP的内置对象request一致。

      控制器方法的入参非常灵活,你还可以在控制器方法中使用如下参数:

      × HttpServletRequest:请求对象,相当于JSP中的request对象
      × HttpServletResponse:响应对象,相当于JSP中的response对象
      × HttpSession:会话对象,相当于JSP中的session对象


      2、从控制器向页面传值

      可以在控制器方法的入参中添加Map类型的参数或Model类型的参数,以达到向页面传值的目的:

    @RequestMapping("/hello.do")
    public String hello(Map<String,Object> map) {
        map.put("hello", "world"); // 页面使用${hello}取出
        return "hello";
    }

    @RequestMapping("/hello.do")
    public String hello(Model model) {
        model.addAttribute(“hello", "world"); // 页面使用${hello}取出
        return "hello";
    }

      Map(映射)是传统的Java集合,代表键值对,使用put方法存值。Model是SpringMVC框架的东西,使用其addAttribute(添加属性)方法添加一个属性。

      用起来差不多。


      在JSP页面上可以使用EL表达式取得值。


    展开全文
  • SSM框架实战系列之五_Maven项目的目录结构

      SSM框架实战系列之五_Maven项目的目录结构


      Maven项目有一定的目录结构要求,熟悉了它的目录结构,才能更好地利用Maven进行开发。


      下面这张图是一个完整的使用了SSM框架的Maven项目的目录结构:



      可以看到Maven项目的目录结构如下:

      1. 项目的根目录下有一个pom.xml文件,它是Maven项目的核心管理文件。

      此外,根目录下还有src和target两个目录,src目录用于存放源代码,target目录用于存放自动生成的目标代码。


      2. src目录下有main和test两个目录,main目录存放主程序,test目录存放测试代码。


      3. main目录下有java、resources、webapp三个目录,java目录存放java类,resources目录存放资源,如配置文件等,webapp目录存放网站相关的资源,如jsp页面、js、图片、css样式表等。

      main目录就是今后的主工作目录了;可以在java目录下创建包,我们写的java代码都放在这个目录下;resources目录我们主要用来存放配置文件;webapp目录通常包含js、images、css等目录。

      在这个案例中,我们为了jsp页面的安全,将jsp页面放在WEB-INF目录中,因为WEB-INF目录是受保护的目录,浏览器不能直接访问WEB-INF目录中的jsp页面。

    展开全文
  • SSM框架实战系列之四_第一个Maven项目
  • SSM框架实战系列之一_项目简介及所需软件
  • SSM框架实战系列之八_注解
  • SSM框架实战系列之十一_MyBatis框架之DAO代码
  • SSM框架实战系列之十三_H-ui框架之一

    万次阅读 2017-12-11 09:12:31
    SSM框架实战系列之十三_H-ui框架之一
  • 文章目录前言一、准备环境二、实现未完成的功能1.项目首页展示2....本文主要是在开源广场上看到的一个简单的SSM框架项目,本次主要是对其中一些未完成的功能的重新构建和优化一些基本功能,关于源代码可以参考...
  • SSM框架实战系列之二_Maven之一
  • SSM框架实战系列之三_Maven之二
  • SSM框架实战系列之六_基于Maven的Web项目的运行与调试
  • 今天学习使用maven搭建ssm框架,一边学习一边搭建,网络上也有很多搭建ssm框架的教程,大家都可以学习下的。1.首先构建本地开发环境,即Java的环境变量和maven的环境变量。在图中可以看到我设置了Java的环境变量 ...
  • 房屋租赁系统,基于Spring5.x的实战项目。 特征 基本:实现不同用户之间的收藏夹,与房东沟通 多用户:普通用户与管理员各自都能发布的信息 开发环境:前端Layui ,从而发布Spring SpringMVC MyBatis ··· 环境 ...
  • 项目预览: ... 本次的开发使用ssm框架作为后端程序编写,前端使用layui框架作为页面显示。 本次使用的开发工具包括:IDEA 2020 + MySQL 8.x(云数据库)。 使用的开发版 本:JDK 11(oracle.c
  • 项目源于上的一个课程,使用SSM框架实现高并发秒杀系统。 涉及到的技术有:Maven、SSM、mysql、RESTful、tomcat 为什么选择SSM框架: 框架易于使用和轻量级 低代码侵入性 成熟的社区和用户群 为什么选择秒杀类业务...
  • log4j.appender.File=org.apache.log4j.RollingFileAppender #指定输出目录 这里会放在tomcat之下 log4j.appender.File.File=D:/log.log #log4j.appender.File.File=logs/ssm.log #定义文件最大大小 log4j.appender....
  • 项目结构 搭建步骤 创建数据库、数据表 新建Maven项目 打开IDEA,点击左上角File,选择New->Project 输入GroupId和ArtifactId 指定Maven位置 指定项目名称和地址 点击完成后,按照项目结构创建文件夹 po...
  • 答:在server的tomcat vx.x打开server.xml,修改导入项目的相关配置 问题二:导入外部文件,之后删除,报错:地址8080已被jvm_bind占用 答:以下操作以此按顺序尝试:杀死占用端口的进程。关闭所有与jav...
  • 使用SSM框架开发企业级应用,很好的项目实战学习资料,超市订单管理系统 运用Spring,SpringMVC,Mybatis三大框架开发

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,930
精华内容 2,772
关键字:

ssm框架实战项目