基于Maven+SpringMVC的javaWeb项目配置详解

最近开始开发一个点餐系统Web应用,后端开发选用的是javaWeb的SSM开发框架,即Spring+SpringMVC+MyBatis,同时使用Maven作为包管理工具。框架并不熟悉,所以走的是一边学习一边开发的路线,故阶段性总结一下学习成果。

开发软件以及工具

(1)JDK:JDK8
(2)IDE:Intellij IDEA Professional
(3)Web服务器:Tomcat 8.5
(4)Spring框架:SpringFramework-4.3.1.RELEASE

建立项目

Idea新建项目,选择Maven作为基本项目类型,导入JDK,然后勾选原型模板,选择webapp,点击next;
ksiYa.md.png

填写项目名以及包名,一直next直到创建项目;

修改项目结构为标准MVC结构:
ksntN.png

使用Maven管理添加依赖包:在自动生成的pom.xml中配置一系列jar包

<dependencies>
      <!-- Junit -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

      <!-- log4j -->
      <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.12</version>
      </dependency>

      <!--j2ee相关包 servlet、jsp、jstl-->
      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
      </dependency>
      <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.2</version>
      </dependency>
      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
      </dependency>

      <!-- Mysql -->
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.33</version>
      </dependency>

      <!-- Spring -->
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
          <version>4.3.1.RELEASE</version>
      </dependency>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>4.3.1.RELEASE</version>
      </dependency>

      <!--其他需要的包-->
      <dependency>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-lang3</artifactId>
          <version>3.4</version>
      </dependency>
      <dependency>
          <groupId>commons-fileupload</groupId>
          <artifactId>commons-fileupload</artifactId>
          <version>1.3.1</version>
      </dependency>

  </dependencies>

配置web.xml文件

WEB-INF目录下的web.xml文件是javaWeb框架的核心文件。启动一个web项目时,web容器会读取这个配置文件,用于初始化项目的一系列配置信息。现在来详细分析一下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">
    <!--welcome pages-->
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

    <!-- 配置Spring Dispatcher Servlet-->
    <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:spring/applicationContext*.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
        <async-supported>true</async-supported>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>


    <display-name>Archetype Created Web Application</display-name>
</web-app>

welcome-file-list

访问一个网站时,默认看到的第一个页面就叫欢迎页,一般情况下是由首页来充当欢迎页的。一般情况下,我们会在web.xml中指定欢迎页。

servlet

servlet是服务端程序,负责处理对应的请求。

servlet-name表示servlet的名称,可以随意指定,但要有一定的意义,一般取为类的名称。下面的servlet-class是类的全路径,package+calssname,这里使用的是spring框架的默认Servlet。注意一定要写全路径。

init-param指定了一个属性contextConfigLocation,这里的属性值是当前Servlet的初始化配置文件路径。Servlet第一次启动时,就会解析此文件来配置属性。

load-on-startup指定Servlet的启动时间:不配置此属性则默认为直到Servlet第一次被请求时才启动;指定了属性,则Servlet会在框架开始运行时同时启动。

async-support:异步处理支持,这是Servlet3.0才开始有的新特性。设置此属性后,Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该 Servlet 线程。在接收到请求之后,Servlet 线程可以将耗时的操作委派给另一个线程来完成,自己在不生成响应的情况下返回至容器。针对业务处理较耗时的情况,这将大大减少服务器资源的占用,并且提高并发处理速度。

servlet-Mapping

它是servlet的映射信息,它也有一个servlet-name,填写对应的Servlet名,也就是我们上面配置的Servlet名字。url-pattern是指定当前servlet的拦截范围,“/”表示从根路径就拦截所有请求,交给对应servlet处理。

web.xml当然还有许多其它配置属性,这里我们暂时不需要添加,当有需要用上的时候再补充即可。

配置applicationContext.xml文件

applicationContext.xml是SpringMVC的核心配置文件。

<?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://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
                         http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.2.xsd
                        http://www.springframework.org/schema/mvc
                        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!--启用spring的一些annotation -->
    <context:annotation-config/>

    <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
    <context:component-scan base-package="com.example.controller">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <!--HandlerMapping 无需配置,springMvc可以默认启动-->

    <!--但是项目部署到linux下发现WEB-INF的静态资源会出现无法解析的情况,但是本地tomcat访问正常,因此建议还是直接把静态资源放在webapp的statics下,映射配置如下-->
    <mvc:resources mapping="/css/**" location="/statics/css/"/>
    <mvc:resources mapping="/js/**" location="/statics/js/"/>
    <mvc:resources mapping="/image/**" location="/statics/image/"/>
    <mvc:resources mapping="/html/**" location="/statics/html/"/>

    <!-- 配置注解驱动 可以将request参数与绑定到controller参数上 -->
    <mvc:annotation-driven/>


    <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀(如果最后一个还是表示文件夹,则最后的斜杠不要漏了) -->
    <!-- 默认的视图解析器 在上边的解析错误时使用 (默认使用html)- -->

    <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>-->
        <property name="prefix" value="/"/>    <!--设置HTML文件的目录位置-->
        <property name="suffix" value=".html"/>
        <property name="contentType" value="text/html"></property>
    </bean>


    <!-- springmvc文件上传需要配置的节点-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="20971500"/>
        <property name="defaultEncoding" value="UTF-8"/>
        <property name="resolveLazily" value="true"/>
    </bean>


</beans>

配置文件由许多bean属性组成;其中比较重要的是注解扫描、静态资源路径、视图解析器配置等。

到此为止,基本的javaWeb项目配置就完成了,可以开始动手实现具体业务逻辑了。

阅读更多

没有更多推荐了,返回首页