搭建步驟:html
1.加入jar包java
2.在web.xml中dispatcherservletweb
3.加入Spring MVC 配置文件spring
4.編寫請求處理器並標識爲控制器apache
5.編寫視圖tomcat
1.新建Dynamic Web Project文件(主要勾選,可自動生成web.xml)服務器
2.將mvc jar 加入mvc
3.配置核心控制器 dispatcherservlet(安裝插件,自動生成,見上篇)app
web.xmljsp
<init-param>
<param-name>classpath:springmvc.xml</param-name>
<param-value>location</param-value>
</init-param>
初始化參數配置:classpath:springmvc.xml,路徑設置爲classpath下的springmvc.xml
配置當前servlet映射,<url-pattern>/</url-pattern>因此請求都經過springmvc.xml,並被dispatcherservlet所處理。
代碼:
<?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"> <!-- The front controller of this Spring Web application, responsible for handling all application requests --> <servlet> <servlet-name>springDispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>classpath:springmvc.xml</param-name> <param-value>location</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- Map all requests to the DispatcherServlet for handling --> <servlet-mapping> <servlet-name>springDispatcherServlet</servlet-name> <url-pattern>url</url-pattern> </servlet-mapping> </web-app>
3.在類路徑下面設置springmvc.xml配置文件,與初始化參數中的名稱保持一致。
別忘記加入context包
物理視圖:真實存在的文件
邏輯視圖:經過視圖解析器(類)解析成物理視圖
邏輯視圖爲hello,尋找到的爲/hello.jsp
<?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" 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.3.xsd"> <context:component-scan base-package="com.ex.handler"></context:component-scan> <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
4.創建index.jsp
請求某個控制器,並響應
會出現問題:Multiple annotations found at this line:
- The superclass "javax.servlet.http.HttpServlet" was not found on the Java
Build Path
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!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=ISO-8859-1"> <title>Insert title here</title> </head> <body> <a href="hello">hello world</a> </body> </html>
解決辦法:https://blog.csdn.net/sinat_16381803/article/details/46888585
個人服務器是8.0,就是沒有添加服務器的問題
5.建一個普通的java類在src下,包名能夠本身隨意發揮
package com.ex.handler; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class helloworldhandler { /** * 控制器處理請求的業務方法名稱 * public string 方法名稱(){ * * } * 若是方法是公有的,而且暫時是string類型,就能夠接受請求,處理相應 * string:當前方法處理完畢後,因此返回的邏輯視圖名稱 * */ @RequestMapping(value="/hello") public String hello() { System.out.println("歡迎走進spring MVC,你建立的第一個方法成功了"); return "success"; } }
而後就能夠運行了!啦啦啦
然而出現了問題,,,,
root cause org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/springDispatcherServlet-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/springDispatcherServlet-servlet.xml] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:343) org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303) org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:187) org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:223) org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:194) org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:133) org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:621) org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:522) org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:672) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:638) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:686) org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:554) org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:499) org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:172) javax.servlet.GenericServlet.init(GenericServlet.java:158) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:748) root cause java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/springDispatcherServlet-servlet.xml] org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:159) org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:329) org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303) org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:187) org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:223) org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:194) org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:133) org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:621) org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:522) org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:672) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:638) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:686) org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:554) org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:499) org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:172) javax.servlet.GenericServlet.init(GenericServlet.java:158) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:748) note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.
查了不少答案,最後的解決方法爲:
index.jsp和success.jsp的位置問題,index.jsp在WebContent文件夾下,success.jsp在WEB-INF文件下。
而後出現了index.jsp的界面,可是點超連接仍是500,氣人不,,,,,
後來發現個人web.xml文件寫錯了,,,,,因此dispatcherservlet處理不了請求
<init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param>
而後就成功了!!!!
ps:若是還有500問題也有多是服務器和jdk版本的問題,個人解決方法是:
window-preferences-server-Runtime Environment-edit
jre選擇第一個,我開始用的我本身的jdk,就一直出問題,,而後通過一步步的艱辛,終於運行出來第一個程序,感受環境搭建有的時候挺難的還很致命,因此,,解決了環境問題,接下來就是專心學習spring MVC啦啦啦,巨開森!!!