Spring MVC 搭建
撸代码搬砖也有几年了,期间用的基本是ssh或者替换一下持久层用mybatis之类的,Spring MVC也用过,但当时也没啥感觉,反正就是领导下来任务,老子把它代码撸完了事儿。近期工作略有闲暇,碌碌之余便想重新复习一下Spring相关知识,加深一下对架构层次的理解。
废话不多说,开撸:
第一步,打开idea,File—>new Project,选择Web Application跟Spring MVC,
如果已经有工作空间,可以直接new module,选择好一直next最后会下载相关jar包,下载完后会是初始的目录,下载完之后是这么个东东:
有配置上下文的applicationContext.xml跟我们Spring MVC用的dispatcher-servlet.xml,而且已经在web.xml里配好了,好牛b的工具!!
web程序入口就是web.xml嘛,这servlet-mapping就是说什么类型的url要给我处理,本程序用的是*.html,拦截了之后给谁处理呢,servlet-name叫dispatcher的那个servlet,具体是谁呢,就是servlet-class对应的那个啦。这个ContextLoaderListener是用来加载applicationContext的内容的,因为它实现了ServletContextListener这个接口,启动容器时,就会默认执行它实现的方法。至于applicationContext.xml这个配置文件部署在哪,context-param标签内会有描述。
蛋蛋这样肯定是不行的了,我们需要说明action跟jsp怎么映射,所以dispatcher-servlet.xml里边,这个就是必须的了:
<!-- ViewResolver --> <bean 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>
现在spring推荐大家用注解,不要再那么一堆配置文件了,我们也顺应潮流,配置扫描的包:
<!-- 注解自动扫描的包 --> <context:component-scan base-package="main" />
启用mvc:
<mvc:annotation-driven/>
接下来开始撸action:
package test; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloAction { @RequestMapping(value="/hello.html") public String Hello(){ System.out.println("action进入"); return "addresslist"; } }
写一个addresslist.jsp,放到web-inf/jsp/文件夹下。
配置tomcat,点击右上角的editConfigurations:
然后点击“+”选择tomcat server-->local
name就是我们给tomcat取的名字,点击configure会弹出application servers页面,这里是让我们配置tomcat具体路径的,配完点击确定。配置浏览器跟服务端口号,然后在deplayment页点击“+”号,添加我们要部署的项目。
启动,访问http://localhost:8080/hello.html
这就勉强算是结束了吧,大概总结一下:
步骤:
1、 用idea建web的spring mvc项目,下载相关jar包
2、 修改web.xml拦截*.html的url
3、 在dispatcher-servlet.xml配置自动扫描的包路径以及<mvc:annotation-driven/>
告诉spring采用注解驱动的方式进行url路由解析
配置ViewResolver视图解析
4、 写action以及jsp,部署访问
需要注意的:
1、 部分jar包可能不全,比如jstl.jar之类,根据报错添加即可
2、 配置文件命名空间缺失,需要手动添加
spring的xml最基础的为bean标签,在命名空间http://www.springframework.org/schema/beans中定义,
若某个xml需要添加某个标签,只需在beans中声明此标签的命名空间xmlns=""即可。标签的具体写法由xsi中的xsd文件规定。
先结了吧,只是一个类似于helloworld的东西,后续会稍微添加一点功能,让它看上去有点像那么回事儿。