SpringMVC in IDEA开发实践
按照上篇装过Tomcat之后。
本机本来装了IDEA和Maven。
参考以下这篇
https://my.oschina.net/gaussik/blog/385697
《使用IntelliJ IDEA开发SpringMVC网站(一)开发环境》
其中初始化项目的时候非常慢,需要参考以下这篇来进行:
http://www.cnblogs.com/beiyeren/p/4566485.html
《maven generating project in batch mode hang》
另外因为maven本来的repository太慢了,所以使用百度内部的repository。在pom.xml最后加的配置如下:
<repositories>
<repository>
<id>nexus-public</id>
<url>http://maven.scm.baidu.com:8081/nexus/content/groups/public</url>
</repository>
<repository>
<id>nexus-public-snapshots</id>
<url>http://maven.scm.baidu.com:8081/nexus/content/groups/public-snapshots</url>
</repository>
</repositories> <pluginRepositories>
<pluginRepository>
<id>nexus-public</id>
<url>http://maven.scm.baidu.com:8081/nexus/content/groups/public</url>
</pluginRepository>
<pluginRepository>
<id>nexus-public-snapshots</id>
<url>http://maven.scm.baidu.com:8081/nexus/content/groups/public-snapshots</url>
</pluginRepository>
</pluginRepositories> <distributionManagement>
<repository>
<id>Baidu_Local</id>
<name>Baidu local maven server</name>
<url>http://maven.scm.baidu.com:8081/nexus/content/repositories/Baidu_Local</url>
</repository> <snapshotRepository>
<id>Baidu_Local_Snapshots</id>
<name>Baidu local maven server for snapshots</name>
<url>http://maven.scm.baidu.com:8081/nexus/content/repositories/Baidu_Local_Snapshots</url>
</snapshotRepository>
</distributionManagement>
按照第一份页面改好之后,进入第二个页面:
https://my.oschina.net/gaussik/blog/513353
按照页面进行修改和配置之后,run程序出现以下错误:
无法找到元素 'context:component-scan' 的声明
搜索后采用http://www.ithao123.cn/content-10390816.html的方法加下以下:
xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"
再跑,出现如下错误:
无法找到元素 'mvc:default-servlet-handler' 的声明
根据上一个错误的经验,看了下别人的servlet.xml配置,加上了以下配置:
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
再次运行,就成功获得了想要的页面:
这里是SpringMVC Demo首页
出现此页面,说明配置成功。
然后进入第三个页面:
https://my.oschina.net/gaussik/blog/513444
按照上文中的配置后,能够继续运行成功。
然后进入第四个页面:
https://my.oschina.net/gaussik/blog/513614
按照以上这篇文章的配置和代码,可以完成blog系统管理端基本的增删改查功能。
然后进入第五个页面:
https://my.oschina.net/gaussik/blog/640164
注意,在新写Controller的时候,都要加上注解。比如@Crontroller.
注意:在添加新blog文章的时候,报错:”The request sent by the client was syntactically incorrect.“
搜索之后,发现是前端字段和后端处理的字段不匹配。将添加文章的addP操作从post改成get,看到了url里面时间是2016-02-01这样的string格式,所以需要在Java里面增加从String到Date的转换。
在网上搜索之后,在BlogEntity的时间前面加上注解:
@DateTimeFormat( pattern = "yyyy-MM-dd" )
private Date pubDate;
文件头部加上引用:
import org.springframework.format.annotation.DateTimeFormat;
依赖关系pom.xml处加上对joda的依赖引用,即可:
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.3</version>
</dependency>
通过对get方式的验证,正确了。再改回post方式。
最后,看一下部署的方式:
在Idea IDE项目的target目录下面,有一个SpringMVCDemo的目录。这个目录就是生成好的项目。把这个目录放到Tomcat的webapps目录下,然后重启Tomcat,就可以通过 http://localhost:8080/SpringMVCDemo 来访问这个项目了。
但是实际部署之后发现,部署到Tomcat目录后,新启动Tomcat后,只有 SpringMVCDemo , SpringMVCDemo/blogs , SpringMVCDemo/admin/users等输入的url能够work。在JSP代码里面进行redirect的url貌似不可以运行成功,比如会跳到如下:
http://localhost:8080/admin/blogs/show/1
搜索了一些资料,开始是在JSP文件head中加入如下代码:
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://" +request.getServerName()+":" +request.getServerPort()+path+"/" ;
%>
<base href="<%=basePath%>" >
测试之后,发现并没有用。上面这个应该是针对JSP本身做的。
然后看到JSP中的url跳转其实是写在html里面的,所以做了如下修改(注意,. 代表的当前目录指的是/admin/):
<a href="/admin/blogs/show/${blog.id}" type="button" class="btn btn-sm btn-success">详情</a>
<a href="/admin/blogs/update/${blog.id}" type="button" class="btn btn-sm btn-warning">修改</a>
<a href="/admin/blogs/delete/${blog.id}" type="button" class="btn btn-sm btn-danger">删除</a> 改为 <a href="./blogs/show/${blog.id}" type="button" class="btn btn-sm btn-success">详情</a>
<a href="./blogs/update/${blog.id}" type="button" class="btn btn-sm btn-warning">修改</a>
<a href="./blogs/delete/${blog.id}" type="button" class="btn btn-sm btn-danger">删除</a>
还有,注意把 add user/blog里面的/admin/users或者/admin/blogs地址都要改成 ./ ,因为这时候. 已经到了/admin的下一层目录。
另外, update user/blog里面的 updateP地址要改成 ../updateP,因为当前目录已经到了 /admin/user/update。
在测试的时候,发现IDEA没有运行的时候,target包不会更新的,所以需要先在IDEA make 一下或者运行一下,再把target目录下的包放到web-apps里面才能生效。
以上,就是springmvc demo程序的全部内容。当然了,多了解一些前端会有更多好处。所以有时间可以看一下Bootstrap:
http://v3.bootcss.com/
以上全部代码,在oschina原文作者的github里面可以获取:https://github.com/gaussic/SpringMVCDemo
SpringMVC in IDEA开发实践的更多相关文章
- 《JavaScript设计模式与开发实践》整理
最近在研读一本书<JavaScript设计模式与开发实践>,进阶用的. 一.高阶函数 高阶函数是指至少满足下列条件之一的函数. 1. 函数可以作为参数被传递. 2. 函数可以作为返回值输出 ...
- Android游戏开发实践(1)之NDK与JNI开发03
Android游戏开发实践(1)之NDK与JNI开发03 前面已经分享了两篇有关Android平台NDK与JNI开发相关的内容.以下列举前面两篇的链接地址,感兴趣的可以再回顾下.那么,这篇继续这个小专 ...
- TFS 2015 敏捷开发实践 – 在Kanban上运行一个Sprint
前言:在 上一篇 TFS2015敏捷开发实践 中,我们给大家介绍了TFS2015中看板的基本使用和功能,这一篇中我们来看一个具体的场景,如何使用看板来运行一个sprint.Sprint是Scrum对迭 ...
- Android游戏开发实践(1)之NDK与JNI开发01
Android游戏开发实践(1)之NDK与JNI开发01 NDK是Native Developement Kit的缩写,顾名思义,NDK是Google提供的一套原生Java代码与本地C/C++代码&q ...
- Android游戏开发实践(1)之NDK与JNI开发02
Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...
- vue 2.0 开发实践总结之疑难篇
续上一篇文章:vue2.0 开发实践总结之入门篇 ,如果没有看过的可以移步看一下. 本篇文章目录如下: 1. vue 组件的说明和使用 2. vuex在实际开发中的使用 3. 开发实践总结 1. ...
- Redis的Python实践,以及四中常用应用场景详解——学习董伟明老师的《Python Web开发实践》
首先,简单介绍:Redis是一个基于内存的键值对存储系统,常用作数据库.缓存和消息代理. 支持:字符串,字典,列表,集合,有序集合,位图(bitmaps),地理位置,HyperLogLog等多种数据结 ...
- MVC5 网站开发实践 2.2、管理员身份验证
上次完成了管理员的登录,这次要解决对管理员登录后的验证,采用AuthorizeAttribute属性的方式.之前还要解决几个问题,然后才重写验证类,最后稍微改一下界面. 目录 MVC5 网站开发实践 ...
- MVC5 网站开发实践 2.1、管理员登陆
目录 MVC5 网站开发实践 概述 MVC5 网站开发实践 1.建立项目 MVC5 网站开发实践 2.后台管理 1. 创建SHA256加密方法. 在Data项目中添加文件夹[Security ...
随机推荐
- Python3 从入门到开车
引:此文是自己学习python过程中的笔记和总结,适合有语言基础的人快速了解python3和没基础的作为学习的大纲,了解学习的方向.知识点:笔记是从多本书和视频上学习后的整合版. (一)初识pytho ...
- vue 组件使用中的细节点
1.is属性 有些 HTML 元素,诸如 <ul>.<ol>.<table> 和 <select>,对于哪些元素可以出现在其内部是有严格限制的.而有些元 ...
- 超实用 Git 使用方式介绍
都说程序员若是不知道 GitHub 就不是一个合格的程序员,其实这话说的过分了,不知道就学嘛,今天我们就来说说 Git 和 GitHub 到底是什么. 我们在开发软件的时候,常常是需要多人协作完成,这 ...
- Linux软件管理(rpm、yum、tar)
RPM软件包安装 YUM安装 源代码安装 TAR包管理:实现对文件的备份和压缩 rpm包管理 rpm命令是RPM软件包的管理工具. -a:查询所有套件:-b<完成阶段><套件档> ...
- 部署kettle7.1
系统版本 [root@gaqzj ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) 安装JDK1.8 jdk-8u161 ...
- 机器学习之路: python nltk 文本特征提取
git: https://github.com/linyi0604/MachineLearning 分别使用词袋法和nltk自然预言处理包提供的文本特征提取 from sklearn.feature_ ...
- SLF4J versions 1.4.0 and later requires log4j 1.2.12 or later 终极解决
http://blog.sina.com.cn/s/blog_54eb26870100uynj.html 到SLF4J官方网站:http://www.slf4j.org/codes.html#log4 ...
- Android MediaCodec 的实例化方法
*由于作者水平限制,文中难免有错误和不恰当之处,望批评指正. *转载请注明出处:http://www.cnblogs.com/roger-yu/ MediaCodec的实例化方法主要有两种: 1.使用 ...
- Codeforces Round #288 (Div. 2) C. Anya and Ghosts 模拟 贪心
C. Anya and Ghosts time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- git服务器安装和配置
http://www.cnblogs.com/dee0912/p/5815267.html