书接上文
首先根据各种Spring MVC教程,建立了基础的结构,是否合理不知道,姑且先这样,有问题再解决问题。学习新东西,不能怕掉坑里。。。
查询网上别人的经历说需要把根目录下的lib目录下的所有包,复制到web/WEB-INF/lib下,不然tomcat运行不了,我觉得应该是只有有正确的地址引用,应该不至于会出问题。先不复制,掉坑里再说
下边进行项目配置,打开File->Project Structure,然后选择Modules,再根据下图操作,设置输出目录。我所理解的输出目录类似于.Net里边的bin目录,为什么这东西还得自己配置,不是应该约定好了就是这个目录的吗?
把输出目录配置好之后点击Apply,然后选择Dependencies选项卡。点击+按钮,配置JARs or directories为D:\Spring\lib,就是项目根目录下的Lib目录,别人配置的是Web/WEB-INF/classes/lib,我的这个没有把根lib下的文件复制到这个目录,所以就只想了D:\Spring\lib目录吗,不知道会不会掉坑里。然后把Libraries也加进来,选择Tomcat 8.5.43
添加完成后配置web/WEB-INF目录下的web.xml,主要修改拦截器,让Spring可以拦截所有请求,如下图。web.xml功能与.net 中的web.config功能类似。
xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <context-param> <param-name>contextConfigLocationparam-name> <param-value>/WEB-INF/applicationContext.xmlparam-value> context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class> listener> <servlet> <servlet-name>dispatcherservlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class> <load-on-startup>1load-on-startup> servlet> <servlet-mapping> <servlet-name>dispatcherservlet-name> <url-pattern>/url-pattern> servlet-mapping> web-app>
下边修改WEB-INF/dispatcher-servlet.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" 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.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="cn.webdev.javastudy.controller"/> <mvc:default-servlet-handler/> <mvc:annotation-driven/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> bean> beans>
该配置是视图解析器的路径映射设置,作用就是通过前后缀来让Controller能够找到正确的视图
下面就新建一个Controller,在controller下新建一个HelloSpringMVC.java的文件,返回值为视图的名称。
package cn.webdev.javastudy.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/hello") public class HelloSpringMVC { @RequestMapping("/SpringMVC") public String SpringMVC(Model model) { model.addAttribute("welcome","Hello Spring MVC!, This is My First Spring MVC Page!"); return "hello";//视图文件名,如:hello.jsp } }
然后在/WEB-INF/jsp/下新建一个hello.jsp文件
<%-- Created by IntelliJ IDEA. User: Rick Date: 2019/7/25 Time: 17:45 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Hello Spring MVC!title> head> <body> ${welcome} body> html>
运行,自动打开浏览器,输入http://localhost:8080/hello/SpringMVC
我的第一个SpringMVC程序运行成功