最近开始开发一个点餐系统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;
填写项目名以及包名,一直next直到创建项目;
修改项目结构为标准MVC结构:
使用Maven管理添加依赖包:在自动生成的pom.xml中配置一系列jar包
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.11version>
<scope>testscope>
dependency>
<dependency>
<groupId>log4jgroupId>
<artifactId>log4jartifactId>
<version>1.2.12version>
dependency>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
<version>3.1.0version>
dependency>
<dependency>
<groupId>javax.servlet.jspgroupId>
<artifactId>jsp-apiartifactId>
<version>2.2version>
dependency>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>jstlartifactId>
<version>1.2version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.33version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webartifactId>
<version>4.3.1.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
<version>4.3.1.RELEASEversion>
dependency>
<dependency>
<groupId>org.apache.commonsgroupId>
<artifactId>commons-lang3artifactId>
<version>3.4version>
dependency>
<dependency>
<groupId>commons-fileuploadgroupId>
<artifactId>commons-fileuploadartifactId>
<version>1.3.1version>
dependency>
dependencies>
WEB-INF目录下的web.xml文件是javaWeb框架的核心文件。启动一个web项目时,web容器会读取这个配置文件,用于初始化项目的一系列配置信息。现在来详细分析一下web.xml的具体内容:
<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-file-list>
<welcome-file>index.htmlwelcome-file>
welcome-file-list>
<servlet>
<servlet-name>springMVCservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:spring/applicationContext*.xmlparam-value>
init-param>
<load-on-startup>1load-on-startup>
<async-supported>trueasync-supported>
servlet>
<servlet-mapping>
<servlet-name>springMVCservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
<display-name>Archetype Created Web Applicationdisplay-name>
web-app>
访问一个网站时,默认看到的第一个页面就叫欢迎页,一般情况下是由首页来充当欢迎页的。一般情况下,我们会在web.xml中指定欢迎页。
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的映射信息,它也有一个servlet-name,填写对应的Servlet名,也就是我们上面配置的Servlet名字。url-pattern是指定当前servlet的拦截范围,“/”表示从根路径就拦截所有请求,交给对应servlet处理。
web.xml当然还有许多其它配置属性,这里我们暂时不需要添加,当有需要用上的时候再补充即可。
applicationContext.xml是SpringMVC的核心配置文件。
<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">
<context:annotation-config/>
<context:component-scan base-package="com.example.controller">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
context:component-scan>
<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/"/>
<mvc:annotation-driven/>
<bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"/>
<property name="suffix" value=".html"/>
<property name="contentType" value="text/html">property>
bean>
<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项目配置就完成了,可以开始动手实现具体业务逻辑了。