本次作业基于how2j模仿编写第一个SpringMvc框架下的Web项目
1.何为SpringMVC
SpringMVC是一种基于Java的Web框架,它是Spring Framework的一部分,用于开发Web应用程序。
2.为什么要使用SpringMVC
我们使用它的主要目的,我认为是为了将MVC(Model-View-Controller)模式应用于Web应用程序开发,使开发人员能够更轻松地开发可维护和可扩展的Web应用程序。
3.第一个基于SpringMvc的项目
有了之前几周的练习的基础,我就不写在哪个文件夹下建哪个文件了,相信大家都已经知道该在什么位置写什么文件了。
(1)M
在这个项目中M没有明确地体现出来,如果非要将文件代码与MVC各个组件对应起来,我认为M被封装到了“ModelAndView” 类中,因为这次的M过于简单,不需要提出来自己写。
(2)V
index.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false"%>
<h1>${message}</h1>
(3)C
IndexController.java:
package 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 IndexController implements Controller {
// 实现Controller接口,重写handleRequest方法
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
// 创建ModelAndView对象,指定要返回的视图名为index.jsp
ModelAndView mav = new ModelAndView("index.jsp");
// 向视图中添加一个名为message,值为"Hello Spring MVC"的属性
mav.addObject("message", "Hello Spring MVC");
// 返回ModelAndView对象
return mav;
}
}
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>springmvc2</display-name> <!-- 设置Web应用的显示名称 -->
<!-- 配置DispatcherServlet -->
<servlet>
<servlet-name>springmvc2</servlet-name> <!-- DispatcherServlet的名称 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- DispatcherServlet的类名 -->
<load-on-startup>1</load-on-startup> <!-- 在Web应用启动时就加载DispatcherServlet -->
</servlet>
<servlet-mapping>
<servlet-name>springmvc2</servlet-name> <!-- DispatcherServlet的名称 -->
<url-pattern>/</url-pattern> <!-- DispatcherServlet的映射路径 -->
</servlet-mapping>
<!-- 配置欢迎页面 -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
springmvc2-servlet.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 配置一个简单的URL处理映射器 -->
<bean id="simpleUrlHandlerMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<!-- 设置映射规则 -->
<property name="mappings">
<props>
<prop key="/index">indexController</prop>
</props>
</property>
</bean>
<!-- 配置一个名为indexController的控制器 -->
<bean id="indexController" class="controller.IndexController"></bean>
</beans>
(4)运行查看:
关于在部署项目方法,请参考how2j的教程(其实随便运行一个想要部署的项目的任意一个文件就行)
完成部署后,在浏览器中输入http://localhost:8080/项目名称/index
查看效果:
4.遇到的问题/总结
(1)运行什么?(已解决)
这次练习在一开始时,我把所有代码写到对应程序里后,运行IndexController.java,似乎是当成注解方式运行了,在这里卡了一会,后来仔细看教程,原来是把项目部署到服务器上后在网址中访问
http://localhost:8080/项目名称/index
才行
(2)DispatcherServlet是什么,有什么用?(已解决)
最初,我不懂这个组件有什么用,只是简单修改了springmvc,将springmvc修改为我的项目的名称springmvc2,但没有修改对应的xml配置文件的名称,导致总是出现500报错
常见的500错误包括但不限于以下几种情况:
- 服务器程序代码错误
- 服务器配置错误
- 服务器资源不足或过载
- 数据库连接错误
- 网络连接异常
- 安全限制被触发等
后来修改文件名称为springmvc2-servlet
,访问对应网址便出现正常效果了。
(3)关于DispatcherServle:
DispatcherServlet
是 Spring MVC 框架中的一个核心组件,它是一个 Servlet,用于接收 HTTP
请求并将请求分发给不同的处理器进行处理。在 Spring MVC 中,
DispatcherServlet
负责处理所有的 HTTP 请求,它会根据请求的 URL 选择对应的
Controller 进行处理,并将处理结果返回给客户端。DispatcherServlet
还负责处理视图解析、数据绑定、异常处理等任务。
在本次的springmvc2项目中,在默认情况下,DispatcherServlet
会自动查找与其同名的配置文件,即 <servlet-name>
标签中指定的名称加上 -servlet.xml
后缀的配置文件。在这个例子中,<servlet-name>
是 springmvc2
,因此会自动查找 springmvc2-servlet.xml
配置文件。如果没有找到同名的配置文件,DispatcherServlet
会抛出异常。
我正是通过这个异常定位了错误所在。