Spring mcv 框架 浅谈

   spring mvc :


   spring mvc 提供了对web的支持。spring的这种支持使得spring可以像其他web层的框架一样搭建web层应用!


   spring mvc 核心技术主要围绕分发器(DispatcherServlet)来实现,它可以将请求分发到不同的处理器,由控制器完成控制分发工作!


   实现步骤:


   a、添加框架,注意勾选spring3.0 web library


   b、在web.xml文件中,注册DispatcherServlet


      dispatcherServlet 会默认寻找web-inf 路径下的myServlet-servlet.xml!我们将此路径重定向到spring的配置文件classes/applicationContext.xml!  



第一种:(每个action类只能实现一个.do的请求,应为spring的配置文件里面没有指定什么请求进什么方法,一般种不常用)


web.xml的内容配置:


 

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

    <init-param>
      <!-- 配置DispatchServlet读取spring配置文件 -->
      <param-name>contextConfigLocation</param-name>
       <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
    </init-param>

  </servlet>
  
  <servlet-mapping>
    <servlet-name>myServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>



  <!-- 通过过滤器设置编码集合 ,防止后台拿前台参数乱码-->
   <filter>  
       <filter-name>springUtf8Encoding</filter-name>  
       <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
       <init-param>  
           <param-name>encoding</param-name>  
           <param-value>UTF-8</param-value>  
       </init-param>  
       <init-param>  
           <param-name>forceEncoding</param-name>  
           <param-value>true</param-value>  
       </init-param>   
    </filter>  
    <filter-mapping>  
       <filter-name>springUtf8Encoding</filter-name>  
       <url-pattern>/*</url-pattern>  
   </filter-mapping>

前台页面index:

<body>
	<form method="post" action="login.do">
		<p>
			用户名:
			<input type="text" name="username">
		</p>
		<p>
			 密  码:
			<input type="password" name="password">
		</p>
		<p>
			<input type="submit" value="提交" name="button1">
		</p>
	</form>

</body>



spring的配置文件 applicationContext.xml的配置:


<bean name="/login.do" class="com.spring.mvc.UserAction"></bean>




后台Action类的写法:

//实现一个Controller接口

 

public class UserAction implements Controller {


	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		System.out.println("登录成功");
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		System.out.println(username + " " + password);
		ModelAndView mv = new ModelAndView("a.jsp", "msg", "登录成功");
		return mv ;
	}


   }




第二种:(springmvc实现多请求进入同一个action)


web.xml  配置:


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

    <init-param>
      <!-- 配置DispatchServlet读取spring配置文件 -->
      <param-name>contextConfigLocation</param-name>
       <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
    </init-param>

  </servlet>
  
  <servlet-mapping>
    <servlet-name>myServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>



  <!-- 通过过滤器设置编码集合 ,防止后台拿前台参数乱码-->
   <filter>  
       <filter-name>springUtf8Encoding</filter-name>  
       <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
       <init-param>  
           <param-name>encoding</param-name>  
           <param-value>UTF-8</param-value>  
       </init-param>  
       <init-param>  
           <param-name>forceEncoding</param-name>  
           <param-value>true</param-value>  
       </init-param>   
    </filter>  
    <filter-mapping>  
       <filter-name>springUtf8Encoding</filter-name>  
       <url-pattern>/*</url-pattern>  
   </filter-mapping>



前台页面index:

<body>
     <a href="login.do?function=A">登录</a>
     <a href="login.do?function=B">注册</a>
     <a href="login.do?function=C">退出</a>
  </body>



spring的配置文件 applicationContext.xml的配置:


<pre name="code" class="html" style="font-size:14px;"> 
<bean name="/login.do" class="com.spring.mvc.EmpAction">

<!-- 根据function所对应的值查找到类中方法名和该值一致的方法 --> <property name="methodNameResolver"> <ref bean="myMethodName"/> </property> </bean> <!-- 根据url得到function所对应的值 --> <bean name="myMethodName" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> <property name="paramName"> <value>function</value> </property>
</bean>

 

   EmpAction类:

      <pre name="code" class="java"><pre name="code" class="java">       //继承一个MultiActionController类
 public class EmpAction extends MultiActionController {public ModelAndView A(HttpServletRequest request,HttpServletResponse response) throws Exception { System.out.println("登录成功");return null ;}public ModelAndView B(HttpServletRequest request,HttpServletResponse response) throws Exception {System.out.println("注册成功");return null ;}public ModelAndView C(HttpServletRequest request,HttpServletResponse response) throws Exception {System.out.println("退出成功");return null ;} } 
 


知识点:

spring中容器创建对象的方式:

1.默认是调用默认的构造方法

2.利用静态工厂方法来创建(spring调用工厂方法产生对象,但是真正创建对象还是由程序员来完成)

3.实力工厂方法

说明:spring配置文件中,只要是一个bean就会为该bean创建对象

spring容器创建对象的时机(在单例情况下):

1.在默认的情况下,启动spring容器创建对象

2.在spring的配置文件bean中有一个属性lazy-init="default/true/false"

①如果lazy-init="default/false",则在启动spring容器时创建对象

②如果lazy-init="true",则在context.getBean()时创建对象

意义:第一种情况下可以启动spring容器的时候,检查spring容器的排配置文件的正确性,如果再结合tomcat,如果tomcat不能正常启动,则整个spring容器就不能正常 动。但是这样有一个缺点,把一些bean过早的放到了内存中,如果有数据,则对内存来说是一种消耗。

 第二种情况,可以减少内存的消耗,但是不太容易发现问题。

spring的bean中的scope

1.由spring产生的bean默认是单例的

2.可以在spring的配置文件中,scope的值进行修改“singleton/prototype/request/session/global session”

3.如果spring配置文件中的scope为“prototype”,则在得到该bean才创建对象

spring容器对象的生命周期:

1.spring容器创建对象

2.执行init方法

3.调用自己的方法

4.当spring容器关闭的时候执行destroy方法



spring的DI:依赖注入,给属性赋值

springDI的说明:

1.如果spring的配置文件中的bean没有<constructor-arg>该元素,则调用默认的构造函数

2.如果spring的配置文件中的bean有<constructor-arg>该元素,则该元素调用唯一的构造函数

index--->代表参数的位置是从0开始的

type--->代表参数的类型

value--->给基本类型赋值的

ref--->给引用类型赋值的

springIOC和DI的意义:实现了完全的面向接口编程







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
去几年,REST逐渐成为影响Web框架、Web协议与Web应用设计的重要概念。如果你还不了解REST,那这个简短的介绍将有助你快速掌握REST,此外还可以点击这里了解关于REST的更多信息。 相关厂商内容 高速下载:Adobe Flash Builder 4 简体中文正式版 for Windows 高速下载:Adobe Flash Builder 4 简体中文正式版 for Mac 利用Flex SDK创建易于访问的Adobe AIR应用程序 Adobe和英特尔联手推新服务帮助开发者发行AIR应用 构建更加完善的Adobe AIR应用程序之十大秘诀 相关赞助商 汇集最新RIA技术相关资源,提供Flash开发平台相关工具高速下载,免费获得Adobe软件的产品序列号。 现在有越来越多的公司希望能以简单而又贴合Web架构本身的方式公开Web API,因此REST变得越来越重要也就不足为奇了。使用Ajax进行通信的富浏览器端也在朝这个目标不断迈进。这个架构原则提升了万维网的可伸缩性,无论何种应用都能从该原则中受益无穷。 JAX-RS(JSR 311)指的是Java API for RESTful Web Services,Roy Fielding也参与了JAX-RS的制订,他在自己的博士论文中定义了REST。对于那些想要构建RESTful Web Services的开发者来说,JAX-RS给出了不同于JAX-WS(JSR-224)的另一种解决方案。目前共有4种JAX-RS实现,所有这些实现都支持Spring,Jersey则是JAX-RS的参考实现,也是本文所用的实现。 如果你使用Spring进行开发,那可能想知道(或者有人曾问过你)Spring MVC与JAX-RS有何异同点?更进一步,如果你手头有一个Spring MVC应用,使用了控制类继承(SimpleFormController等),你可能还意识不到现在的Spring MVC对REST广泛的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值