今天学习了SpringMVC如何配置 并且配置成功 暂时测试了以下功能:通过视图解析器访问了JSP界面,以及HTML界面。
(访问不同类型的页面需要配置不同的视图解析器,一开始我并不知道这种情况所以在*-servlet.xml的配置访问JSP视图解析器中的后缀suffix-value中写了.html 导致了报错(No mapping found for HTTP request with URI [/SpringMVCTest/WEB-INF/pages/helloworld.html] in DispatcherServlet with name 'mymvc'
)在网上找了很多解决方案,(大多数都是说包名没写对,或者是Web.xml没有配置正确的)照做后都没成功,最后把,html改成JSP就成功解决了问题。我就想为什么只能是JSP界面,于是度娘搜索得到了上面的结论)
附上一张SpringMVC原理图 。
好的言归正传。下面记录一下SpringMVC配置,(非meaven)
1.所需JAR包(我使用的是实现基本功能所需要的最少JAR包,如果有其他需求请自行下载)
其中freemarker-xx.jar是配置HTML视图所需Jar包。
2.配置web.xml
<servlet>
<servlet-name>mymvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/*-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mymvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
3.配置*-servlet.xml *是自己写的XML的名字。(我的xml全称是mymvc-servlet.xml)
3.1首先是配置你写的处理器(代码)的包的位置
<!-- ①:对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->
<context:component-scan base-package="com.cn.dwq.control"/>
<context:annotation-config/>
3.2然后配置JSP视图解析器
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/pages/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
(prefix代表的是在你项目的目录下WebContent文件夹下路径的前缀,suffix则是你页面的后缀,例如我的项目名是SpringMVCTest
访问WebContent下面的网页的URL是localhost:8080/SpringMVCTest/prefix/xx.suffix | localhost:8080/SpringMVCTest/WEB-INF/pages/xx.jsp)
而实际上 如果在spring-mvc.xml中DispatcherServlet拦截”/”,为了实现REST风格,拦截了所有的请求,那么同时对.html,.js,*.jpg等静态文件的访问也就被拦截了。直接URL访问HTML/jsp是不成功的会被拦截下来。
3.2配置Html视图解析器
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath">
<value>/WEB-INF/pages/</value>
</property>
</bean>
<bean id="htmlviewResolver"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="suffix" value=".html" />
<property name="order" value="0"></property>
<property name="contentType" value="text/html;charset=UTF-8"></property>
</bean>
配置该视图解析器需要freemarker-xx.jar 如果报错需要改变JAR包版本。
配置完之后便可以在处理器(代码)中访问HTML页面了。
4.包的结构以及处理器(代码)
4.1项目的结构图。
4.2LoginControl.java代码
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class LoginControl {
@RequestMapping("/hello")
public String hello(Model model) {
// model.addAttribute("greeting", "Hello Spring MVC");
return"helloworld";
}
@RequestMapping("/hello1")
public String hello1(Model model) {
// model.addAttribute("greeting", "Hello Spring MVC");
return"helloworld1";
}
}
5.测试
5.1打开tomcat Add项目
5.2.输入url发送请求
5.2.1首选是访问JSP页面:http://localhost:8080/SpringMVCTest/hello
结果:
5.2.2访问HTML界面:http://localhost:8080/SpringMVCTest/hello1
结果
好 。今天就记录到这里