1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > springmvc请求返回一个字符_Spring MVC框架详解01

springmvc请求返回一个字符_Spring MVC框架详解01

时间:2023-06-04 07:32:54

相关推荐

springmvc请求返回一个字符_Spring MVC框架详解01

SpringMVC是Spring框架的一个模块,Spring和SpringMVC无需通过中间整合层进行整合。SpringMVC是基于MVC架构的WEB框架,SpringMVC与Spring是父子容器之间的关系。

MVC架构:

M model 模型层 包括 pojo层dao层service层V view : 视图层 负责页面的展示C controller:控制器 接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图

SpringMVC请求处理流程:

1. 用户发送请求到服务器,DispatcherServlet 前端控制器进行拦截2.前端控制器会去找处理器映射器(HandlerMapping),处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet 。3.根据处理器映射器返回的处理器,DispatcherServlet 会找“合适”的处理器适配器(HandlerAdapter)4. 后端控制器Handler执行完成之后返回一个ModelAndView对象5.处理器适配器HandlerAdpater会将这个ModelAndView返回前端控制器DispatcherServlet。前端控制器会将ModelAndView对象交给视图解析器ViewResolver。6.视图解析器ViewResolver解析ModelAndView对象之后返回逻辑视图。7. 前端控制器DispatcherServlet对逻辑视图进行渲染(数据填充)之后返回真正的物理View并响应给浏览器。

配置示例:

1.web.xml配置文件

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><!-- <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> --><servlet><!-- 注册前端控制器 --><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 指定 springmvc配置文件的位置--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!-- 设置字符编码过滤器 --><filter><filter-name>encoding</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></filter><filter-mapping><filter-name>encoding</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>

2.springmvc.xml配置文件

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context" xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd/schema/mvc/schema/mvc/spring-mvc.xsd/schema/context /schema/context/spring-context.xsd"><!-- 注册扫描器 --><context:component-scan base-package="com.controller"></context:component-scan><!-- 注册注解驱动 --><mvc:annotation-driven></mvc:annotation-driven><!-- 注解视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- viewClass:JstlView表示JSP模板页面需要使用JSTL标签库,所以classpath中必须包含jstl的相关jar包; --><property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /><!-- 指定前缀 --><property name="prefix" value="/jsp/"></property><!-- 指定后缀 --><property name="suffix" value=".jsp"></property></bean><!-- 放行静态资源 --><mvc:default-servlet-handler/></beans>

3.释放静态资源的三种方式

1.在web.xml中进行以下配置

<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping>

2.在springmvc中进行配置

第一种:

<mvc:default-servlet-handler/>

第二种:

//image/**表示请求路径中有以/imge/开头路径的去/image项目根目录下找<mvc:resources location="/image/" mapping="/image/**"></mvc:resources>

4.中文乱码的2中解决方式

第一种在web.xml文件中配置字符编码过滤器

<!-- 设置字符编码过滤器 --><filter><filter-name>encoding</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></filter><filter-mapping><filter-name>encoding</filter-name><url-pattern>/*</url-pattern></filter-mapping>

第二种(使用@RequestMapping指定属性produces="text/html;charset=utf-8")

@RequestMapping(value="/produces" produces="text/html;charset=utf-8")

4.参数接收

①逐个接收

@Controller //该注解表示将该类交给spring进行管理@RequestMapping("/company") //该注解起到了限定范围的作用public class MyHandler {@RequestMapping("/test")//方法中的参数名需与请求中的参数保持一致public void test(String username,int age){System.out.println(username+":"+age);}}

在不一致的情况使用@RequestParam注解进行解决

②对象接收

@RequestMapping("/hello")//需保证对象中属性与请求参数一致,并提供get和set方法public ModelAndView test(User user){System.out.println(user);ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("user",user);modelAndView.setViewName("welcome");return modelAndView;}

③数组接收

@RequestMapping("/position")//数组的名称和jsp页面中的name值保持一致public void hello(String [] position) {System.out.println(Arrays.toString(position));}

④集合接收(注意要使用@RequestParam注解)

⑤域属性参数接收

jsp中配置(注意name值)

姓名:<input type="text" name="user.name"/><br/>年龄:<input type="text" name="user.age"/><br/>

pojo类

controller

⑥restful风格传参

⑦接收json

jsp:

controller:

⑧获取请求头中的信息

总结:

处理器方法常用的参数(五类)ttpServletRequestHttpServletResponseHttpSession用于承载数据的Model、Map、ModelMap请求中所携带的请求参数

5.返回值类型

①String

@RequestMapping("/string")public String testString(User user,Model model,Map<String, Object> map,ModelMap modelMap) {//往作用域中进行存储数据,可以使用el表达式进行取值model.addAttribute("user", user);map.put("age", 13);modelMap.addAttribute("sex", "男");//表示跳转的页面默认是使用请求转发return "String";}

②void

@RequestMapping("/resp")public void response(HttpServletResponse response) throws IOException {//使用response进行相应response.getWriter().println("test");}

③Object

@RequestMapping(value="/to",produces="text/html;charset=utf-8")@ResponseBody//使用该注解会把返回结果转换成json字符串,放到响应体中,使用时需导入jackson的jar包public Object testObject() {return "china";}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。