【framework】spring3-入
补充:我把相关jar包上传到 http://down.51cto.com/data/477540 |
spring3发布有相当长一段时间了,因为待业在家,一直帮朋友提供些方案,没有太多关注。近期打算翻译一下spring-reference,发现网上已经存在一些版本了,为了不重复发明轮子,我就弄个个实际例子来写写。
集成
做java的都好喜欢eclipse,没办法,虽然其他语言的程序员一直批判java程序员没有IDE就没法做开发,批判就批判吧,确实好用,好歹也带动了经济。
我用的是工具如下:
IDE: eclipse3.6 中间件(应用服务器): tomcat7.0.27 svn: subversive maven: 3.0.4 framework: springMVC 3.05 |
我喜欢eclipse3.6以后的版本,因为他装插件的时候直接搜索就OK,搜索完成后,已经帮你检测出是否已经安装,可以更新。很方便
1.集成svn
svn在eclipse上官方推荐的是subversive,但不代表其他就不好。
点击:help-->eclipse marketplace
2. 集成maven
同样在搜索栏里maven
install Maven Integration for Eclipse WTP
3. spring提供svn地址下载一些项目demo,地址如下
https://anonsvn.springframework.org/svn/spring-samples
在这个地址里下载spring的mvc-basic等项目
4. 一起看下mvc-basic的结构
典型的maven的结构
├─.settings
├─class="lazy" data-src
│ ├─main
│ │ ├─java
│ │ │ └─org
│ │ │ └─springframework
│ │ │ └─samples
│ │ │ └─mvc
│ │ │ └─basic
│ │ │ └─account
│ │ ├─resources
│ │ └─webapp
│ │ ├─resources
│ │ │ └─blueprint
│ │ │ ├─plugins
│ │ │ │ ├─buttons
│ │ │ │ │ └─icons
│ │ │ │ ├─fancy-type
│ │ │ │ ├─link-icons
│ │ │ │ │ └─icons
│ │ │ │ └─rtl
│ │ │ └─class="lazy" data-src
│ │ └─WEB-INF
│ │ ├─classes
│ │ ├─layouts
│ │ ├─lib
│ │ ├─messages
│ │ ├─spring
│ │ │ └─appServlet
│ │ └─views
│ │ └─account
│ └─test
--------pom.xml
这里我单独画出pom.xml目的主要是因为maven项目的核心文件就是pom.xml,这里有他所有的依赖和相关组件
5. 通过eclipse,右键pom.xml—>Run As—>maven install
maven会自动下载相关的依赖jar包(网速不好的话,会比较尴尬)。我回头把相关包传上去,maven服务器经常出现无法下载的和jar下载不全的情况。偏偏spring官网下载的相关包里没有spring-webmvc-3.0.5.RELEASE.jar等
注:maven可以发布war到本地或者远程tomcat下,这里不细讲
6. 简单走一遍流程
6.1 看web.xml
- <servlet>
- <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
-
- <!--集成spring,核心调度DispatcherServlet -->
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>
- <!--加载spring自己的配置文件-->
- /WEB-INF/spring/appServlet/servlet-context.xml
- </param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
6.2 查看/WEB-INF/spring/appServlet/servlet-context.xml
- <!--加载控制器(原注释) 复制黏贴处问题了,看来看的人真不多。。–>
- <!--非spring注解,所需的注解驱动加载 2012-9-1修改-->
- <mvc:annotation-driven />
- <!--跟目录访问,默认访问welcome.jsp-->
- <mvc:view-controller path="/" view-name="welcome"/>
- <!-- jsp在WEB-INF在受到保护,不被外界直接访问,是一种比较常见的安全策略,同时定定义了jsp的地址和扩展名-->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/views/"/>
- <property name="suffix" value=".jsp"/>
- </bean>
6.3 查看控制器
- @Controller
- @RequestMapping(value="/account")
- public class AccountController {
-
- private Map<Long, Account> accounts = new ConcurrentHashMap<Long, Account>();
-
-
- @RequestMapping(method=RequestMethod.GET)
- public String getCreateForm(Model model) {
- model.addAttribute(new Account());
- return "account/createForm";
- }
-
-
- @RequestMapping(method=RequestMethod.POST)
- public String create(@Valid Account account, BindingResult result) {
- if (result.hasErrors()) {
- return "account/createForm";
- }
- this.accounts.put(account.assignId(), account);
-
- //实际上这里跳转到了getView方法
- return "redirect:/account/" + account.getId();
- }
-
-
- @RequestMapping(value="{id}", method=RequestMethod.GET)
- public String getView(@PathVariable Long id, Model model) {
- Account account = this.accounts.get(id);
- if (account == null) {
- throw new ResourceNotFoundException(id);
- }
- model.addAttribute(account);
- return "account/view";
- }
-
- }
-
6.4 启动项目,地址栏输入http://localhost:8080/mvc-basic/
我们得到的刚好是welcome.jsp页面内容
6.5 点击@Controller Example,查看createForm.jsp 由getCreateForm方法跳转的页面
- <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
-
- 这是spring的标签,用在
-
- <form:label for="name" path="name" cssErrorClass="error">Name</form:label>
-
- <form:input path="name" /> <form:errors path="name" />
看看页面效果
7. 为 了调试方便,可以在eclipse下运行tomcat,debug跟踪一下springMVC的流程。
好了,一个简单的springMVC入门小例子讲解到这里,要想深入了解,可以从
https://anonsvn.springframework.org/svn/spring-samples下载其他例子一一尝试,或者关注笔者。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341