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 ...
随机推荐
- ubuntu16.04 安装symfony3.3.11 碰到的问题:extension dom is required | oops an error occurred 500
问题1:Uncaught exception 'RuntimeException' with message 'Extension DOM is required' 解决:sudo apt-get i ...
- OneDrive 开机启动设置失效如何处理?
问题现象: 『设置里勾选了开机启动onedrive,但是重启电脑勾选就没了,重新勾选没用,一重启就没了』 win10的onedrive无法开机启动 - Microsoft Community 处理方式 ...
- PHP接入微信H5支付
开发前配置 进行代码接入前,需在微信后台填写授权回调域名,此域名必须经过ICP备案 开发主要流程 用户下单时选择微信支付 商户进行业务逻辑处理并调用微信统一下单接口,微信H5交易类型为:trade_t ...
- MSTP多生成树的配置
STP的不足 STP协议虽然能够解决环路问题,但是由于网络拓扑收敛较慢,影响了用户通信质量 而且如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断 RSTP对STP的改 ...
- Am335x SPI 驱动测试
内核版本:3.14.65 CPU:Am335x 1.编译内核: make menuconfig Device Drivers -> <*>SPI support -> < ...
- Web应用扫描工具Wapiti
Web应用扫描工具Wapiti Wapiti是Kali Linux预置的一款Web应用扫描工具.该工具执行黑盒扫描,用户只需要输入要扫描的网址即可.该工具可以探测文件包含.数据库注入.XSS.CR ...
- codevs 2596 售货员的难题
2596 售货员的难题 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 钻石 Diamond 题目描述 Description 某乡有n个村庄(1<n<=15),有一个售货 ...
- luoguP5105 不强制在线的动态快速排序 [官方?]题解 线段树 / set
不强制在线的动态快速排序 题解 算法一 按照题意模拟 维护一个数组,每次直接往数组后面依次添加\([l, r]\) 每次查询时,暴力地\(sort\)查询即可 复杂度\(O(10^9 * q)\),期 ...
- Elasticsearch中document的基础知识
写在前面的话:读书破万卷,编码如有神-------------------------------------------------------------------- 参考内容: <Ela ...
- Codeforces Round #357 (Div. 2) D. Gifts by the List 水题
D. Gifts by the List 题目连接: http://www.codeforces.com/contest/681/problem/D Description Sasha lives i ...