以前一直都是用的ssh做项目,MVC这个当然就主要用的struts,初次学习springMVC,这里参考网上资料,对springMVC做一些学习记录:
Spring MVC与Struts2两者的比较:
Spring MVC相对来说要轻量级些,它 是基于方法设计,而 Sturts2 是基于类, 每次发一次请求都会实例一个 Action。
Spring MVC 使用更加简洁, 开发效率 Spring MVC 确实比 struts2 高:springMVC支持 JSR303, 处理 ajax 的请求更方便。
Struts2 的 OGNL 表达式使页面的开发效率相比 Spring MVC 更高些。
就两者来说,都是controller层的框架,作用都是接收request请求,中间调用业务逻辑代码,最后返回reponse响应,不用刻意远离SSH,也不用一味追求Spring MVC。总之,合适的就是最好的。
搭建SpringMVC步骤:
1.引入jar包;
2.编写controller相关的代码;
package controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import service.ITestService;
@Controller //类似Struts的Action
public class TestController {
@Autowired
private ITestService testService;
@RequestMapping(value="/test1") // 请求url地址映射,类似Struts的action-mapping
@ResponseBody //@responsebody表示该方法的返回结果直接写入HTTP response body中一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。
public String test1(@RequestParam(value = "paramname",required = true)String test){
//@RequestParam是指请求url地址映射中必须含有的参数(除非属性required=false),可简写为:@RequestParam("paramname")
return testService.test();
}
}
3.编写springMVC配置文件spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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"
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">
<!-- 自动扫描bean,把作了注解的类转换为bean -->
<context:component-scan base-package="controller"></context:component-scan>
<!-- 配置返回类型 -->
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!-- 对转向页面的路径解析 controller方法返回的字符串解析,如:返回的loginSuccess字符串,则跳转到/WEB-INF/views/loginSuccess.jsp页面,<span style="font-family: Arial, Helvetica, sans-serif;">@ResponseBody 加了除外</span><span style="font-family: Arial, Helvetica, sans-serif;">--></span>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="100"
p:viewClass="org.springframework.web.servlet.view.JstlView" p:prefix="/WEB-INF/views/" p:suffix=".jsp"/>
</beans>
4.配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- =======================================配置文件=================================== -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/spring-*.xml
</param-value>
</context-param>
<!-- ====================sring ContextLoaderListener监听器========================= -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- ====================调度用servlet========================= -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 请求分发控制器 -->
<!-- 可以自定义servlet.xml配置文件的位置和名称,默认为WEB-INF目录下,名称为[<servlet-name>]-servlet.xml,如springmvc-servlet.xml-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/config/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
5.发布项目,开始访问:http://ip:port/projectname/test1?paramname=test