Web应用技术(第十二周/第一次练习/2h)

本次作业基于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 会抛出异常。
我正是通过这个异常定位了错误所在。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值