`
Luob.
  • 浏览: 1592176 次
  • 来自: 上海
社区版块
存档分类
最新评论

SpringMVC 注解 和非注解

阅读更多
首先看看非注解的项目结构


在web.xml文件 配置springmvc 转发调度servlet 和 Date 类型参数的自动转型
<?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">
	<display-name></display-name>

	<!-- 中央控制器 -->
	<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>


	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>



编写 spring 配置文件 配置 映射处理器 和 控制器 或者 拦截器
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    xmlns="http://www.springframework.org/schema/beans"  
    xmlns:mvc="http://www.springframework.org/schema/mvc"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:aop="http://www.springframework.org/schema/aop"  
    xmlns:tx="http://www.springframework.org/schema/tx"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
	    http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
	    http://www.springframework.org/schema/mvc
	    http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
	    http://www.springframework.org/schema/context
	    http://www.springframework.org/schema/context/spring-context-3.1.xsd 
	    http://www.springframework.org/schema/aop  
	    http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 
	    http://www.springframework.org/schema/tx 
	    http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
		
		<!-- 映射处理器之间是独立的,相互不影响 -->
		
		<!-- 默认的映射处理器  -->
		<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
		
		<!-- 简单URL的映射处理器 -->
		<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
			<property name="mappings">
				<props>
					<prop key="/hello2.do">testController</prop>
				</props>
			</property>
		</bean>
		
		<!-- 控制器类名映射处理器 (注意:类名首字母消息.例如:http://192.168.0.88/springmvc-1/testController.do) -->
		<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
		
		<!--配置controller,handlerMapping,ViewResolver,interceptor  -->
		<!--使用默认的映射处理器来映射 controller -->
		<bean id="testController" class="cn.sh.springmvc.TestController" name="/hello.do"/>
		
                <!--视图解析器-->
		<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
			<!-- webroot到一指定文件夹文件路径 -->
			<property name="prefix" value="/WEB-INF/jsp/"/>
			<!-- 视图名称后缀  -->
			<property name="suffix" value=".jsp"/>
		</bean>
</beans> 


然后编写 springmvc的控制器
package cn.sh.springmvc;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class TestController extends AbstractController {

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest arg0,
			HttpServletResponse arg1) throws Exception {
		
		System.out.println("hello springmvc");
		return new ModelAndView("homepage/index");
	}

}

http://localhost:8080/springmvc-1/hello.do 就可以访问了


采用注解类配置springmvc


在web.xml中配置spring的中央控制器
同时也可以指定初始化参数  设定 spring配置文件的路径
<?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">
	<display-name></display-name>

	<!-- 中央控制器 -->
	<servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<!-- 如果不把springmvc-serlvet.xml放在 web-inf 放在 src/config/下面的话就需要在这里指定配置文件的路径-->
		<init-param>
			<param-name>contextConfigLoaction</param-name>
			<param-value>classpath:springmvc.xml</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>


编写 springmvc-servlet.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    xmlns="http://www.springframework.org/schema/beans"  
    xmlns:mvc="http://www.springframework.org/schema/mvc"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:aop="http://www.springframework.org/schema/aop"  
    xmlns:tx="http://www.springframework.org/schema/tx"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
	    http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
	    http://www.springframework.org/schema/mvc
	    http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
	    http://www.springframework.org/schema/context
	    http://www.springframework.org/schema/context/spring-context-3.1.xsd 
	    http://www.springframework.org/schema/aop  
	    http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 
	    http://www.springframework.org/schema/tx 
	    http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
		
		<!-- mvc的注解驱动 -->
		<mvc:annotation-driven/>
		<!-- 一旦有扫描器的定义mvc:annotation-driven可以不需要,扫描器已经有了注解驱动的功能 -->
		<context:component-scan base-package="cn.sh.springmvc"/>
	
		<!-- 视图解析器 -->
		<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
			<!-- webroot到一指定文件夹文件路径 -->
			<property name="prefix" value="/WEB-INF/jsp/"/>
			<!-- 视图名称后缀  -->
			<property name="suffix" value=".jsp"/>
		</bean>
		
		<!-- 文件上传解析器 id:必须是这个-->
		<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
			<!-- 文件上传最大值,以 bit为单位  --> 
			<property name="maxUploadSize" value="1024000"></property>
		</bean>
		
               <!-- 指定一个拦截器 对用户的请求 异常 或者视图进行 一些处理-->  
		<mvc:interceptors>
			<mvc:interceptor>
				<!--某一模块拦截: /myPath/** ,拦截所有的请求: /** -->
				<mvc:mapping path="/**"/>
				<bean class="cn.sh.springmvc.interceptor.MyInterceptor">
				</bean>
			</mvc:interceptor>
		
		</mvc:interceptors>
</beans> 


编写控制器(类似struts里面的action)
下面有
传统的请求
有异步请求
文件上传 (注意添加jar和配置 文件上传解析器)
重定向请求
package cn.sh.springmvc;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import org.springframework.web.servlet.ModelAndView;

import cn.sh.springmvc.model.Person;
import cn.sh.springmvc.model.User;

@Controller  //用来标注但欠累是springmvc的控制层类
@RequestMapping("/homepage")  //类是 struts2中的namespace
public class TestController{

	@RequestMapping("/hello.do")  //用来访问控制方法的注解
	public String hello(){
		System.out.println("注解成功");
		return "homepage/index";
	}

	
	//参数的传递  
	/**
	 * 方式一:HttpServletRequest
	 * @param request
	 * @return
	 */
	@RequestMapping("/toPesron.do")
	public String toPerson(HttpServletRequest request){
		String result=request.getParameter("name");
		System.out.println(result);
		return "homepage/index";
	}
	
	/**
	 * 方式二:将要传递的参数定义在方法中 而且 会自动转类型
	 * @param name
	 * @param age
	 * @return
	 */
	@RequestMapping("/toPesron1.do")
	public String toPerson1(String name,Integer age,Date birthday){  //定义 参数名也可以了
		System.out.println(name);
		System.out.println(age);
		System.out.println(birthday);
		return "homepage/index";
	}
	
	/**
	 * 传递参数的 名字必须要与实体类的属性set方法后面的字符串匹配才能接受参数,首字母大小写不区分
	 * 请求中传递的参数只要是能和参数列表里面的变量名或者实体里面的set后面字符串匹配的上就能接受到
	 * @param person
	 * @return
	 */
	@RequestMapping("/toPesron2.do")
	public String toPerson2(Person person,User user){  //定义 参数名也可以了
		System.out.println(person);
		System.out.println(user);
		return "homepage/index";
	}
	
	/**
	 * 数组结构
	 * @param name
	 * @return
	 */
	@RequestMapping("/toPerson3.do")
	public String upload(String[] name){  //定义 参数名也可以了
		System.out.println(Arrays.toString(name));
		return "homepage/index";
	}
	
	/**
	 * 将数据传递到 jsp页面去
	 * 不建议使用
	 * @throws ParseException 
	 */
	@RequestMapping("/toPerson4.do")
	public ModelAndView toPerson4() throws ParseException{
		Person person=new Person();
		person.setName("james");
		person.setAge(28);
		person.setAddress("maiami");
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		Date birthday=sdf.parse("1985-01-22");
		person.setBirthday(birthday);
		Map<String, Object> map=new HashMap<String, Object>();
		map.put("p",person);
		return new ModelAndView("index",map);
	}
	/**
	 * 不建议使用
	 * @param map
	 * @return
	 * @throws ParseException
	 */
	@RequestMapping("/toPerson5.do")
	public String toPerson5(Map<String, Object> map) throws ParseException{
		Person person=new Person();
		person.setName("james");
		person.setAge(28);
		person.setAddress("maiami");
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		Date birthday=sdf.parse("1985-01-22");
		person.setBirthday(birthday);
		map.put("p",person);
		return "index";
	}
	
	/**
	 * 建议使用
	 * @param model
	 * @return
	 * @throws ParseException
	 */
	@RequestMapping("/toPerson6.do")
	public String toPerson6(Model model) throws ParseException{
		Person person=new Person();
		person.setName("james");
		person.setAge(28);
		person.setAddress("maiami");
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		Date birthday=sdf.parse("1985-01-22");
		person.setBirthday(birthday);
		model.addAttribute("p", person);
		return "index";
	}
	
	/**
	 * 不建议使用
	 * @param name
	 * @param response
	 * @throws ParseException
	 */
	@RequestMapping("/ajax.do")
	public void ajax(String name,HttpServletResponse response) throws ParseException{
		String result="hello"+name; 
		try {
			response.getWriter().write(result);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 建议使用
	 * @param name
	 * @param out
	 * @throws ParseException
	 */
	@RequestMapping("/ajax1.do")
	public void ajax1(String name,PrintWriter out) throws ParseException{
		String result="hello"+name; 
		try {
			out.print(result);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	@RequestMapping("/toajax.do")
	public String toajax() throws ParseException{
		return "ajax";
	}
	
	@RequestMapping("/toFrom.do")
	public String toFrom() throws ParseException{
		return "form";
	}
	
	@RequestMapping(value="/toPerson7.do",method=RequestMethod.POST)
	public String toPerson7(Person person){  //定义 参数名也可以了
		System.out.println(person);
		return "homepage/index";
	}
	
	@RequestMapping(value="/toPerson8.do",method=RequestMethod.POST)
	public String toPerson8(Person person,HttpServletRequest request) throws FileNotFoundException{  //定义 参数名也可以了
		System.out.println(person);
		MultipartHttpServletRequest rm=(MultipartHttpServletRequest)request;
		CommonsMultipartFile cfile=(CommonsMultipartFile)rm.getFile("image");// input的名称
		byte[] bfile=cfile.getBytes();
		String fileName="";
		SimpleDateFormat format=new SimpleDateFormat("yyyyMMddHHmmssSSS");
		fileName=format.format(new Date());
		fileName+=(int)(Math.random()*1000);  //3位随机数
		
		//文件全名称
		String origFileName=cfile.getOriginalFilename();
		
		//文件后缀
		String suffix=origFileName.substring(origFileName.lastIndexOf("."));
		
		//项目的部署路径
		String path=request.getSession().getServletContext().getRealPath("/");
		System.out.println(path);
		System.out.println(request.getServletPath());
		
		OutputStream out=new FileOutputStream(new File(path+"/upload/"+fileName+suffix));
		try {
			out.write(bfile);
			out.flush();
			out.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "homepage/index";
	}
	
	
	@RequestMapping("/redtoFrom.do")
	public String redirectToFrom() throws ParseException{
		return "redirect:toFrom.do"; //可以在前面加上 namespace;
	}
	
	@RequestMapping("/redtoFrom1.do")
	public String redirectToFrom1() throws ParseException{
		// "/"表示从根目录开始找 
		return "redirect:/test/toFrom.do"; //可以在前面加上 namespace;
	}
	
	/**
	 * 注册时间类型的属性编辑器
	 * @param binder
	 */
	@InitBinder
	public void initBinder(ServletRequestDataBinder binder){
		//注意 2012-12-02 和 2012-22-12(将变成 2013-10-12 做进制转换) 
		binder.registerCustomEditor(Date.class,
				new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"), true));
		
	}
}


多个控制器的相互引用
package cn.sh.springmvc;

import java.text.ParseException;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller  //用来标注但欠累是springmvc的控制层类
@RequestMapping("/test")  //类是 struts2中的namespace
public class TestController1{
	
	@RequestMapping("/toFrom.do")
	public String toFrom() throws ParseException{
		return "form";
	}
}



自定义拦截器
package cn.sh.springmvc.interceptor;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class MyInterceptor implements HandlerInterceptor {

	/**
	 * 执行时间:视图解析完毕
	 * 主要做一些监控的处理  比如 :异常  类是 try  catch 后面的 finally
	 */
	public void afterCompletion(HttpServletRequest arg0,
			HttpServletResponse arg1, Object arg2, Exception ex)
			throws Exception {
		System.out.println("afterCompletion");
		ex.printStackTrace();

	}

	/**
	 * 执行时机:control 执行完, 视图解析没有把页面解析成页面
	 * 可以对视图做统一修改 主要提现在model上面(可以统一为 某个视图 添加头和尾 )
	 */
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
			Object arg2, ModelAndView mv) throws Exception {
		System.out.println("postHandle....");
		Map<String,Object> map=mv.getModel();
		map.put("test", "append something");
	}

	/**前置拦截
	 * 执行时机:在control之前执行
	 * true:拦截通过 表示可以访问control
	 * false:不可以访问control
	 * Object: 访问的control 的类的对象
	 * 可以做权限 校验和控制
	 */
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,
			Object arg2) throws Exception {
		System.out.println("preHandle....");
		return true;
	}

}


两个参数实体类
package cn.sh.springmvc.model;

import java.util.Date;

public class User {

	private String name;
	private Integer age;
	private String address;
	private Date birthday;
	
	//get set ..
	@Override
	public String toString() {
		return this.name+"/"+this.age+"/"+this.address+"/"+this.birthday;
	}
	
}
package cn.sh.springmvc.model;

import java.util.Date;

public class Person {

	private String name;
	private Integer age;
	private String address;
	private Date birthday;
	
	//get set...
	@Override
	public String toString() {
		return this.name+"/"+this.age+"/"+this.address+"/"+this.birthday;
	}
}


几个jsp
form.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
<script type="text/javascript" src="js/jquery.js"></script>

<script type="text/javascript">
		$(function(){
			$("#mybutton").click(
				function(){
					$.ajax({
						url:"homepage/ajax1.do",
						type:"POST",	
						dataType:"text",
						data:{
							name:"zhangh"
						},
						success:function(responseText){
							alert(responseText);
						},
						error:function(){
							alert("system error");
						}
					});	
				}		
			);
		});
	
	</script>
  </head>
  
  <body>
    <form action="homepage/toPerson8.do" method="post"  enctype="multipart/form-data">
    	name:<input name="name"><br/>
    	age:<input name="age"><br/>
    	address:<input name="address"><br/>
    	birthday:<input name="birthday"><br/>
    	file:<input type="file" name="image"><br/>
    	<input type="submit" value="submit">
    </form>
<input type="button" id="mybutton" value="click">
  </body>
</html>



  • 大小: 70.9 KB
  • 大小: 90.9 KB
分享到:
评论
1 楼 long_ltoy 2015-08-31  
在使用注解方式的配置中,其实是比XML配置少了映射处理器是吗。CONTROLLER中的注解就是代替了映射处理器。
如果不用注解的话,每写一个ACTION,都要在映射处理器中配置一个action方法

目前我只发现这一个不同点。。不知道说的对不对。

相关推荐

    springMVC注解和非注解demo

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建RESTful应用程序提供了强大的支持。这个资源包可能包含了...通过对比注解和非注解的实现,你可以更好地理解Spring MVC的工作原理,并选择最适合你的开发风格。

    SpringMVC 注解和非注解demo

    本教程将深入探讨Spring MVC中的注解和非注解方式,帮助开发者更好地理解和运用这两种方法。 ### 一、注解方式 注解在Spring MVC中扮演了关键角色,它们允许开发者无需编写大量的XML配置文件,从而提高代码的...

    springmvc注解简单实例

    在这个"springmvc注解简单实例"中,我们将深入探讨Spring MVC中的一些关键注解,以及它们在DAO层、Service层和Controller层中的应用。让我们逐一解析这些层面的注解使用。 首先,我们来到**DAO层**。在Spring MVC中...

    springmvc注解版 helloworld

    在这个"springmvc注解版 helloworld"项目中,我们将深入探讨如何使用注解来配置和实现一个简单的Hello World应用。这个项目特别适合初学者入门,因为每个步骤都有详细的注释,确保你能理解每一行代码的作用。 首先...

    SpringMVC注解驱动的控制器详解

    SpringMVC注解驱动的控制器详解,具体效果与过程看博文 http://blog.csdn.net/evankaka/article/details/45562951

    springMVC 注解模式 完整事例 小例子

    springMVC 注解模式 完整事例 小例子 完整的小例子 放在eclipse或者myeclipse就直接可以运行的 包含简单的增删改查 上传文件 导出excle等小功能 登录验证等 简单实用 初学者首选

    springmvc框架注解和非注解实现

    本篇文章将深入探讨Spring MVC框架中注解和非注解的实现方式,并对比它们的差异,以帮助你理解注解的优势。 ### 一、非注解实现 在Spring MVC早期版本中,非注解方式是主要的配置方法。这通常涉及XML配置文件,如`...

    springmvc常用注解标签详解

    在本文中,我们将详细地解释 SpringMVC 中常用的注解标签,包括@Controller、@RequestMapping、@Resource 和@Autowired 等。 1. @Controller @Controller 是 SpringMVC 中最基本的注解之一,该注解用于标记一个类...

    非注解Springmvc+spring+hibernate 入门实例

    虽然现在的最佳实践倾向于使用注解和Spring Boot,但理解非注解方式有助于深入学习这些框架的工作原理,对提升开发技能有长远的帮助。在实践中,你可能会遇到如何处理异常、如何进行事务管理、如何优化查询性能等...

    springMVC注解+ security + redis 实例

    综上所述,"springMVC注解+ security + redis 实例"的学习资料将涵盖这些技术的基本用法和整合方式,帮助开发者掌握如何构建一个安全、高效的Web应用。通过这个实例,你可以了解到如何在Spring MVC应用中使用注解...

    03springmvc注解驱动开发的servlet3.0初始化配置类.avi

    03springmvc注解驱动开发的servlet3.0初始化配置类.avi

    SpringMVC注解开发的详解.doc

    SpringMVC注解开发是Java Web开发中一种高效的方式,它极大地简化了控制器的定义和请求处理。在SpringMVC框架中,`@Controller`注解用于标识一个类作为处理HTTP请求的控制器。这个注解使得类中的方法可以被SpringMVC...

    SPRINGMVC 注解范例程序

    下面将详细介绍 Spring MVC 中的关键注解和其工作原理。 1. **@Controller**:这是 Spring MVC 中的核心注解,标记在一个类上表示该类是一个控制器,负责处理来自客户端的请求。控制器类通常包含多个处理方法,每个...

    springMVC 注解版

    在“springMVC 注解版”中,我们将主要关注如何使用注解来简化 Spring MVC 的配置和开发过程。 在传统的 Spring MVC 中,我们需要通过 XML 配置文件来声明控制器、模型、视图等组件,但随着注解的引入,我们可以...

    SpringMvc注解详解

    【SpringMvc注解详解】 SpringMvc 是 Spring 框架的一部分,主要负责处理 Web 请求。在 SpringMVC 中,注解扮演着至关重要的角色,它们简化了代码并减少了配置。以下是一些常用的 SpringMVC 注解及其详细解释: 1....

    SpringMVC注解

    ### SpringMVC注解@RequestParam详解 #### 一、引言 在现代Web开发中,SpringMVC框架因其灵活且强大的特性被广泛应用于构建企业级应用。其中,`@RequestParam`注解作为处理HTTP请求参数的核心工具之一,在实现前后...

    springmvc和mybatis框架整合(注解和非注解)

    SpringMVC和MyBatis是两个非常流行的Java Web开发框架,SpringMVC作为控制器层,负责处理HTTP请求,而MyBatis则是一个轻量级的...在实际项目中,可以根据需求选择注解或非注解方式,以达到最佳的代码可读性和维护性。

    基于springMVC注解的简单例子

    总结来说,"基于SpringMVC注解的简单例子"涉及到的关键知识点有:Spring MVC的基本架构、Controller的定义和请求映射、DispatcherServlet的配置、视图解析以及与数据库的交互。通过注解的方式,我们可以简洁、直观地...

    JavaEE SpringMVC注解框架例子.rar

    【JavaEE SpringMVC注解框架例子】 SpringMVC是JavaEE开发中广泛使用的轻量级Web MVC框架,它提供了一种模型-视图-控制器(MVC)的设计模式,帮助开发者有效地组织和处理Web应用的请求和响应。在这个例子中,我们将...

Global site tag (gtag.js) - Google Analytics