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 ...
随机推荐
- 牛客网 桂林电子科技大学第三届ACM程序设计竞赛 G.路径-带条件的树的直径变形-边权最大,边数偶数的树上的最长路径-树形dp
链接:https://ac.nowcoder.com/acm/contest/558/G 来源:牛客网 路径 小猫在研究树. 小猫在研究路径. 给定一棵N个点的树,每条边有边权,请你求出最长的一条路径 ...
- ZOJ 4010 Neighboring Characters(ZOJ Monthly, March 2018 Problem G,字符串匹配)
题目链接 ZOJ Monthly, March 2018 Problem G 题意 给定一个字符串.现在求一个下标范围$[0, n - 1]$的$01$序列$f$.$f[x] = 1$表示存在一种 ...
- Java_常用API
1.基本类型包装类 1.1 概述 在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的.而程序开发中,我们需要把字符串数据,根据需求转换成指定的基本数据类型,如年龄需要转换成int类型 ...
- UVA - 10815 - Andy's First Dictionary STL
Andy, 8, has a dream - he wants to produce his very own dictionary. This is not an easy task for him ...
- web服务端安全之权限漏洞
一.权限漏洞 访问控制是指用户对系统所有访问的权限控制,通常包含水平权限,和垂直权限. 水平越权:同一角色级别的用户之间所产生的问题,如A用户可以未授权访问B用户的数据: 垂直越权:不同角色级别的用户 ...
- 1020 Tree Traversals (25)(25 point(s))
problem Suppose that all the keys in a binary tree are distinct positive integers. Given the postord ...
- [ 原创 ]学习笔记-做一个Android音乐播放器是遇到的一些困难
最近再做一个安卓的音乐播放器,是实验室里学长派的任务,我是在eclipse上进行开发的,由于没有android的基础,所以做起来困难重重. 首先是布局上的困难 1.layout里的控件属性不熟悉 2. ...
- 【CF 453A】 A. Little Pony and Expected Maximum(期望、快速幂)
A. Little Pony and Expected Maximum time limit per test 1 second memory limit per test 256 megabytes ...
- SDOI 2017 Round2 滚粗了
没进省队qwq 技不如人,甘拜下风
- Android源码目录结构详解
Android 4.0|-- Makefile|-- bionic (bionic C库)|-- bootable (启动引导相关代码)|-- build (存放系统编译规则及generic等基础开发 ...