`

SpringMVC 二 :controller

阅读更多

环境搭建好后就是Controller的编写了

1 可以通过继承AbstractController,实现protected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp)方法,访问这个Controller,默认访问这个方法【此方法就相当Strust2的execute()方法】

在[servlet-name]-servlet.xml中注册这个bean,<bean name="xxx.xxx" class = "这个类的全限定名" />

通过url xxx.xxx访问这个controller

2 @Controller注解,实际开发中基本上也都是这种方式

 2.1 基本形式

 

@RequestMapping(value="/findUser",method=RequestMethod.GET)
public String findUser(@RequestParam String username){
	System.out.println("username is "+username);
	return "example";	//视图名称
}

 @RequestParam注解:url中?后面必须带username,否则会报错404,如果不加这个注解也可以起到同样    的作用,容错性要高。

 

 return 返回的就是视图名称 ,会根据[dispatcherservlet-name]-servlet.xml中resolver跳转到对应的视图。

 2.2 返回ModelAndView

 

@RequestMapping(value="/findUser",method = RequestMethod.POST)
public ModelAndView findUser(User user){
	ModelAndView mv = new ModelAndView("user");	//返回ModelAndView形式,试图名称在这里写
	mv.addObject("user", user); //通过"user"取值
	mv.addObject(user);//通过user类型取值
	return mv;	//返回ModelAndView
}

  在user.jsp中可以取到user对象

 

  2.3 关于Bean中有Date类型的属性: 通过@InitBinder

@RequestMapping("/todate")
public ModelAndView toDate(Date date){
     ModelAndView mv = new ModelAndView("user");
     mv.addObject("today", "2016-04-19");
     mv.addObject(date);
     return mv;
}
//由于请求过来的url中的参数都是String类型,所以当Bean中有Date的时候会自动将String转换为Date
@InitBinder
public void initBinder(ServletRequestDataBinder binder){
     binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
}

   3 controller返回数据给JSP

   3.1 通过Map向页面传递参数

        

@RequestMapping(value="/show",method=RequestMethod.GET)
public String showUser(Map<String,Object> map){
	User user = new User("tomcat","tomcat",11);
	map.put("user", user);
	return "show";
}
	
@RequestMapping("/getuser")
public void getPerson(String username,PrintWriter pw){
	pw.write("hello : "+username);
}

    和普通方式一样, 第二个方法和Map方式返回数据无关,顺手贴上去

    3.2 file upload:

    jsp页面:

<form action="user/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file"><br>  type和name都必须是file
    <input type="submit" value="submit">
</form>

   controller中:

@RequestMapping("/upload")
public ModelAndView uploadFile(HttpServletRequest req,ModelAndView mv) throws Exception{
	logger.info(">>>>>>>>>上传文件开始.........");
	MultipartHttpServletRequest mulReq = (MultipartHttpServletRequest)req;
	MultipartFile file = mulReq.getFile("file");//jsp中name="file"
	String originalFilename = file.getOriginalFilename();
	String newFileName = originalFilename.substring(0,originalFilename.lastIndexOf('.'));
	SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
	FileOutputStream fos = new FileOutputStream("D:/app/"+newFileName+"_"+sdf.format(new Date())); //文件存储位置
	fos.write(file.getBytes());
	fos.flush();
	fos.close();
	logger.error(">>>>>>>>>上传文件出错.......");
	return mv;
}

   4 通过Model 将数据返回给jsp

@RequestMapping(value="/list",method=RequestMethod.GET)
public String listUser(Model model){
	logger.info(">>>>>>>>>进入userList方法......");
	model.addAttribute("users", users);	
	return "user/list";
}

jsp中

<c:forEach items="${users }" var="user">
     <a href="${pageContext.request.contextPath }/user/${user.value.username }">${user.value.username }</a>---${user.value.pwd }---${user.value.age }<br>
</c:forEach>

5 springmvc的restful形式 @PathVariable注解

   

@RequestMapping(value="/{username}",method=RequestMethod.GET)
public String showUser(@PathVariable String username,Model model){
	logger.info(">>>>>>>>>进入showUser方法......");
	model.addAttribute("user", users.get(username));
	logger.error(">>>>>>>>>查询用户失败.........");
	return "user/show";
}

要在controller中的获取request、response、sesison 只需要以形参的实行引入即可

文中的日志可以不管,是随手加上去的,没有实际意义

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    SpringMVC项目:ALL

    JavaWeb框架——SpringMVC学习过程前端控制器、视图解析器@Controller@RequestMapping(value、method、params)获取请求参数域对象共享数据视图前缀RESTFul文件上传下载拦截器Interceptor异常处理Excepton

    springmvc_controller_01

    在这个名为 "springmvc_controller_01" 的资源包中,我们很可能会找到关于如何配置和使用 Spring MVC 中的 Controller 的相关信息。下面我们将深入探讨 Spring MVC Controller 的核心概念、配置以及它在实际应用中的...

    SpringMVC纯注解配置

    在传统的SpringMVC应用中,我们需要在`web.xml`中声明DispatcherServlet,并在Spring的配置文件中定义Controller、Service、Repository等组件。然而,随着Java注解的发展,SpringMVC允许我们使用注解来替代这些XML...

    SpringMVC项目接口Controller demo,入门参考

    本项目提供了一个Controller demo,是SpringMVC入门学习的理想参考资料。 在SpringMVC中,Controller扮演着核心角色,它负责接收HTTP请求,处理业务逻辑,并将结果转发给视图进行渲染。Controller类通常会使用`@...

    SpringMVC URL 与 Controller 方法 初始化 源码赏析.vsdx

    SpringMVC URL 与 Controller 方法初始化源码流程 Visio 文档 文档可以直接通过Visio进行编辑,方便二次修改、学习

    看透SpringMVC:源代码分析与实践

    《看透SpringMVC:源代码分析与实践》是一本深度剖析Spring MVC框架的专业书籍,旨在帮助读者深入了解Spring MVC的工作原理,并通过源代码分析提升实际开发能力。Spring MVC是Spring框架的一部分,它为构建Web应用...

    SpringMVC:生成Excel和PDF

    在IT行业中,SpringMVC是一个广泛使用的Web应用框架,它为开发者提供了强大的MVC(Model-View-Controller)设计模式支持。这篇博文“SpringMVC:生成Excel和PDF”主要探讨了如何在SpringMVC应用中创建并导出两种常见...

    跟开涛学SpringMVC(4.3)Controller接

    《跟开涛学SpringMVC(4.3)Controller接口控制器详解》是针对Java开发者的一份深入学习资料,主要探讨了SpringMVC框架中的Controller组件。SpringMVC是Spring框架的一部分,专门用于处理Web应用程序的请求和响应。...

    SpringMVC:整合JQUERY与JSON

    - **Model-View-Controller**:设计模式,SpringMVC遵循此模式,模型处理业务逻辑,视图负责展示,控制器协调两者。 - **@Controller和@RequestMapping**:用于标记控制器类和处理方法,定义请求映射。 - **...

    使用SpringMVC进行数据的传送,数据来自mysql数据库 (1)没有使用hibernate

    2. **Model-View-Controller**:SpringMVC中的模型由业务对象组成,视图负责展示数据,而控制器则处理用户请求,调用业务逻辑并更新模型。 **二、数据库连接** 1. **JDBC连接**: 不使用Hibernate时,我们会直接...

    SpringMVC controller

    SpringMVC通过将Web层设计成MVC(Model-View-Controller)模式,可以使得前后端代码分离,增强程序的可维护性和可扩展性。 首先,SpringMVC作为Spring框架的一部分,继承了Spring的诸多优点,例如依赖注入(DI)和...

    springMVC基本配置(Controller+Service+Dao)

    在SpringMVC中,我们使用`@Controller`注解来标识一个类作为控制器。例如,你可以创建一个名为`HelloController`的类,并添加`@RequestMapping`注解来处理特定的URL请求。如下所示: ```java @Controller public...

    springmvc框架搭建,已测试

    SpringMVC是Spring框架的一部分,专门用于构建Web应用程序。它是一个模型-视图-控制器(MVC)架构的实现,提供了强大的数据绑定、验证和处理HTTP请求的能力。在这个"springmvc框架搭建,已测试"的项目中,我们可以...

    黑马程序员SpringMVC课堂笔记

    二、SpringMVC第一天课堂笔记 `springmvc第一天课堂笔记.docx`可能涵盖了SpringMVC的基础概念和环境搭建。这包括: 1. SpringMVC简介:解释SpringMVC的架构,以及它如何与其他Spring模块协作。 2. 搭建环境:讲解...

    SpringMVC编程使用Controller接口实现控制器实例代码

    SpringMVC编程使用Controller接口实现控制器实例代码 SpringMVC是一个基于MVC模式的Web应用程序框架,它提供了一个灵活的方式来开发Web应用程序。在SpringMVC中,控制器(Controller)扮演着核心角色,负责处理用户...

    springMVC如何将controller中数据传递到jsp页面

    在Spring MVC框架中,将Controller中的数据传递到JSP页面是常见的操作,这涉及到视图解析和模型数据的绑定。以下是一些详细的方法: 1. **使用`ModelAndView`对象**: `ModelAndView`是Spring MVC中用于封装模型...

    springmvc入门小项目:CRUD

    在这个"springmvc 入门小项目:CRUD"中,我们将探讨如何使用 SpringMVC 实现基本的数据库操作,即创建(Create)、读取(Read)、更新(Update)和删除(Delete)数据。 1. **SpringMVC 框架基础** - **...

    跟开涛学SpringMVC(4.6)Controller接

    在本课程"跟开涛学SpringMVC(4.6)Controller接"中,我们将深入探讨SpringMVC框架中的Controller接口控制器。这个部分是SpringMVC核心组件之一,用于处理HTTP请求并返回响应。Controller接口提供了将用户请求映射到...

    SpringMVC面试专题及答案.pdf

    - **单例模式**:SpringMVC 中的 Controller 默认是单例模式,这意味着所有的请求都将由同一个实例处理。 - **线程安全问题**:由于多个线程可能同时访问同一实例,因此可能会导致线程安全问题。 - **解决方案**:...

    spring mybatis springmvc整合jar包总和

    - 控制器处理:创建SpringMVC的Controller类,通过@Autowired注解注入Service层,调用业务方法,处理HTTP请求。 - 视图渲染:Controller处理完请求后,返回一个ModelAndView对象,其中包含模型数据和视图名称,...

Global site tag (gtag.js) - Google Analytics