zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    开课吧-孤尽公开课视频内容整理笔记
    业务系统数据库设计经验总结(七)-强制使用选定索引
    业务系统数据库设计经验总结(六)-MySQL中ORDER BY LIMIT分页数据性能问题
    业务系统数据库设计经验总结(五)-MySQL中ORDER BY LIMIT分页数据重复问题
    mongoTemplate聚合统计字段类型为字符串的数据,根据时间日期月份进行统计,日期也为字符串
    预览在线的pdf
    react页面缓存 使用本地存储
    react页面缓存插件 react-router-cache-router
    README.md的基本语法使用
    eclipse tomcat的一些错误
  • 原文地址:https://www.cnblogs.com/charlesblc/p/5904392.html
Copyright © 2011-2022 走看看