Java 21:Spring 4(Intelij IDEA下的SpringMVC环境搭建)
来源:互联网 发布:天津相声广播网络直播 编辑:程序博客网 时间:2024/06/09 23:13
最近又开始学习Java Web,其实之前已经实习做过几个月相关工作,当时用的是SSH进行了几个月ERP软件的开发,感觉最难的还是前期学的时候,各种不知道怎么搭建环境,书上的、网上的代码也基本不能直接跑通,当时自己搭SSH花了一周多,最后的原因居然是有个Spring的包漏掉了(我是把下载的Spring资料里lib所有的JAR放进去,结果没想到还有一些JAR不在lib里,在其他目录里,很郁闷)
然后最近买了本《Spring实战》,看起来不错,但是照着敲代码又让我郁闷了,按着上面的纯Java注解的方式敲出来没反应(书上代码居然还有个别拼写错误)。。。也没报错,看网上也有一些人是同样的问题,都是这本书,也没个解法,瞬间对这本书失去了信心,还是回归大众化的XML配置方式了。
然后干脆直接从Eclipse换到Intelij IDEA了,感觉后面应该用得更多。
IDEA要比Eclipse智能很多,也更让人眼花缭乱,虽然智能,但是直接建的工程也没能直接跑成功。。。。
建立一个工程,选择Spring MVC
发现确实智能,web.xml和分发器和spring上下文的xml都帮我们建好了,web.xml内容都填好了
这里需要改一下web.xml的内容,
<servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern>//这个地方改成/,默认接收一切请求 </servlet-mapping>其他不用改,在有index.jsp的情况下直接在Tomcat下运行即可
然后运行我就遇到了错误,它说找不到Spring的什么ContextLoaderListener的Class,你不是创项目的时候都帮我下载好了么,现在报什么错?!
搞了一整天才发现这么改:File——Project Structure——Artifact里
看到中间部分一左一右分别是<output root>和Springmvc6,然后左边的这部分WEB-INF的lib里面是没有东西的,但我们项目路径下也确实有所有的Spring的lib,
这时候我已经修改完了,再我没改的时候,最下面会报一个错,并有fix的可以按,意思就是在XXX里面找不到Spring的lib,是否从项目导入一下,fix一下,然后fix了两次,那个提示消失了。我们的左边<output root>下的lib里也多了两个Spring的库,这时候,Apply——OK——运行,就可以进入index.jsp,也没有报错了
在WEB-INF下建文件夹叫jsp,里面创建一个hello.jsp,内容如下
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>${msg}</title></head><body><h1>${msg}</h1><span>${name}</span></body></html>在src下面建立包叫controller,里面放一个HelloController的Java类,代码如下:
@Controller@RequestMapping(value = "/hello", method = RequestMethod.GET)public class HelloController { @RequestMapping(value = "/hello", method = RequestMethod.GET) public String hello(ModelMap model) { model.addAttribute("msg", "Spring MVC Hello World"); model.addAttribute("name", "yuntao"); return "hello"; }}这个代码对于model的操作就是对应jsp里的msg和name,如果一点都不懂标签,可以吧JSP里的两个换成普通字符串,Java里hello除了return “hello”啥都不干,这里稍微解释一下吧,虽然我也没深入研究
@Controller说明自己是控制器,第一个RequestMapping说明整个类处理/hello的消息,加上下面hello方法前面的RequestMapping,说明处理url为/hello下的/hello,大家可能知道,我什么都不干的情况下,打开Tomcat默认的界面跳到localhost:8080,有index.jsp会进入index。加上这两个RequestMapping,也就是说我们的HelloController类的hello方法是专门处理localhost:8080/hello/hello这个请求的,然后返回了hello,意思就是返回hello.jsp给用户
当然这里为了1、能够使用@的注解,2、能够让代码去扫描我们这个类,3、能够知道返回的是jsp,4、能够知道处理的url格式。。。。。都是需要在xml里有相关配置的,你可以自己找找对应关系
在web.xml我们已经有了以下代码(因为是Intelij自动生成的,所以我这里不全贴出来,只捡一部分说)
<servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>默认会去找dispather-servlet.xml的配置文件,该文件IDEA早已帮我们建立好了,但是没有具体代码,下面是具体添加的,这个xml的名称和上面的servlet-name对应,不能随便改的:
dispather-servlet.xml
<?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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="controller"/> <!-- 对应HelloController所在的包名 --> <!-- 静态资源(js、image等)的访问 --> <mvc:default-servlet-handler/> <!-- 开启注解 --> <mvc:annotation-driven/> <!--ViewResolver 视图解析器--> <!--用于支持Servlet、JSP视图解析--> <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean></beans>
applicationContext.xml作为Spring的上下文,我们先不管,直接运行,这时候如果有index.jsp会进入,前提是xml没有语法错误,Tomcat也能正常运行。
但是我们把url改成localhost:8080/hello/hello就报错了,因为我们上面的Java里使用了model,jsp里使用了${name},这个需要jstl标签库支持,我直接将jstl的JAR拷贝到项目文件夹下的lib里,IDEA里立刻就能识别到,但是奇怪的是,这是JSTL库前面是没有+加号的,运行也还是同样的错误(下面已经解决了, 有了+)
File——Project Structure——Libraries——选添加。在文件夹中选中jstl,添加,然后发现jstl左边也有了+,才算真正引用进来了
然后在运行,就可以正常打开hello.jsp了
有了jsp(view),有了model(model模型),HelloController(控制器),基本的MVC也就搭建好了
—————————————————————————————————————————————————
最近换了mac,又在mac搭建同样的环境,结果又报类似的错,我就不知道这算IDEA还是Tomcat的锅。这次的错和前面的不同,而且mac下和windows下界面也有不同,所以也是鼓捣了一个小时,才搞完。
报的错:Error during artifact deployment,中间还有个错是tomcat下duplicate context path /,也不知道是啥问题,我也没干啥呀。还以为遇到什么新错误
然后看输出文件是看不出啥了,不过他下面提醒你去看tomcat的日志文件:一看就在输出旁边,还挺好的
然后这边的错就很直观了,说找不到ContextLoaderListener,但这个类lib是有了,就是tomcat没有识别,鼓捣了半天,在file——Project Structure里,下面图里的右下方,选择fix,把所有missing的都fix上,然后就成功打开了
这时候直接打开8080是可以进去index.jsp的,但是一到前面的hello.jsp,又报了jstl错误,只能在手动下载jstl,上面一张图的Libraries里导入。。。。终于,又成功了!
- Java 21:Spring 4(Intelij IDEA下的SpringMVC环境搭建)
- intelij idea+springMVC+spring+mybatis 初探(持续更新)
- Idea+Maven+Spring+SpringMVC+MyBatis环境搭建
- intelij Idea的scala环境配置
- ubuntu 14.04 java开发环境搭建 jdk 以及 inteliJ IDEA安装
- ubuntu 14.04 java开发环境搭建 jdk 以及 inteliJ IDEA安装
- Mac 下 Intelij idea 的快捷键
- InteliJ IDEA + Genymotion搭建Android开发环境(win 7)
- 使用IDEA 搭建springmvc环境的项目
- IDEA搭建简单的SSM(spring+springMVC+mybatis)框架
- 使用intellij idea搭建spring-springmvc-mybatis整合框架环境
- 使用IDEA搭建Maven+SpringMVC+Spring+Hibernate环境
- Maven搭建SSM(SpringMVC + Spring + Mybaits)开发环境 (下)
- IDEA+SpringMVC+Maven环境搭建
- 在IDEA下 spring+springMVC+hibernate+maven框架搭建
- Java---idea intelij的java版本降级编译
- intelij idea java.lang.ClassNotFoundException
- SSM环境的搭建(SpringMVC+Spring+Mybatis)
- 97. Interleaving String
- Activiti系列:activiti5.22数据库表结构说明
- 文本自动换行
- 狂降1000!苹果最悲情产品大降价!
- vue props 取名问题
- Java 21:Spring 4(Intelij IDEA下的SpringMVC环境搭建)
- List中的set方法和add方法, 以及排序操作
- js加载
- I/O多路转接之poll
- 百度地图API示例之添加/删除工具条、比例尺控件
- Leetcode(16)
- WebView性能、体验分析与优化
- 开博客之初心
- 和菜鸟一起学电子小玩意之四轴飞行器原理