springmvc的入门篇

来源:互联网 发布:域名如何别名解析 编辑:程序博客网 时间:2024/06/04 08:56


SpringMVC的入门篇

1.1. Spring MVC VS Struts2

  • 我们用Struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置Spring3 mvc可以认为已经100%零配置了

  • Spring会比Struts快,在Struts中默认配置了很多缺省的拦截器,在给开发者提供便利的同时,失去了灵活性和人执行效率.

  • Spring mvc是基于方法的设计, 而Sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,可控制更强

  • 设计思想上:Struts更加符合oop的编程思想,Spring是在在Servlet上扩展,使用AOP实现。

  • Intercepter的实现机制:Struts有以自己的interceptor机制,Spring mvc用的是独立的AOP方式. 需要的自己配置,比较麻烦当性能较优,灵活性高.。提供强大的约定大于配置的契约式编程支持

2 环境与入门案例

2.1使用示例

2.1.1创建项目并导入相关jar包

mvc、aop、core相关包

2.1.2创建配置文件

新建spring-mvc.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<beans

xmlns="//www.springframework.org/schema/beans"

xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"

xmlns:p="//www.springframework.org/schema/p"

xsi:schemaLocation="//www.springframework.org/schema/beans //www.springframework.org/schema/beans/spring-beans-3.1.xsd

">

</beans>

2.1.3 配置前端过滤器

org.springframework.web.servlet.DispatcherServlet,继承HttpServlet,需要在Web.xml文件中定义

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.0"

xmlns="//java.sun.com/xml/ns/javaee"

xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="//java.sun.com/xml/ns/javaee

//java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<display-name></display-name>

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

<servlet>

<servlet-name>mvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:spring-mvc.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>mvc</servlet-name>

<url-pattern>*.action</url-pattern>

</servlet-mapping>

</web-app>

2.1.4创建控制器

创建控制器FirstAction.java,实现Controller接口

// action实现Controller接口,并实现handleRequest方法(类似service方法),与JSP内置对象偶合

public class FirstAction implements Controller {

@Override

public ModelAndView handleRequest(HttpServletRequest request,

HttpServletResponse response) throws Exception {

// TODO Auto-generated method stub

System.out.println("传入的数据为");

String userName=request.getParameter("userName");

String pwd=request.getParameter("pwd");

System.out.println("userName:"+userName);

System.out.println("这里可以调用业务层处理业务。");

//封装数据,可以直接使用request对象,也可以使用封装等方式,真正使用时可以选择一种

request.setAttribute("rUserName", userName);

Map<String, String > map=new HashMap<String, String>();

map.put("mUserName",userName);

//返回视图层,如果使用map封装数据,需要作为(第二个)参数传递,也是request作用域。

return new ModelAndView("/jsp/first.jsp",map);

//返回视图层,不传递map。

//return new ModelAndView("/jsp/first.jsp");

//也可以使用如下方式传递,不使用Map,数据一样是request作用域

//return new ModelAndView("/jsp/first.jsp","mUserName",userName);

}

}

2.1.5修改配置文件,添加控制器信息

修改spring-mvc.xm.文件

<?xml version="1.0" encoding="UTF-8"?>

<beans

xmlns="//www.springframework.org/schema/beans"

xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"

xmlns:p="//www.springframework.org/schema/p"

xsi:schemaLocation="//www.springframework.org/schema/beans //www.springframework.org/schema/beans/spring-beans-3.1.xsd

">

<!--

1。配置action,实现controler接口

2。配置映射处理器,用来处理请求与action的映射,可以不用写id,

3。配置视图解析器:完成ModelAndView的解析

缺点:

1。与JSP偶合

2。只支持属性的注入,不支持封闭后对象注入

-->

<!-- 声明bean的name,因为使用了BeanNameUrlHandlerMapping,所以不是定义id,用户调用的URL将通过bean的name匹配 -->

<bean name="/first.action" class="cn.itcast.action.FirstAction" />

<!-- 声明 BeanNameUrlHandlerMapping,使用名称映射-->

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />

<!-- 支持servlet与jsp视图解析,可进行进一步处理,此步可省略, -->

<!-- InternalResourceViewResolver支持servlet与jsp视图解析,没有配置时,默认使用它,此步可省略, -->

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<!-- 可以加前缀或后缀 -->

<!--

<property name="prefix" value="/jsp/"/>

<property name="suffix" value=".jsp"/>

-->

</bean>

2.1.6创建结果展现页面

新建目录jsp及目录下新建first.jsp,用来展现访问结果。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<html>

<head>

<title>My JSP 'index.jsp' starting page</title>

</head>

<body>

这是/jsp/first.jsp页面.<br/>

<!-- 获取并展现控制层传递过来的值 -->

直接通过request传递的值:${requestScope.rUserName}<br/>通过Map传递的值:${requestScope.mUserName}

</body>

</html>

2.1.7编写测试(访问)页面

编写index.jsp用来访问控制器

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<html>

<head>

<title>My JSP 'index.jsp' starting page</title>

</head>

<body>

<a href="first.action?userName=zcf&pwd=admin">firstMVC</a>

</body>

</html>

原创粉丝点击