02【SpringMVC基础】使用SpringMVC搭建第一个javaweb项目

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43548748/article/details/95607527

本文尤为枯燥,请同步观看:【SpringMVC】项目具体请求流程

目录
1.概念
2.搭建一个简单的javaweb项目
1).新建一个动态web项目
2).导入springMVC所需要的jar包
3).配置DispatcherServlet
3.5).这里插入一点内容:
4).配置处理器适配器SimpleControllerHandlerAdapter
5).编写处理器Handler
6).配置处理器handler(即配置自己新建的处理器的类)
7).配置处理器映射器BeanNameUrlHandlerMapping
8).编写jsp视图View
9).配置视图View解析器
10).运行项目
11).可能会遇到的bug及解决之道


1.概念

什么是MVC?
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。

2.搭建一个简单的javaweb项目

1).新建一个动态web项目

(以本项目为例)整个项目下来,主要有这四个文件:
①编写处理器文件LoginAction.java
②web配置文件web.xml
③配置处理器、适配器、映射器等配置信息spring-servlet.xml
④视图View文件helloppp.jsp

2).导入springMVC所需要的jar包


可以右击src文件夹,构建路径,在“库”中添加外部jar引用这些包;
也可以直接复制这些jar包,粘贴在WEB-INF的lib文件夹下

3).配置DispatcherServlet

web.xml文件下配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	id="WebApp_ID" version="3.1">
	<display-name>mvcdemo</display-name>

	<!-- 初始化servlet,用于响应客户端请求 -->
	<servlet>
		<!-- 命名 -->
		<servlet-name>mvcfy</servlet-name>

		<!-- 配置DispatcherServlet -->
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

		<!-- 初始化servlet某些值 -->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring-servlet.xml</param-value><!-- 用于指定spring-servlet.xml配置文件路径 -->
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<!-- servlet映射 -->
	<servlet-mapping>
		<!-- 因为是映射,所以要映射上面servlet初始化时的name -->
		<servlet-name>mvcfy</servlet-name><!-- 与上面一致 -->
		<url-pattern>*.action</url-pattern><!-- 与路径有关 -->
	</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>

3.5).这里插入一点内容:

spring-servlet.xml文件(已包含4、6、7、9步骤的配置信息):

<?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:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 	注解驱动配置
    <mvc:annotation-driven/> -->
<!--    配置controller扫描(未)
	<context:component-scan base-package="com.springMVC.*.controller"/> -->
	
    <!-- 配置处理器映射器 -->
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />

    <!-- 配置处理器Control适配器 -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
    <!-- 配置处理器 -->
    <bean name="/loginAction.action" class="com.fy.mvcdemo.handler.LoginAction"></bean><!-- 访问地址 -->
    <!-- 配置视图View解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 视图的目录 -->
        <property name="prefix" value="/view/"></property><!-- value="/"代表根目录 -->
       <!--  视图的后缀 -->
    	<property name="suffix" value=".jsp"></property>
    </bean>
</beans>

4).配置处理器适配器SimpleControllerHandlerAdapter

spring-servlet.xml文件下配置:

<!-- 配置处理器Control适配器 -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>

5).编写处理器Handler

处理器LoginAction.java文件:

扫描二维码关注公众号,回复: 7592476 查看本文章
package com.fy.mvcdemo.handler;

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 LoginAction implements Controller {
	@Override
	public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
		// TODO 自动生成的方法存根
		ModelAndView mav = new ModelAndView();
		mav.addObject("message","你好,熟知宇某!");//映射到视图文件的${message}
		mav.setViewName("helloppp");//要视图helloppp.jsp限定名匹配
		return mav;
	}

}

6).配置处理器handler(即配置自己新建的处理器的类)

spring-servlet.xml文件下配置:

<!-- 配置处理器Handler:LoginAction.java -->
    <bean name="/loginAction.action" class="com.fy.mvcdemo.handler.LoginAction"></bean><!-- 访问地址 -->

7).配置处理器映射器BeanNameUrlHandlerMapping

spring-servlet.xml文件下配置:

<!-- 配置处理器映射器 -->
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />

8).编写jsp视图View

视图文件helloppp.jsp(为什么起一个这么尬的名字,因为这样可用于验证第五步骤的处理器中的setViewName与之是否要一致,答案:是的,要一致)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	登陆成功:${message}<!-- message被映射到处理器Handler,即LoginAction.java文件 -->
</body>
</html>

9).配置视图View解析器

spring-servlet.xml文件下配置:

 <!-- 配置视图View解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 视图文件helloppp.jsp的目录 -->
        <property name="prefix" value="/view/"></property><!-- value="/"代表根目录 -->
       <!--  视图的后缀 -->
    	<property name="suffix" value=".jsp"></property>
    </bean>

10).运行项目

11).可能会遇到的bug及解决之道


举个栗子:
xx类无法加载:java.lang.ClassNotFoundException: org.springframework.web. servlet.DispatcherServle
ClassNotFound****DispatcherServle这里的意思是找不到DispatcherServle
①检查是否正确引入jar包了;
②在jar包文件下,找是否存在这个类,有可能是jar包版本太低;
③找到是哪个文件调用了这个类,检查名字是否写错了;
这里的错,是类的名字没写对。你知道哪里没写对吗?
这个类是在web.xml调用:

<!-- 配置DispatcherServlet -->
		<servlet-class>org.springframework.web.servlet.DispatcherServle</servlet-class>

你看看,就会豁然开朗!

猜你喜欢

转载自blog.csdn.net/weixin_43548748/article/details/95607527