一、基础环境(eclipse+tomcat+jdk+maven)
1.安装jdk:
下载并安装jdk,(过程比较简单就略过了)。
配置环境变量:按照java 默认安装路径需要配置为:
JAVA_HOME: C:\Program Files\Java\jdk1.6.0_07 (注意JAVA_HOME 路径后面不能有分号。)
path:%JAVA_HOME%\bin;
classpath: %JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
在控制台下输入javac 有结果就表示安装成功了。
2.安装eclipse:
此次采用的是eclipse 4.2,代号Juno。(免安装版,其他版本慎用,测试过helios版本的,照着这个文档配置会有错误)。
只要解压到指定目录即可。
3.安装tomcat:
先安装插件:下载地址:http://www.eclipsetotale.com/tomcatPlugin.html#A3。我用的是tomcatPluginV33.zip。直接把插件解压放到eclipse 安装目录-plugins 目录下。
再把tomcat文件放到c 盘根目录(自选)。
4.关联
eclipse 关联jdk、tomcat:
在preferences-java-installed jres 中add- 在jre home 中选择jdk 安装目录。(特别注意:不是jre 文件,是jdk. 如果原来是jre 要换成jdk,如下图)
在eclipse的preferences-server-runtimeenvironmen 中,add-选择与之相关版本的tomcat(这里选择7.0),browse-选择tomcat 根目录,jre 选择安装过的jre。
再在tomcat选项选择你安装的tomcat版本,选择tomcat根目录,ok。浏览器中输入:http://localhost:8080/。就可以检查是否成功安装了tomcat。
5.安装maven:
先安装插件:在eclipse的marcketplace输入maven查找,选择maven integration foreclipse,按照向导安装,重启eclipse。在你的新建项目以及prefrences 就有maven这一项了。
再把maven 文件解压到c 盘根目录(自选)。(maven 文件请自行到网站下载,链接:http://www.apache.org/dyn/closer.cgi/maven/maven-3/3.0.4/binaries/apachemaven-3.0.4-bin.zip)
最后关联操作:在preferences的maven -user settings 中选择maven文件目录目录—conf 文件-- settings.xml。ok.
二:使用并配置环境
1.新建maven项目:
File-new-other-maven-maven project---直接下一步--在filte 中输入webapp(这里代表建立web 项目):选择第二个,如图:
下一步后。如下图:
Group ID 一般写大项目名称。Artifact ID 是子项目名称。(我这里分别写IFLYTEK,sms),点击finish。Maven 的web 项目就建好了。
创建好的maven 项目:
2.构建Maven常规目录结构。
在Maven 管理的项目中,文件目录一般都很固定,我们下面就建立一般的webmaven 项
目目录结构。构建并运行一个hello 的示例demo。
(1)建立source folder 文件夹:
到Workspace-项目名-src-main 下新建一个文件夹:java。同样的在上级目录src 目录中新建test 文件夹,在test 下新建文件夹:java。在eclipse右击刷新,目录就出来了。(如果直接新建source folder 会出现问题)。
(2)新建spring 配置文件:(mvc-dispatcher-servlet.xml)
在项目树中找到src-main-webapp-WEB-INF,在这个目录中新建一个文件夹命名为:
pages,用于以后存放jsp 文件(这样会让项目看起来更清晰一点)。同时在WEB-INF目
录中新建文件,命名为:mvc-dispatcher-servlet.xml
编辑mvc-dispatcher-servlet.xml文件:
<beans xmlns ="http://www.springframework.org/schema/beans"
xmlns:context ="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<context:component-scanbase-package="com"/>
<mvc:annotation-driven/>
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/pages/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
</beans>
其中<context:component-scanbase-package="com"/>代表编译时读取的包(在classpath下新建的包,在文档下几页中我是新建com.sms.controller所以写这个,扫描com目录下的所有文件),<mvc:annotation-driven/>代表注释驱动,<value>/WEB-INF/pages/</value>代表前端控制器寻找jsp 的路径。
(3)编辑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/j2ee" xmlns:javaee="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/j2ee http://java.sun.com/xml/ns/j2ee/webapp_
2_4.xsd" id="WebApp_ID" version="2.4">
<display-name>Spring Web MVC Application</display-name>
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
其中重要的配置是<context-param>中的<param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>,它指明了spring 配置文件的目录。(当然也可以用classpath:xxx的方式进行配置, 多个配置文件也可以用“,”隔开)
<servlet-mapping>中的<url-pattern>/</url-pattern>,它代表前端拦截器将拦截所有文件。
这里要特别注意的是<servlet-name>:mvc-dispatcher,因为要对应<param-value>的/WEB-INF/mvc-dispatcher-servlet.xml。比如,如果<servlet-name>为mydispatcher,那么对应的<param-value>必须为mydispatcher- servlet.xml。
(4)修改pom.xml(注意是:修改):
在原有pox.xml的基础上,把<dependencies></dependencies>之间的修改为:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
再在<finalName>的下一行添加tomcat插件:即,添加如下:
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
</plugin>
</plugins>
修改之后我的就变成了以下这样:
<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/mavenv4_
0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>IFLYTEK</groupId>
<artifactId>sms</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>sms Maven Webapp</name>
<url>http://maven.apache.org</ url>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
</dependencies>
<build>
<finalName>sms</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
</plugin>
</plugins>
</build>
</project>
maven 通过pom.xml 管理项目依赖的jar 包,通过groupID、artifactId 以及版本号可以唯一确定一个jar 包。这样可以防止老式Web 项目中WEB-INF/lib 下jar 包不一致的问题。
并且maven 还会自动下载添加进的jar 包所依赖的jar 包。
至此,项目文件结构如图:
(5)Controller 类:
在src/main/java 下新建包:com.sms.controller,在这个包中新建controller
类:HelloController。编辑如下
packagecom.sms.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public classHelloController{
@RequestMapping("/hello.do")
public Stringindex_jsp(ModelMap model){
System.out.println("hello");
model.addAttribute("yan", "yan你好");
return "hello";
}
}
(6)在pages 目录下新建文件hello.jsp,编辑如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %>
<%
String path = request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'Login.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel=" stylesheet"type="text/css" href="styles.css">
-->
</head>
<body>
${yan}</br>
</body>
</html>
在run as- maven build—双击新建一个maven build—在Goals 中输入package tomcat:redeploy(关键)(如下图):
右击工程,Run as—maven clean
Run as—maven install,就会去自动下载包了。(如果下载失败,就去清理用户目录-用户-.m2- repository下的包。)
这时可能会报“Please ensure you are using JDK 1.4 or above and nota JRE (the com.sun.tools.javac.Main class is required)”的错误,这是因为环境只是设置jre而没设置成jdk的缘故。在window—preferences—java—installedjres—选择自己jdk目录,即编辑成jdk:如下图:
再maveninstall一下,下载包,就下载成功了。
点击菜单栏上的绿色大按钮run或者点击小虫子(debug),再稍等片刻,等待包的下载。
运行后,你会发现有错误:Cannot invoke Tomcat manager: Server returnedHTTP response code: 403 forURL: http://localhost:8080/manager/deploy?。这是因为没有权限的问题。没事。
解决方案(两步):
1:选择插件tomcat-maven-plugin,即:在pom.xml 中,添加配置权限代码。
在<artifactId>tomcat-maven-plugin</artifactId>下添加:
<configuration>
<url>http://localhost:8080/manager/html</url>
<username>admin</username>
<password>123456</password>
<path>/sms</path>
</configuration>
(这里path,所以打包后,会生成sms包到tomcat的webapp,了解就好)
2:修改tomcat 配置文件。
tomcat 主文件目录下的conf-tomcat-users.xml文件添加。(这里是:C:\apache tomcat-7.0.29\conf\conf-tomcat-users.xml)
在文件中的<tomcat-users>下添加:
<role rolename="manager-gui"/>
<user username="admin" password="123456"roles="manager-gui" />关掉tomcat,重启tomcat,再试试。点击菜单栏上的绿色大按钮run或者点击小虫子(debug),Ok。
到现在为止,文件的目录结构如图所示:
成功build 之后,在浏览器输入:http://localhost:8080/sms/hello.do。
前面的http://localhost:8080/是固定的,sms代表打包的报名,在pom.xml中的<path>设置的,我是sms,所以输入sms,只要对应就可以。最后的hello.do,是控制器接受匹配的。运行后,就出现了我们的结果:
我可以用了,你也可以吧。
最后可能用的时候出错的,在运行前必须先启动tomcat。