`

基于注解方式的Spring MVC实例(2011.4.13)

阅读更多

接着昨天,今天又写了一个基于注解的spring mvc的例子,里面也存在很多的疑问,欢迎大家解答,非常感谢!不多说,直接上码了.

web.xml

<servlet>
		<servlet-name>DispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:applicationContext.xml</param-value>
		</init-param>
	<load-on-startup>0</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>DispatcherServlet</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

 

applicationContext.xml

<!-- 让Spring启用对annotation的支持 -->
	<context:annotation-config></context:annotation-config>

    <!--<bean id="multipartResolver"    
       class="org.springframework.web.multipart.commons.CommonsMultipartResolver"    
       p:defaultEncoding="utf-8" />-->
	<bean id="login" class="org.yonge.model.Login"></bean>
	<!--<bean id="loginAction" class="org.yonge.action.LoginController"></bean>-->
	
	<!--   下面的配置可以读取hibernate.properties文件内容
	<context:property-placeholder location="classpath:/hibernate.properties" />	
	-->
	
	<!-- 为什么下面的定义都可以不需要? -->
	<!-- 自动扫描org.yonge路径下的所有文件,并根据注解完成注入的工作 -->
	<context:component-scan base-package="org.yonge"></context:component-scan>

	<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->    
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
    
    <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->    
    <bean id="ViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/"></property> <!-- 视图文件的前缀 --> 
		<property name="suffix" value=".jsp"></property> <!-- 视图文件的后缀名 --> 
		<!-- view是用什么显示,这里是jsp,还可以用velocity之类的 -->
		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>  
	</bean>

 

控制器

@Controller
//@Scope("prototype")
@RequestMapping("/loginAction.do")
public class LoginController {

	@Resource(name="login")  //根据名称注入
	@Autowired   //自动装配,如果没有,Login对象中的属性是不会注入
	private Login login;
	//不用下面的get/set方法也可以自动注入
	public Login getLogin() {
		return login;
	}

	public void setLogin(Login login) {
		this.login = login;
	}

//	@RequestMapping()  //注意:方法上必须要有此注解,
							//否则会抛异常:javax.servlet.ServletException: No adapter for handler [org.yonge.action.LoginController@10202aa]: 
							//Does your handler implement a supported interface like Controller?

	public String load(HttpServletRequest request, ModelMap modelMap, Login login)
	{
//		modelMap.put("userName", request.getParameter("userName"));
//		modelMap.put("passWord", request.getParameter("passWord"));
		System.out.println("userName:"+login.getUserName());
		System.out.println("passWord:"+login.getPassWord());
		modelMap.put("loginModel", login);
		return "ok";
	}
	
	public String load(ModelMap modelMap)
	{
		return "ok";
	}
	@RequestMapping()
	public String load(HttpServletRequest request, ModelMap modelMap)
	{
//		modelMap.put("userName", request.getParameter("userName"));
//		modelMap.put("passWord", request.getParameter("passWord"));
		System.out.println("Login Object:"+login.toString());
		System.out.println("userName:"+login.getUserName());
		System.out.println("passWord:"+login.getPassWord());
		modelMap.put("loginModel", login);
		return "ok";
	}

//	@RequestMapping()  //如果用注解,此方法为什么不能运行    异常信息: argument type mismatch
	//如果不用注解的形式,此方法是可以正常执行的
	protected ModelAndView onSubmit(HttpServletRequest request,
			HttpServletResponse response, Object command, BindException errors)
			throws Exception {
		System.out.println("注解形式,执行4个参数方法");
		Login login=(Login) command;
		System.out.println("UserName:"+login.getUserName());
		System.out.println("PassWord:"+login.getPassWord());
		//第一种传值及显示
//		request.setAttribute("userName", login.getUserName());
//		request.setAttribute("passWord", login.getPassWord());
//		return new ModelAndView("ok");
		//第二种传值及显示
//		return new ModelAndView("ok","loginModel",login);
		//第三种传值及显示
		Map mapModel=new HashMap();
		mapModel.put("loginModel", login);
		return new ModelAndView("ok",mapModel);
	}
	
	
}

 

首页

<form action="./loginAction.do" method="get">
	  	<table align="center" width="50%" border="0">
	  		<tr>
	  			<td>UserName:</td>
	  			<td>
	  				<input type="text" name="userName">
	  			</td>
	  		</tr>
	  		<tr>
	  			<td>PassWord:</td>
	  			<td>
	  				<input type="text" name="passWord">
	  			</td>
	  		</tr>
	  		<tr>
	  			<td colspan="2">
	  				<input type="submit"" value="提交">
	  			</td>
	  		</tr>
	  	</table>  		
  	</form>

 

跳转页面

<body><!--
  	登录成功!!!
  	UserName:${userName }
  	PassWord:${passWord } -->
  	UserName:${loginModel.userName }
  	PassWord:${loginModel.passWord }
  </body>

 

Model

public class Login {

	private String userName;
	private String passWord;
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassWord() {
		return passWord;
	}
	public void setPassWord(String passWord) {
		this.passWord = passWord;
	}
}

 

疑问:

1、控制器中处理请求的方法,有哪些定义形式?

2、applicationContext.xml文件中至少需要定义些什么内容?什么时候需要定义上面所说的?

 

感受:

1、如果熟练,开发速度较快

2、太过灵活

分享到:
评论
6 楼 jayyunfei 2012-04-25  
用了注解了,applicationContext.xml还要定义什么吗?关于controller应该不用定义了吧?
还有就是我怎么执行不了login.jsp我把这个页面放在webcontent中然后run on server报错说是找不到页面~~~~
5 楼 jayyunfei 2012-04-25  
那为什么你的类中有几个方法么有注解?
4 楼 yonge812 2012-04-24  
jayyunfei 写道
controller中的方法不用@RequestMapping 注解是不是就一次执行?

不用应该找不到方法吧?
3 楼 jayyunfei 2012-04-24  
controller中的方法不用@RequestMapping 注解是不是就一次执行?
2 楼 summer1433 2011-04-15  
是很灵活,你找个英文文档看看就知道了。
1 楼 coollifer 2011-04-13  
太过灵活...

相关推荐

    Spring MVC 基于注解实例

    Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...

    IT学习者Spring MVC注解实例.pdf

    IT学习者Spring MVC注解实例.pdf

    spring-mvc-4.2.xsd.zip

    例如,`&lt;mvc:annotation-driven&gt;`元素用于启用基于注解的控制器支持,这意味着Spring MVC会自动扫描并处理带有`@Controller`注解的类。而`&lt;context:component-scan&gt;`则用于扫描指定包下的所有类,自动发现带有`@...

    spring mvc spring4.x hibernate4.注解方式注入

    总的来说,Spring MVC、Spring 4.x和Hibernate 4的注解方式注入大大简化了开发过程,提高了代码的可读性和可维护性。开发者可以通过注解轻松地定义和管理组件之间的关系,降低了项目的复杂度,提升了开发效率。在...

    spring.jar spring-webmvc-struts.jar spring-webmvc.jar

    4. **Struts集成**:如果使用了spring-webmvc-struts.jar,需要了解如何在Struts和Spring之间进行交互,如使用Spring的Bean管理Struts的动作(Action)类。 5. **Web开发**:掌握如何创建RESTful API,处理HTTP请求...

    spring MVC配置详解

    Spring MVC 是一个基于 DispatcherServlet 的 MVC 框架,它是当前主流的 Web 框架之一。要想灵活运用 Spring MVC 来应对大多数的 Web 开发,就必须要掌握它的配置及原理。 一、Spring MVC 环境搭建 1. jar 包引入 ...

    spring-web-5.2.3.RELEASE和spring-webmvc-5.2.3.RELEASE

    Spring Web MVC的注解驱动能力使得控制器的编写更加简洁。比如,@RequestMapping注解可以用来映射URL到特定的方法,@GetMapping和@PostMapping等用于处理HTTP的GET和POST请求。@RequestParam用于获取请求参数,而...

    基于注解的Spring_3.0.x_MVC

    基于注解的 Spring 3.0.x MVC 是指在 Spring 3.0.x 中使用基于注解的方式来配置和实现 MVC 模式的应用程序。这种方式不同于传统的 XML 配置文件方式,而是使用 Java 注解来标注 Bean 的定义和依赖关系。 在基于注解...

    使用 Spring 2.5 基于注解驱动的 Spring MVC.doc

    本文将深入探讨这些注解的使用,帮助开发者理解如何利用注解配置替代传统的基于 XML 的 Spring MVC 配置。 首先,让我们关注 `@Controller` 注解。在 Java 类定义前添加 `@Controller` 注解,标记该类为 Spring MVC...

    spring mvc + spring + hibernate 全注解整合开发视频教程 06.haozip03

    spring mvc + spring + hibernate 全注解整合开发视频教程 06.haozip03

    spring-webmvc-struts.jar

    3. **StrutsModelDrivenAdapter**和**StrutsRequestMappingHandlerAdapter**:这两个适配器类分别对应于ModelDriven和RequestMapping注解的处理,使得Struts的Action类可以直接利用Spring MVC的这些特性。...

    spring3.0MVC注解(附实例).

    标题与描述中的关键词“spring3.0MVC注解”指向了Spring框架中关于MVC架构的注解驱动功能,这是Spring3.0版本引入的重要特性之一,旨在简化Web应用程序的开发过程,使得开发者能够更加专注于业务逻辑而非框架本身。...

    详解Spring mvc的web.xml配置说明

    在构建基于Spring MVC的Web应用程序时,`web.xml`配置文件扮演着至关重要的角色。它定义了应用程序的行为,包括启动时的初始化、请求处理以及中间件的设置。下面我们将详细探讨`web.xml`中涉及Spring MVC的主要配置...

    基于注解的 Spring MVC 简单入门

    在本文中,我们将深入探讨基于注解的Spring MVC的简单入门。Spring MVC是Spring框架的一个模块,主要用于构建Web应用程序,提供了强大的MVC(Model-View-Controller)设计模式支持。通过注解,开发者可以简化配置,...

    Spring4Spring-MVc.rar_mvc4_spring4_spring4 mvc_www.mvn3

    本资源"Spring4Spring-MVc.rar"提供了一个基于Maven3、Spring4和Spring MVC 4的整合模板,旨在帮助开发者快速搭建一个高效、可扩展的Web应用程序。 1. **Spring MVC 4**:Spring MVC是Spring框架的一部分,用于构建...

    基于注解的Spring MVC demo

    【基于注解的Spring MVC demo】是一个用于演示和学习如何在Spring MVC框架中使用注解进行Web应用开发的实例。Spring MVC是Spring框架的一部分,它为构建基于Java的Web应用程序提供了一个模型-视图-控制器(MVC)架构...

    Spring 2.5 基于注解驱动的 Spring MVC.docx

    总结,Spring 2.5 引入的基于注解的 Spring MVC 配置极大地简化了开发流程,提高了开发效率,降低了维护成本。通过注解,我们可以快速地定义控制器、处理请求、注入依赖,使得代码结构更加清晰,也更容易理解和维护...

    基于注解的spring mvc

    基于注解的Spring MVC是一种流行的Java Web开发框架,它极大地简化了控制器的配置和处理请求的方式。本节将深入探讨Spring MVC的注解驱动机制、基础配置以及控制器的返回值分析。 首先,让我们来看看Spring MVC的...

Global site tag (gtag.js) - Google Analytics