[Java,MVC] Eclipse下搭建Spring MVC
转自:http://blog.csdn.net/blue_jjw/article/details/8752466
一、新建Dynamic Web Project
一个web工程最基本的,只看3个地方,在根目录下(这个目录一般习惯叫WebContent或WebRoot)有 :
1.WebRoot/WEB-INF/web.xml 启动引导文件
2.WebRoot/WEB-INF/classes/ 编译的class文件,会根据package建立子路径
3.WebRoot/WEB-INF/lib/ jar包 (注意,lib下不可以再建子目录)
这就是一般比较常用的web工程的结构. 有了这三个结构, 然后把WebRoot的绝对路径告诉tomcat这样的web容器,就可以启动了(当然里面要有相应的东西才行)。
因此虽然我们一般项目的结构是: projectname/src, projectname/WebRoot 但实际上src里的.java源代码是tomcat完全不关心的,它的解析是从WebRoot开始的, .class才是它认识的.
参考:搭建简单web项目: spring3.0基础配置(1)
二、添加Spring的依赖包

其中commons-logging-1.1.1.jar是spring日志依赖jar包,jstl-api-1.2.jar与jstl-impl-1.2.jar是Oracle官方的JSTL接口与实现,如果选Apche的也可以。
在打war包时,将这些依赖包拷贝到WebContent/WEB-INF/lib下:

三、配置web.xml
WebContent/WEB-INF/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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>ContentManagementSystem</display-name>
<!-- 添加spring3控制器, DispatcherServletDispatcherServlet是Spring MVC 的入口
所有进入Spring Web的 Request都经过 DispatcherServlet
-->
<servlet>
<servlet-name>LoadBalanceAlg</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 配置spring3的映射规则 -->
<servlet-mapping>
<servlet-name>LoadBalanceAlg</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<!-- 配置log4j -->
<!-- spring log4j configuration -->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>LBAProject</param-value>
</context-param>
<!-- 由Spring加载的log4j配置文件的位置 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.conf</param-value>
</context-param>
<!-- Spring刷新log4j配置文件的间隔,单位为millisecond -->
<context-param>
<param-name>log4jRefreshIntercal</param-name>
<param-value>60000</param-value>
</context-param>
<!-- Web项目Spring加载log4j的监听 -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<!-- 默认跳转到根目录下的页面 -->
<welcome-file-list>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
<!-- session timeout setup, 10 mins -->
<session-config>
<session-timeout>10</session-timeout>
</session-config>
</web-app>
加载DispatcherServlet时Spring会尝试读取配置文件,默认的配置文件位于web.xml相同的路径下,文件名与注册的Servlet名有关:Servlet注册名跟上"-servlet.xml"。
例如:上面的Servlet注册名为 LoadBalanceAlg,那么默认的配置文件名为:LoadBalanceAlg-servlet.xml。
当然 也可以明确配置文件,需要在注册servlet时设定初始化参数 :
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
<!-- 配置文件名 -->
</param-value>
</init-param>
四、Spring配置文件
文件名需与web.xml中的<servlet-name></servlet-name>中的名字一致
<?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"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd"
> <!-- 开启spring MVC注解功能,完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
<!-- 默认扫描的包路径 -->
<context:component-scan base-package="cn.ac.dsp.controller"/>
<context:component-scan base-package="cn.ac.dsp.service"/> <!-- 模型视图名称的解析,即模型前后添加前后缀 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property>
<property name="prefix"><value>/WEB-INF/jsp/</value></property>
<property name="suffix"><value>.jsp</value></property>
</bean>
</beans>
五、log4j的配置
第一步:导入jar包
第二步:在web.xml中的配置:
<!-- 配置log4j -->
<!-- spring log4j configuration -->
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>LBAProject</param-value>
</context-param>
<!-- 由Spring加载的log4j配置文件的位置 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.conf</param-value>
</context-param>
<!-- Spring刷新log4j配置文件的间隔,单位为millisecond -->
<context-param>
<param-name>log4jRefreshIntercal</param-name>
<param-value>60000</param-value>
</context-param>
<!-- Web项目Spring加载log4j的监听 -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
其中webAppRootKey表示Web项目根目录的绝对路径,如果不配置webAppRootKey参数,则webAppRootKey 就是缺省的"webapp.root",最好设置,以免项目之间的名称冲突。然后,log4j配置文件中就可以用${LBAProject}表示Web项目目录的绝对路径,如果不设置webAppRootKey,可用${webapp.root}表示Web项目目录的绝对路径。
注意:
1、log4j的配置文件的文件名不能为"log4j.properties",而要改为别的名字,要不然报异常:
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: \WEB-INF\log\abc.log (系统找不到指定的路径。)
原因是log4j.properties与tomcat的log4j重名,改个名字就好了.因为在tomcat启动是默认去找log4j.properties,但此时Listener还没有起来,tomcat就要往\WEB-INF\log\abc.log 写日志就找不到了.
2、${webapp.root}表示工程目录,可以把它加入到log4j配置文件中输入路径的前面,如:
log4j.appender.appender_demo.File = ${webapp.root}/WEB-INF/log/abc.log
3.该配置文件一定要放在src目录下,使其自动生成到/WEB-INF/classes/目录下.否则,spring报异常:
log4j:WARN No appenders could be found for logger (...).
log4j:WARN Please initialize the log4j system properly.
第三步:在src下创建配置文件log4j.conf
log4j.conf:
log4j.rootLogger = INFO, stdout, A1, A2 ##log message to console
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %5p [%t] %c:%l - %m%n ##log message to file
log4j.appender.A1.Threshold = INFO
log4j.appender.A1 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File = ${LBAProject}/WEB-INF/log/LBA-info.log
log4j.appender.A1.DatePattern = '-'yyyy-MM-dd'.log'
log4j.appender.A1.layout = org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %5p [%t] %c:%l - %m%n ##log warn/error to file
log4j.appender.A2.Threshold = WARN
log4j.appender.A2 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.File = ${LBAProject}/WEB-INF/log/LBA-error.log
log4j.appender.A2.DatePattern = '-'yyyy-MM-dd'.log'
log4j.appender.A2.layout = org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %5p [%t] %c:%l - %m%n
参考:log4j注意的问题
在Spring的项目中配置Log4j存放日志文件到指定目录下
六、前后台代码
首先,在WEB-INF/jsp下新建一个jsp包,与上文中prefix的值相对应(LoadBalanceAlg-servlet.xml中配置了视图解析模块
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>DB Operation</title>
</head>
<body>
DB Operation Success!
</body>
</html>
在src下编写后台代码(在LoadBalanceAlg-servlet.xml配置的包中),如DBOperation.java:
package cn.ac.dsp.controller; import java.util.List; import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import cn.ac.dsp.dao.ResourceDAO;
import cn.ac.dsp.entity.ResourceEntity; @Controller
public class DBOperation { private final static Logger log = Logger.getLogger(DBOperation.class); @RequestMapping("/dbOperation.htm")
public String start(){
log.info("request for dbOperation");
List<ResourceEntity> resDAOList = ResourceDAO.getInstance().selectAll();
for(ResourceEntity re : resDAOList){
System.out.println(re.hashCode());
}
return "dbOperation";
}
/**
* @param args
*/
public static void main(String[] args) {
DBOperation d = new DBOperation();
d.start();
}
}
七、测试
将Eclipse中的项目打成war包(注意要将依赖包拷贝到WEB-INF/lib下),放到tomcat的webapps下,启动tomcat。
浏览器中打开页面如下:
[Java,MVC] Eclipse下搭建Spring MVC的更多相关文章
- Eclipse下创建Spring MVC web程序--非maven版
首先, 安装eclipse和tomcat, 这里我下载的是tomcat9.0版本64位免安装的:地址https://tomcat.apache.org/download-90.cgi 免安装的如何启动 ...
- Eclipse下创建Spring MVC web程序--maven版
1. 创建一个maven工程: File->New->Other... 2. 创建完成后的结构如下: 3. 配置pom.xml文件,添加spring-webmvc依赖项 <pro ...
- 从零开始学 Java - 搭建 Spring MVC 框架
没有什么比一个时代的没落更令人伤感的了 整个社会和人都在追求创新.进步.成长,没有人愿意停步不前,一个个老事物慢慢从我们生活中消失掉真的令人那么伤感么?或者说被取代?我想有些是的,但有些东西其实并不是 ...
- 零基础搭建 spring mvc 4 项目(本文基于 Servlet 3.0)
作者各必备工具的版本如下: Tomcat:apache-tomcat-7.0.63 (下载链接) Java EE - Eclipse:Luna Service Release 1 v4.4.1 (下载 ...
- Spring MVC篇一、搭建Spring MVC框架
本项目旨在搭建一个简单的Spring MVC框架,了解Spring MVC的基础配置等内容. 一.项目结构 本项目使用idea intellij创建,配合maven管理.整体的目录结构如图: 其中ja ...
- 十七、IntelliJ IDEA 中的 Maven 项目初体验及搭建 Spring MVC 框架
我们已经将 IntelliJ IDEA 中的 Maven 项目的框架搭建完成.接着上文,在本文中,我们更近一步,利用 Tomcat 运行我们的 Web 项目. 如上图所示,我们进一步扩展了项目的结构, ...
- 一、Spring MVC起步——IntelliJ IDEA 搭建Spring MVC环境(手把手搭建)
本机环境: JDK 1.7 IntelliJ IDEA 2017.2 1.新建项目 Create New Project 选择Spring MVC 填写项目名和项目存放位置 然后点击Fin ...
- MAC OS X El CAPITAN 搭建SPRING MVC (1)- 目录、包名、创建web.xml
一. 下载STS(Spring Tool Suite) 官方地址:http://spring.io/tools/sts 下载spring tool suite for mac 最新版本.这个IDE是很 ...
- 【Java Web开发学习】Spring MVC 使用HTTP信息转换器
[Java Web开发学习]Spring MVC 使用HTTP信息转换器 转载:https://www.cnblogs.com/yangchongxing/p/10186429.html @Respo ...
随机推荐
- GridView九宫图
了解下 <!--android:numColumns="auto_fit"--列数设置为自动: android:columnWidth="90dp"--每 ...
- ASP.NET验证控件RegularExpressionValidator的常见表达式
可以输入非0和0开头的数字:“^(0*[1-9][0-9]*|[1-9][0-9]*)$”只能输入数字:“^[0-9]*$”只能输入n位的数字:“^\d{n}$”只能输入至少n位数字:“^\d{n,} ...
- jquery获取kindEditor值
KE.show({ id: 'txtMessage', imageUploadJson: '/ajax/Manager/keupload.ashx?ptyp ...
- UI:关于RGB与16进制颜色值的转换
IOS基本图形绘制 参考 取色对照表 参照 页面背景改为 #5CACEE 的颜色.有两个方法 方法一: 加两个宏 #define UIColorFromHexWithAlpha(hexValu ...
- OC:习题来自平时搜索
== 第一部分 == 类变量的@protected ,@private,@public,@package,声明各有什么含义?写一个标准宏MIN,这个宏输入两个参数并返回较小的一个?面向对象的三大特征 ...
- Kafka架构设计:分布式发布订阅消息系统
[http://www.oschina.net/translate/kafka-design](较长:很详细的讲解) [我们为什么要搭建该系统]用作LinkedIn的活动流(activity stre ...
- 关于App.config配置文件
今天在做复习的时候,突然发现自己无法读取配置文件中的数据库连接字符串,而且检查了半天也没找出原因,最后求助万能的度娘才得以解决—— 1.App.config配置文件在项目中添加后不要修改名称,否则会出 ...
- VTK序列图像的读取[转][改]
医学图像处理的应用程序中,经常会碰到读取一个序列图像的操作.比如CT.MR等所成的图像都是一个切面一个切面地存储的,医学图像处理程序要处理这些数据,第一步当然是把这些数据从磁盘等外部存储介质中导入内存 ...
- Hibernate+Struts2完成修改数据功能
先看修改之前的数据: 下面是具体代码 view层: 顺着链接,继续: 继续: 继续 控制层和逻辑层: action: //修改 public String updateperson() { Strin ...
- NameThreadForDebugging -- Naming threads for debugging
http://forums.devart.com/viewtopic.php?t=16907 type tagTHREADNAME_INFO = record dwType : LongWord; / ...