- 浏览: 1588901 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
首先看看非注解的项目结构
在web.xml文件 配置springmvc 转发调度servlet 和 Date 类型参数的自动转型
编写 spring 配置文件 配置 映射处理器 和 控制器 或者 拦截器
然后编写 springmvc的控制器
http://localhost:8080/springmvc-1/hello.do 就可以访问了
采用注解类配置springmvc
在web.xml中配置spring的中央控制器
同时也可以指定初始化参数 设定 spring配置文件的路径
编写 springmvc-servlet.xml文件
编写控制器(类似struts里面的action)
下面有
传统的请求
有异步请求
文件上传 (注意添加jar和配置 文件上传解析器)
重定向请求
多个控制器的相互引用
自定义拦截器
两个参数实体类
几个jsp
form.jsp
在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>
评论
1 楼
long_ltoy
2015-08-31
在使用注解方式的配置中,其实是比XML配置少了映射处理器是吗。CONTROLLER中的注解就是代替了映射处理器。
如果不用注解的话,每写一个ACTION,都要在映射处理器中配置一个action方法
目前我只发现这一个不同点。。不知道说的对不对。
如果不用注解的话,每写一个ACTION,都要在映射处理器中配置一个action方法
目前我只发现这一个不同点。。不知道说的对不对。
发表评论
-
spring-session 中的坑
2017-07-06 15:34 9994spring-session 配置 依赖 gradle ... -
Spring AspectJ Aop Annotation
2017-03-29 17:08 707import org.aspectj.lang.Proce ... -
spring 第13天 使用@scheduled注解执行定时任务
2015-01-06 23:11 54081我们使用spring的注解 @Scheduled 执行定时任务 ... -
Spring 第12天,事务传播属性和 隔离级别
2014-09-28 00:36 8131 事务的传播属性(Propagation) 1) REQ ... -
spring 第11天 quartz任务调度
2014-08-24 13:59 1143Quartz是一个强大的企业级任务调度框架,Spring中继承 ... -
spring 第10 天 AOP 面向切面
2014-08-21 00:08 1750AOP(Aspect Orient Programming ... -
spring 第9天 Resurce 资源访问
2014-08-17 22:20 1865Spring Resource接口 spring提供的Reso ... -
spring 第8天 Spring 注解
2014-08-17 15:33 1472spring注解 @Component:标注一个普通的sp ... -
spring 第7天 Bean,BeanFactory处理器,配置器
2014-08-16 21:46 1236spring 两种后处理器 第一种,Bean 后处理器 对容器 ... -
spring 第6天SpEL,P命名空间,Util Schema
2014-08-13 22:52 1312使用p名称空间配置属性 ... -
spring 第5天不同作用域的bean,注入Field,方法返回值
2014-08-11 22:31 2111协调作用域不同步的bean 问题是;当一个singleton的 ... -
spring 第4天bean继承,init,destory-method
2014-08-10 17:54 1649深入理解Spring容器中的b ... -
spring 第3天使用java类和XML配置bean
2014-08-09 16:51 1505下面采用java类来配置bean,前面都采用xml进行配置be ... -
spring 第2天,bean作用域,自动注入集合
2014-08-06 22:16 1932sping容器中的Bean <!---beans的全 ... -
spring 第1天 IOC,DI,国际化,容器事件
2014-08-04 21:27 13951.构造注入(就是使用 构 ... -
详解spring 每个jar的作用
2013-11-19 23:54 3909spring.jar 是包含有完整 ... -
Spring配置Hibernate事务
2013-11-10 13:45 1216为了保证数据的一致性,在编程的时候往往需要引入事务这个概念。事 ... -
Spring 中引用Properties文件
2013-08-29 14:39 10653其中部分配置信息(邮件发送相关): #邮件发送的相关配置 ... -
Spring IOC控制反转 依赖注入DI
2012-12-15 09:37 2328目录 1.使用IOC控制反转 中的DI依赖注入 手工注入 ... -
Spring IOC控制反转 依赖注入DI
2012-12-14 16:23 8目录 1.使用IOC控制反转 中的DI依赖注入 (两种配置方式 ...
相关推荐
Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建RESTful应用程序提供了强大的支持。这个资源包可能包含了...通过对比注解和非注解的实现,你可以更好地理解Spring MVC的工作原理,并选择最适合你的开发风格。
本教程将深入探讨Spring MVC中的注解和非注解方式,帮助开发者更好地理解和运用这两种方法。 ### 一、注解方式 注解在Spring MVC中扮演了关键角色,它们允许开发者无需编写大量的XML配置文件,从而提高代码的...
在这个"springmvc注解简单实例"中,我们将深入探讨Spring MVC中的一些关键注解,以及它们在DAO层、Service层和Controller层中的应用。让我们逐一解析这些层面的注解使用。 首先,我们来到**DAO层**。在Spring MVC中...
在这个"springmvc注解版 helloworld"项目中,我们将深入探讨如何使用注解来配置和实现一个简单的Hello World应用。这个项目特别适合初学者入门,因为每个步骤都有详细的注释,确保你能理解每一行代码的作用。 首先...
SpringMVC注解驱动的控制器详解,具体效果与过程看博文 http://blog.csdn.net/evankaka/article/details/45562951
springMVC 注解模式 完整事例 小例子 完整的小例子 放在eclipse或者myeclipse就直接可以运行的 包含简单的增删改查 上传文件 导出excle等小功能 登录验证等 简单实用 初学者首选
本篇文章将深入探讨Spring MVC框架中注解和非注解的实现方式,并对比它们的差异,以帮助你理解注解的优势。 ### 一、非注解实现 在Spring MVC早期版本中,非注解方式是主要的配置方法。这通常涉及XML配置文件,如`...
在本文中,我们将详细地解释 SpringMVC 中常用的注解标签,包括@Controller、@RequestMapping、@Resource 和@Autowired 等。 1. @Controller @Controller 是 SpringMVC 中最基本的注解之一,该注解用于标记一个类...
虽然现在的最佳实践倾向于使用注解和Spring Boot,但理解非注解方式有助于深入学习这些框架的工作原理,对提升开发技能有长远的帮助。在实践中,你可能会遇到如何处理异常、如何进行事务管理、如何优化查询性能等...
综上所述,"springMVC注解+ security + redis 实例"的学习资料将涵盖这些技术的基本用法和整合方式,帮助开发者掌握如何构建一个安全、高效的Web应用。通过这个实例,你可以了解到如何在Spring MVC应用中使用注解...
03springmvc注解驱动开发的servlet3.0初始化配置类.avi
SpringMVC注解开发是Java Web开发中一种高效的方式,它极大地简化了控制器的定义和请求处理。在SpringMVC框架中,`@Controller`注解用于标识一个类作为处理HTTP请求的控制器。这个注解使得类中的方法可以被SpringMVC...
下面将详细介绍 Spring MVC 中的关键注解和其工作原理。 1. **@Controller**:这是 Spring MVC 中的核心注解,标记在一个类上表示该类是一个控制器,负责处理来自客户端的请求。控制器类通常包含多个处理方法,每个...
在“springMVC 注解版”中,我们将主要关注如何使用注解来简化 Spring MVC 的配置和开发过程。 在传统的 Spring MVC 中,我们需要通过 XML 配置文件来声明控制器、模型、视图等组件,但随着注解的引入,我们可以...
【SpringMvc注解详解】 SpringMvc 是 Spring 框架的一部分,主要负责处理 Web 请求。在 SpringMVC 中,注解扮演着至关重要的角色,它们简化了代码并减少了配置。以下是一些常用的 SpringMVC 注解及其详细解释: 1....
### SpringMVC注解@RequestParam详解 #### 一、引言 在现代Web开发中,SpringMVC框架因其灵活且强大的特性被广泛应用于构建企业级应用。其中,`@RequestParam`注解作为处理HTTP请求参数的核心工具之一,在实现前后...
SpringMVC和MyBatis是两个非常流行的Java Web开发框架,SpringMVC作为控制器层,负责处理HTTP请求,而MyBatis则是一个轻量级的...在实际项目中,可以根据需求选择注解或非注解方式,以达到最佳的代码可读性和维护性。
总结来说,"基于SpringMVC注解的简单例子"涉及到的关键知识点有:Spring MVC的基本架构、Controller的定义和请求映射、DispatcherServlet的配置、视图解析以及与数据库的交互。通过注解的方式,我们可以简洁、直观地...
【JavaEE SpringMVC注解框架例子】 SpringMVC是JavaEE开发中广泛使用的轻量级Web MVC框架,它提供了一种模型-视图-控制器(MVC)的设计模式,帮助开发者有效地组织和处理Web应用的请求和响应。在这个例子中,我们将...