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

12 篇文章 0 订阅

当然, 今时今日使用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.jar
 spring-aop-4.1.4.RELEASE.jar
 spring-aspects-4.1.4.RELEASE.jar
 spring-beans-4.1.4.RELEASE.jar
 spring-context-4.1.4.RELEASE.jar
 spring-core-4.1.4.RELEASE.jar
 spring-expression-4.1.4.RELEASE.jar
 spring-tx-4.1.4.RELEASE.jar
 spring-web-4.1.4.RELEASE.jar
 spring-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.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
		http://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 {

	@Override
	public ModelAndView handleRequest(HttpServletRequest req,HttpServletResponse res) throws Exception {
		// TODO Auto-generated method stub
		System.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.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
		http://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 {

	@Override
	public ModelAndView handleRequest(HttpServletRequest req,HttpServletResponse res) throws Exception {
		// TODO Auto-generated method stub
		System.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
在这里插入图片描述

重启项目, 刷新:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nvd11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值