今天开始学习Spring MVC,首先,作为福利,把我的学习网站贴出来:https://www.chuanke.com/v2066236-121860-292837.html 本篇文章不作为答疑或者怎样,只是一个学习笔记。
首先,简单介绍一下Spring mvc。Spring MVC是一个MVC框架,通过实现MVC将数据,业务,展现进行分离。Spring MVC是围绕Dispatcher Servlet进行设计的。由servlet负责将请求派发到指定的handler。
在本例中,实现一个简单的Spring MVC工程,功能只有从前台输入数据到后台,经过处理后输入到后台。
1.在eclipse java EE环境下创建dynamic工程,并拷贝jar包。工程选择3.0版本或以下,因为要手动配置或者修改web.xml中的内容
2.配置 web.xml: 配置一个前端控制器。
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
将这些代码写在web.xml中
3.在 web-INF下创建一个spring xml 配置文件,属于spring MVC的配置文件。命名为:【servlet-name】-servlet.xml。在本例中,命名为springmvc-servlet.xml
命名空间添加:mvc,context,beans
4.在springmvc-servlet.xml中进行 handler Mapping 配置,目的是根据beanname找到controller。
<!-- 配置HandlerMapping 根据beanname进行查找 -->
<bean class="org.springframework.web.servlet.mvc.support.ControllerBeanNameHandlerMapping">
</bean>
5.写一个jsp form表单:hello.jsp
<body>
<form action="hello.do">
hello:<input type="text" name="hello">
<input value="提交"type="submit">
</form>
</body>
6创建controller:这里不是创建一个serlvet而是创建一个java类,继承 AbstractController。重写其中的handleRequestInternal方法
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
request.setCharacterEncoding("UTF-8");
String hello = request.getParameter("hello");//获取参数
System.out.println("------"+hello);//后台进行输出
ModelAndView mav = new ModelAndView("index");//创建ModelAndView实例,参数为被传入的页面的name 本例中传入的是index.jsp
mav.addObject("hello", "hello!"+hello); // 将被传入的参数赋值并添加到mav实例
return mav;
}
7.在springmvc-servlet.xml中配置视图解析器:
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/view/"></property>
<!-- 后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
其中,前缀为被传入的jsp页面所在的文件夹,后缀为后缀名
8.编写获取页面index.jsp:
<body>
<h1>${hello}</h1>
</body>
9配置controller:
<!-- 配置controller -->
<bean name="/hello.do" class="com.liukf.springmvc.controller.HelloController"></bean>
</beans>
配置这个的原因是因为在前台是根据name获取的传入对象
<form action="hello.do">
hello:<input type="text" name="hello">
<input value="提交"type="submit">
</form>
调试一下,运行出错,错误为404,这时很可能是web.xml配置出了问题。我的问题是:
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
配置servlet-name时中间有空格,删去就好了。web.xml一定要注意不要出错。