当然, 今时今日使用maven 和 springboot 去创建1个java web project会更加方便。

但是手动搭建1个会加深我对springmvc的理解。

Step1 打开eclipse 创建1个新的Dynamic web project


Step2 往project内的 WEB-INF/lib folder导入下列spring 的jar包

大部分都能在 .m2 里的repository folder找到, 如果没有可以利用别的maven project下载。

 commons-logging-1.1.1.jarspring-aop-4.1.4.RELEASE.jarspring-aspects-4.1.4.RELEASE.jarspring-beans-4.1.4.RELEASE.jarspring-context-4.1.4.RELEASE.jarspring-core-4.1.4.RELEASE.jarspring-expression-4.1.4.RELEASE.jarspring-tx-4.1.4.RELEASE.jarspring-web-4.1.4.RELEASE.jarspring-webmvc-4.1.4.RELEASE.jar

Step3 初步编写web.xml 文件

在WEB-INF 文件夹创建1个web.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sum.com/xml/ns/javaee/web-app_3_0.xsd"><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- auto start --><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

Step4 启动项目(with eclipse defined tomcat runtime)


Tomcat 会报错, 找不到 WEB-INF 下的springmvc-servlet.xml
说明spring DispatcherServlet会默认在那里寻找servlet 配置文件。

Step5 修改spring 配置文件位置

在上面的web.xml 中, 为servlet springmvc 添加1个参数contextConfigLocation, 值我们写上classpath:springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sum.com/xml/ns/javaee/web-app_3_0.xsd"><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- auto start --><load-on-startup>1</load-on-startup><!-- modify spring configuration file path and file name --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

在src文件夹下添加springmvc.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"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd"></beans>

重新启动项目, tomcat 的错误就消失了

到这步为止, 我们已经初步实现了springmvc 四大组件中的中央调度器 DispatcherServlet.
下面我们来实现第二个组件Handler Mapping

Step6 添加1个HandlerMapping 和1个Contoller类

在src目录下添加1个DemoController 类:

package com.home.controller;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;public class DemoController implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest req,HttpServletResponse res) throws Exception {// TODO Auto-generated method stubSystem.out.println("executed Demo controller!");return null;}}

在springmvc.xml中 导入 上面直接换个bean 以及新建1个SimpleHandlerMapping 的bean

<?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"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd"><bean id ="democontroller1" class="com.home.controller.DemoController"></bean><bean id = "" class= "org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="urlMap"><map><!-- key means the logic name of controller --><entry key="demo" value-ref="democontroller1"></entry></map></property></bean>
</beans>

启动项目,在浏览器输入 http://localhost:8080/springmvc_manual/demo

可以见到DemoController被成功调用并执行

到这里为止, 我们实现了springmvc 中的第二个组件HandlerMapping.

还有另两个组件 HandlerAdapter 和ViewResovler , 我们并没有配入配置文件中。
其实spring 4 已经帮我们配了默认值, 但是这次我仍然想把他们也配置了。

Step7 添加1个HandlerAdapter

在springmvc.xml中添加

 <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>

重启项目, 刷新页面, DemoController仍然可以被调用

Step8 令DemoController 返回1个jsp页面

在WebContent下建立1个jsp文件夹, 里面创建1个demo1.jsp

修改DemoController, 另它return new ModelAndView(jsp/demo1.jsp)

package com.home.controller;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;public class DemoController implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest req,HttpServletResponse res) throws Exception {// TODO Auto-generated method stubSystem.out.println("executed Demo controller!");return new ModelAndView("jsp/demo1.jsp");}}

重启项目, 效果:

其实这里Spring也帮我们使用了默认的ViewSolver, 同样地,下面我也会进行手动配置。

Step8 添加ViewResolver

在springmvc.xml中, 添加

<!-- InternalResoucesViewReslover --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"></property><property name="suffix" value=".jsp"/></bean>

prefix 和 suffix表示会在ModelAndView的值前后加上的额为值。

上面的写法就代表spring会在/WEB-INF/jsp 里寻找jsp文件

当然, 要在WEB-INF 创建jsp文件和1个demo1.jsp文件, 里面的内容改改

修改DemoController ModelAndView的值
只写demo1

重启项目, 刷新:

手动创建1个基于xml配置的springmvc 项目(without Maven)相关推荐

  1. 手动创建1个基于注解的springmvc项目

    众所周知, SpringMvc有4个基本组件 DispatcherServlet -> 中央调度器, 使用前端设计模式拦截所有的url请求 HandlerMapping -> 分发不同的u ...

  2. 实例化Bean的方法(基于xml配置)-http://blog.csdn.net/shymi1991/article/details/48153293

    实例化Bean的方法(基于xml配置) 标签: spring framework 2015-09-01 13:43 918人阅读 评论(0) 收藏 举报  分类: Spring FrameWork(7 ...

  3. ssm整合(基于xml配置方式)

    本文是基于xml配置的方式来整合SpringMVC.Spring和Mybatis(基于注解的方式会再写一篇文章),步骤如下: (1)首先自然是依赖包的配置文件 pom.xml <project ...

  4. Spring框架学习笔记09:基于XML配置方式搭建SSM框架实现用户登录

    文章目录 一.采用MVC架构 二.用户登录运行效果 三.基于XML配置方式搭建SSM框架实现用户登录 (一)创建数据库与表 - simonshop (t_user) 1.创建数据库 - simonsh ...

  5. Spring框架学习笔记07:基于XML配置方式使用Spring MVC

    文章目录 一.Spring MVC概述 1.MVC架构 2.Spring MVC 3.使用Spring MVC的两种方式 二.基于XML配置与注解的方式使用Spring MVC (一)创建Spring ...

  6. Spring MVC之基于xml配置的web应用构建

    2019独角兽企业重金招聘Python工程师标准>>> 更多spring博文参考: http://spring.hhui.top/ 直接用SpringBoot构建web应用可以说非常 ...

  7. Spring-IOC—基于XML配置Bean

    Spring-IOC-基于XML配置Bean 1.Spring 配置/管理 bean 介绍 1.Bean 管理包括两方面 1.创建bean对象 2.给bean注入属性 2.Bean配置方式 1.基于x ...

  8. 转载 - Struts2基于XML配置方式实现对action的所有方法进行输入校验

    出处:http://www.cnblogs.com/Laupaul/archive/2012/03/15/2398360.html http://www.blogjava.net/focusJ/arc ...

  9. 一步一步深入spring(6)--使用基于XML配置的spring实现的AOP

    上节我们提到了使用基于注解实现的AOP,这节我们将用基于xml配置的方式来实现的AOP. 1.首先建立一个类,作为切面类,这个类主要用来实现注解中各种通知要实现的方法. 1 package com.y ...

最新文章

  1. 可穿戴医疗设备火爆背后的困境
  2. ECCV 2020《TRRNet: Tiered Relation Reasoning for Compositional Visual Question Answering》论文笔记
  3. 如何修改MySQL已有表的字符集
  4. 原生中文版MyBB开源论坛效果展示
  5. 峰情万种_Enhancement of Peak Visual
  6. 团队作业7——第二次项目冲刺(Beta版本)
  7. 计算机系统的结构分类,图解计算机结构与系统分类!!
  8. Java打印26个字母
  9. Linux 配置双网卡,同时访问内外网
  10. 大数据,云计算,物联网和移动互联网与传统互联网,主要有什么关系?
  11. 上传身份证照片js_小程序上传身份证图片的实现方法
  12. 2022双十一最亮投影仪推荐,当贝X3激光投影3200ANSI流明超高亮度
  13. 蓝桥杯计算机软件大赛什么时间,“蓝桥杯”全国软件设计大赛
  14. Directx11 安装、配置、报错
  15. 商场抽奖活动案例,键盘录入,数值拆分,求和,判断
  16. 数据结构 顺序表实现手机通讯录
  17. html四舍五入函数,Javascript四舍五入(Math.round()与Math.pow())
  18. 基于springboot实现学校线上教学平台管理系统【源码+论文】
  19. 【houdini vex】方块穿插
  20. 树莓派Bullseye系统安装QT

热门文章

  1. React中的路由react-router
  2. 【Flask】sqlalchemy高级用法(注意join的用法)
  3. 一个write和printf混用的例子
  4. C++ 可以把变量当成函数用~~
  5. JavaScript与DOM编程
  6. 【WEB安全】In0ri:基于深度学习的网站内容污染检测系统
  7. 002 PECompact 1.84
  8. 1.7 Java到底有没有多维数组?
  9. 计算字符串的实际长度
  10. HPU暑期第五次积分赛 - G-迷宫(BFS+最短路径)