SpringMVC:系统认识一下maven
网上看了很多springMVC helloworld的教程,非常不满意;首先,maven构建的就很少,再者,绝大部分都是断章取义,让人不明就里。其中有几篇讲的好的,我摘录了一些,自己试着构建了一下项目,发现里面还是有很多需要注意的地方,就记录在这里吧。
我是一个喜欢刨根问底的人,所以我打算从手动maven搭建项目开始,然后导入IDEA,一直到配置并且运行起Helloworld
1 . 安装maven,并配置环境变量
这个就不说了,网上一搜一大把。使用mvn -v检查maven是否安装
安装完成后建议修改一下仓库为国内,要不然速度就呵呵了,这里推荐一个速度杠杠的国内镜像(阿里云),看见这篇文章你就偷着乐吧,不知道哪天就不能用了
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
2 . 使用maven archetype 构建项目脚手架
//随便找个文件夹运行以下命令
mvn archetype:generate -DarchetypeCatalog=internal
mvn archetype:generate根据项目脚手架建立相对应的java项目,运行完这个命令以后将搭建起springMVC项目雏形。-DarchetypeCatalog=internal这个说一下,还是那句话,谢谢伟大的墙,谢谢方校长,让我们中国程序员获得了这么多黑技能...不加这个的话,你的mvn必然会卡死在Generating project in Interactive mode...这一步,以下是完整解释:
archetype是一个插件名称,generate是一个目标名称.mvn archetype:generate 命令会从远程拉取所有的原型(大约1575个)供你选择,使用-DarchetypeArtifavtId=[archetype]参数可以指定archetype类型。如果卡在Generating project in Interactive mode这一步,是因为maven在从远程拉取信息,使用 -DarchetypeCatalog=internal 参数让它不要从远程服务器上取catalog。 添加这句话之后,就不会卡死了.就会进入交互阶段,一步步询问.每一步如果有默认选项直接按enter即可。
然后根据命令行提示填写groupId,artifactId,version,package。这样在当前目录下就生成了一个项目。
另:附上一键生成项目命令:
mvn archetype:generate -DgroupId=com.mycompany.helloworld -DartifactId=helloworld -Dpackage=com.mycompany.helloworld -Dversion=1.0-SNAPSHOT -DarchetypeCatalog=internal
不管怎么样,我们最终生成了标准的基于maven的Springmvc项目。其实也可以不用archetype,我们自己建立文件夹遵守maven规定即可:
//建立工程目录
src/main/java/com/monodev/mvcstudy
//建立test目录
src/test/java/com/monodev/mvcstudy
//建立resources文件夹
src/main/resources
//建立webapp目录和配置文件(名字可随意)
src/main/webapp/WEB-INF/web.xml
src/main/webapp/index.jsp
2. 添加pom依赖
打开pom.xml,添加:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.2.3.RELEASE</version>
</dependency>
是的,你没有看错,就一个依赖。
这个地方我也绕了很久,手动加各种依赖,然后各种编译期出错。。。各种头大。最后上了spring官网,发现就这一个依赖就够了。。。
另外,在IDEA中有一个炒鸡好用的maven面板,我们稍后说
3.maven安装依赖
项目根目录运行mvn clean installmaven会自动下载所有依赖并编译项目,完成后会在根目录下生成target文件夹。
4. 是时候导入IDEA了
其实个人觉得idea好用是真的,慢也是真的。。。我打算研究下用sublime3写java,试试行不行,idea太笨重了。什么?为什么不用eclipse?我只能说颜值太差好么?一个一看就像上个世纪的IDE,怎么让人提起使用他的兴趣...
打开idea,import项目,没啥好说的,导入以后要做这几件事:
- 右键单击src文件夹,Mark Directory as->Source Root,否则写代码时找不到引用
- 右键单击resources文件夹,Mark Directory as->Resource Root
- 右键工程设置SDK为你安装的java sdk
- 配置tom猫:
运行配置这里选择打开面板,点+号,从左侧列表选择Tomcat server - local
然后选择你的tomcat安装位置,设置如下:
这里没有tomcat server?
File-settings-Plugins,搜索tomcat,并启用:
5. 配置
到了这里,你以为就能开始写controller了?呵呵,太naive,这是java,没那么容易的。
首先,在resources下建立config文件夹,下建立spring-mvc-config.xml文件,也就是mvc的配置文件,它长这个熊样:
<?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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--规定组件bean扫描的基础包位置-->
<context:component-scan base-package="com.monodev.mvc.controller"/>
<!-- 静态资源(js、image等)的访问 -->
<mvc:default-servlet-handler/>
<!--启用注解-->
<mvc:annotation-driven/>
<!--ViewResolver 视图解析器-->
<!--用于支持Servlet、JSP视图解析-->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
继续打开WEB-INF下的web.xml文件,添加以下内容:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app version="2.5" 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_2_5.xsd">
<servlet>
<servlet-name>springmvc-app</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--使用刚才的配置文件,classpath就是resources目录-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/spring-mvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup><!--这个不用解释了,数字越小越靠前,DispatcherServlet是SpringMVC的基础,必然是第一个处理的-->
</servlet>
<servlet-mapping>
<servlet-name>springmvc-app</servlet-name>
<url-pattern>/</url-pattern><!--映射根路径-->
</servlet-mapping>
</web-app>
5. helloworld
终于可以写代码了!
终于可以写代码了!
终于可以写代码了!
终于可以写代码了!
终于可以写代码了!
web开发我用过c#的.net,javascript的express,python的flask,现在写java,我感受最深的就是这句话,配置配到死,基本上,你学会了各种配置方法,就学会了spring
以下是我的其他体会:
1 .Spring的精髓不是IoC,也不是AOP,而是xml
2. 我深深的体会到 spring boot是一项伟大的创举,是java世界里的未来之星,将拯救无数java程序员于水火之中!
src下建包、建文件:
@Controller
public class HelloworldController {
@RequestMapping("/index")
public String test(){
return "index";
}
}
返回的是index视图名称,所以根据spring-mvc-config.xml中的配置,在webapp下建立views/jsp目录,并建立index.jsp文件:
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
点击运行,idea将把项目deploy到tomcat容器的ROOT文件夹下,浏览器中运行就可以看到helloworld了。
7. 补充
前面提到idea的maven面板。就在右上角,点击Maven Projects打开
这个工具可以让我们很好的看到依赖的关系,此处就能看到,虽然我们只引了一个spring-webmvc依赖,但其实一环套一环,有很多。
使用spring boot起的项目,这里的依赖多到惊人
总之,这个面板是一个很强大的依赖管理面板
后记:
写了一段时间java,最大的感觉就是像极了八股文。繁文缛节颇多。这样一个helloworld不管用任何其它语言都是分分钟的事,到java这里就难了。
不过java的开源库也是巨量的,这个又是.net没法比的,其实现在docker的出现,java的“一次编写,处处运行”也就不是什么优势了。以后java这门语言的优势恐怕就仅仅剩下轮子的数量了。
SpringMVC:系统认识一下maven的更多相关文章
- Spring+SpringMVC+MyBatis+LogBack+C3P0+Maven+Git小结(转)
摘要 出于兴趣,想要搭建一个自己的小站点,目前正在积极的准备环境,利用Spring+SpringMVC+MyBatis+LogBack+C3P0+Maven+Git,这里总结下最近遇到的一些问题及解决 ...
- 如何在Linuxt系统下运行maven项目
如何在Linuxt系统下运行maven项目 我们知道现在利用MAVEN来管理JAVA项目是非常常见的.比如公司一般都有一个自己的MAVEN仓库,通过MAVEN仓库来解决我们的项目依赖,更加方便的构建项 ...
- 捷易拍与springMVC系统结合
1. 捷易拍高拍仪在jsp页面的调用 使用ActiveX插件的方式处理解决此问题,捷易拍公司提供了支持IE8以上的32位浏览器的插件,安装插件后,我们可以使用Object标签,使用高拍仪 注意: 1. ...
- dubbo+zookeeper+jsp+springmvc+spring+mybatis+mysql+maven完整示例
项目分为三部分,这里分为三个maven项目(基于web,所以最后一个为maven创建的web项目) 1.接口定义以及实体类定义(api+pojo) --- maven创建java项目,打包成jar 2 ...
- maven学习日记(三)-------开发环境搭建(springmvc+hibernate4)各种maven错误汇总
1.maven编码 gbk 的不可映射字符 解决这个问题的思路: 在maven的编译插件中声明正确的字符集编码编码——编译使用的字符集编码与代码文件使用的字符集编码一致!! 安装系统之后,一般中文系统 ...
- spring + springMVC + spring Data + jpa + maven 项目框架搭建
首先看一下项目结构: 所用到的jar(pom.xml): <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x ...
- 搭建SpringMVC+Hibernate4+Spring3+Ajax+Maven项目
首先新建一个Maven项目.百度一下会有非常多实例,这里就不介绍了,直接奔主题. 如题:这里使用的是Hibernate4和Spring3,使用的JPA和Spring注解,然后JDK版本号是1.7 以下 ...
- spring+springmvc+hibernate架构、maven分模块开发样例小项目案例
maven分模块开发样例小项目案例 spring+springmvc+hibernate架构 以用户管理做測试,分dao,sevices,web层,分模块开发測试!因时间关系.仅仅測查询成功.其它的准 ...
- java web课程设计(简单商城的前后端双系统,基于maven三模块开发)
1.系统分析 1.1需求分析 实现一个简单但功能完整的商城项目,从设计到实现,规范化完成该项目,锻炼javaweb项目的编写能力,理解软件工程的软件设计思想 1.2编程技术简介 本次课程主要使用的软件 ...
随机推荐
- 洛谷P3357 最长k可重线段集问题(费用流)
传送门 其实和最长k可重区间集问题差不多诶…… 把这条开线段给压成x轴上的一条线段,然后按上面说的那种方法做即可 然而有一个坑点是线段可以垂直于x轴,然后一压变成一个点,连上正权环,求最长路……然后s ...
- 2. C语言文件操作经典习题
1. 统计英文文本文件中,有多少个大写字母.小写字母.数字.空格.换行以及其他字符. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> ...
- uC/OS-II 一些函数简介
获得更多资料欢迎进入我的网站或者 csdn或者博客园 以前搞硬件的经验,最近突然翻出来了.分享给大家:主要讲解uC/OS-II常用函数:虽说现在转行软件了,但是感觉之前搞硬件的经验还真是很有用对于理解 ...
- Unity---动画系统学习(4)---使用混合树(Blend Tree)来实现走、跑、转弯等的动画切换
1. 介绍 Blend Tree用于多个动画之间的混合,比如走到跑的切换.转弯的切换. 如果用动画学习笔记(3)中的方法,需要新建很多的状态,不仅麻烦,而且切换状态时也很容易不流畅. 而Blend T ...
- HDU - 5997 树状数组+set
和之前一道省选题目很像: (梦幻布丁): 我们维护的时候用树状数组维护,在断电处打上标记: 合并的时候小的合并到大的里面: #include<iostream> #include<c ...
- notepad++配置编译运行java
点击插件->Plugin Manager->show plugin manager : 选择NppExec,选择install,就将这个插件下载下来了. 这个时候会重启notepad++: ...
- JSTL的核心标签
JSTL的核心标签: .if: 语法:<c:if test="" var="" scope=""></c:if> 当 ...
- [转] 最简单实现跨域的方法:使用nginx反向代理
[From] http://blog.jobbole.com/90975/ 什么是跨域 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全 ...
- laravel的一些语法
5.1的一些语法 检索表中的所有行 $users = DB::table('users')->get();因为查询出来的是对象,所以可以直接选择DB::table('users')->ge ...
- 转帖 JS的基础语法
1.变量 1)变量是用来存储信息的容器. 2)在javascript中使用var 运算符(variable 的缩写)加变量名定义的. varx = 10; vary = 10.1; varz = “H ...