㈠ spring mvc 的工作流程是什么
Spring Web MVC 处理Http请求的大致过程:一旦Http请求到来,DispatcherSevlet将负责将请求分发。DispatcherServlet可以认为是Spring提供的前端控制器,所有的请求都有经过它来统一分发。在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具体的Controller。HandlerMapping是这样一种对象,它能够完成客户请求到Controller之间的映射。在Struts中,这种映射是通过struts-config.xml文件完成的。其中,Spring为Controller接口提供了若干实现,例如Spring默认使用的BeanNameUrlHandlerMapping。还有,SimpleUrlHandlerMapping,CommonsPathMapHandlerMapping。Spring Controller将处理来自DispatcherServlet的请求。Spring的Controller类似于struts的Action,能够接受HttpServletRequest和HttpServletResponse。Spring为Controller接口提供了若干实现类,位于org.springframework.web.servlet.mvc包中。由于Controller需要为并发用户处理上述请求,因此实现Controller接口时,必须保证线程安全并且可重用。Controller将处理客户请求,这和Struts Action 扮演的角色是一致的。一旦Controller处理完客户请求,则返回ModelAndView对象给DispatcherServlet前端控制器。ModelAndView中包含了模型(Model)和视图(View)。从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;从微观角度考虑,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型和视图。前端控制器返回的视图可以是视图的逻辑名,或者实现了View接口的对象。View对象能够渲染客户响应结果。其中,ModelAndView中的模型能够供渲染View时使用。借助于Map对象能够存储模型。如果ModelAndView返回的视图只是逻辑名,则需要借助Spring提供的视图解析器(ViewResoler)在Web应用中查找View对象,从而将响应结果渲染给客户。DispatcherServlet将View对象渲染出的结果返回个客户。
㈡ springmvc 文件下载报错 getOutputStream() has already been called for this response
使用struts2 进行文件下载是,总报错:java.lang.IllegalStateException: getOutputStream() has already been called for this respons解决办法:把对应的action的返回设置为空,即可轻松解决。例如:public class DownloadFileAction extends ActionSupport implementsServletRequestAware, ServletResponseAware {/*** */private static final long serialVersionUID = -7448748577778248376L;private HttpServletRequest request;private HttpServletResponse response;private String savePath;@Overridepublic String execute() throws Exception {String fileName=request.getParameter("fileName");String fullPath=getSavePath()+"//"+fileName;fileName=new String(fileName.getBytes("utf-8"),"iso-8859-1");InputStream is=new FileInputStream(fullPath);int len=0;byte []buffers=new byte[1024];response.reset();response.setContentType("application/x-msdownload");response.addHeader("Content-Disposition", "attachment;filename=\""+fileName+"\"");OutputStream os = null;//把文件内容通过输出流打印到页面上供下载while((len=is.read(buffers))!=-1){os=response.getOutputStream();os.write(buffers, 0, len); }is.close();os.flush();//return SUCCESS; //会报错:java.lang.IllegalStateException: getOutputStream() has already been called for this responsreturn null;//ok}public void setServletRequest(HttpServletRequest req) {this.request=req;}public void setServletResponse(HttpServletResponse resp) {this.response=resp;}@SuppressWarnings("deprecation")public String getSavePath() {return request.getRealPath(savePath);}public void setSavePath(String savePath) {this.savePath = savePath;}}
㈢ 如何实现springmvc将返回的给前端的pdf文件放在浏览器里预览
1,在web路径下建立一个uploadFiles文件夹。
2,在springMVC里映射文件就像映射静态文件那样。
<mvc:resources mapping="/pdf/**" location="/uploadFiles/"/>
3,写个controller返回PDF的URL路径。
@Controller@CrossOrigin(origins = "*")public class PDFController { @ResponseBody @RequestMapping(value = "/pdf", method = RequestMethod.GET) public String pdfDownload() throws IOException { String retString = null; String dir = XXXX文件在服务器中路径。 String path = httpServletRequest.getRequestURL() + dir.substring(dir.lastIndexOf('\')); retString = path.replaceAll("\\","/"); Map<String,Object >map = new HashMap<>(); map.put("code",0); map.put("pdf",retString); return jsON.toJSONString(map); }}
4,返回的JSON数据。
{"code":0,"pdf":"8080/pdf/1472128890165sample.pdf"},前面加上http://127.0.0.1:。
5,浏览器中直接打开pdf这个url就可以预览PDF啦。
㈣ SpringMVC中通过response返回值判断操作
返回到JSP后然后用流的方式删除文件只需要得到路径就好
/***根据路径删除指定的目录或文件,无论存在与否*@paramsPath要删除的目录或文件*@return删除成功返回true,否则返回false。*/publicbooleanDeleteFolder(StringsPath){flag=false;file=newFile(sPath);//判断目录或文件是否存在if(!file.exists()){//不存在返回falsereturnflag;}else{//判断是否为文件if(file.isFile()){//为文件时调用删除文件方法returndeleteFile(sPath);}else{//为目录时调用删除目录方法returndeleteDirectory(sPath);}}}
㈤ springmvc工作流程是
springmvc工作流程如下。
客户端发送请求;核心控制器Dispatcher Servlet接收到请求,通过系统或映射器配置找到对应的handler,并将控制器controller返回给核心控制器。
通过核心控制器找到系统或默认的适配器;由找到的适配器,调用实现对应接口的处理器,并将结果返回给适配器,再由适配器返回给核心控制器。
核心控制器将获取的数据和视图结合的对象传递给视图解析器,获取并且解析得到的结果,并由视图解析器响应给核心控制器;核心控制器最后将结果返回给客户端。
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建Web应用程序的全功能 MVC 模块。
使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等等。
㈥ springmvc怎么获取文件的输入流
springmvc 中controller获取ajax数据的方法:1、页面jsp代码:<table style="width: 100%" class="table" cellspacing="1" cellpadding="1" border="0"><tr><td class="ti1" colSpan="2">请选择审讯室</td></tr><tr><td class="ti2hui">审讯室名称</td><td class="ti1cu"><select id="roomid" name="roomid" ><c:forEach items="${roomlist}" var="room"><option value ="${room.id}">${room.name}</option></c:forEach></select></td></tr><tr><td class="ti2hui" colSpan="2" align="center"><input type="button" onclick="setshow()" value="确定"/> </td></tr></table>点击确定后触发ajax接口:function setshow(){ $.ajax( {type : "POST",url : "<%=request.getContextPath()%>/initroom.do?method=set",data : {'room' : $("#roomid").find('option:selected').text(),'roomid' :$("#roomid").val()},dataType: "json",success : function(data) {if(data.success){alert("设置成功!");}else{alert("设置失败!");}},error :function(){alert("网络连接出错!");} }); } 2、后台controller写法: @RequestMapping(params = "method=set")public void jump(HttpSession session,HttpServletRequest request, HttpServletResponse response) throws Exception{String roomid= request.getParameter("roomid");String room= request.getParameter("room");session.setAttribute("ROOMID", roomid);session.setAttribute("ROOMNAME", room);System.out.println("session set:"+room+"=="+roomid);response.setCharacterEncoding("utf-8");response.getWriter().write("{\"success\":true }");response.getWriter().flush();}3、springmvc 返回信息到ajax:import com.googlecode.jsonplugin.JSONUtil;List<Records> recordList = new ArrayList<Records>();//获取recordlist操作省略response.setCharacterEncoding("utf-8");response.getWriter().write("{\"success\":true, \"data\":" + JSONUtil.serialize(recordList) + "}");response.getWriter().flush();
㈦ springMVC 返回json数据 前台jquery easyui 接受json却提示 下载update.action
<!– 当springMVC-servlet.xml中使用<mvc:annotation-driven />时,如果是3.1之前已经默认注入,3.1之后默认注入RequestMappingHandlerAdapter默认情况下 会设置content为application/json,在IE9返回会出现提示下载的现象,出现这种情况可以手动指定头信息为"text/html",或者"*/*"(所有,不确定就设这个)–> <beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"p:ignoreDefaultModelOnRedirect="true"><property name="messageConverters"><list><beanclass="org.springframework.http.converter.json."p:supportedMediaTypes="text/html" /></list></property></bean>
㈧ springmvc中函数的返回值有哪些
返回到JSP后然后用流的方式删除文件只需要得到路径就好<pre t="code" l="java"> /*** 根据路径删除指定的目录或文件,无论存在与否*@param sPath 要删除的目录或文件*@return 删除成功返回 true,否则返回 false。*/public boolean DeleteFolder(String sPath) {flag = false;file = new File(sPath);// 判断目录或文件是否存在if (!file.exists()) { // 不存在返回 falsereturn flag;} else {// 判断是否为文件if (file.isFile()) { // 为文件时调用删除文件方法return deleteFile(sPath);} else { // 为目录时调用删除目录方法return deleteDirectory(sPath);}}}
㈨ spring mvc 的工作流程是什么
spring mvc 的工作流程:
1、用户发送请求至前端控制器DispatcherServlet。
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、 DispatcherServlet调用HandlerAdapter处理器适配器。
5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView。
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9、ViewReslover解析后返回具体View。
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户。
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。
SpringMVC是一种web层的mvc框架,用于替代servlet(处理响应请求,获取表单参数,表单验证等)。
MVC即Model-View-Controller,将应用按照Model(模型)、View(视图)、Controller(控制)这样的方式分离。
视图(View):代表用户交互界面,对于Web应用来说,可以是HTML,也可能是jsp、XML和Applet等。
一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。
模型(Model):是业务的处理以及业务规则的制定。模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计是MVC最主要的核心。
MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,抽象与具体不能隔得太远,也不能太近。
MVC并没有提供模型的设计方法,而只是组织管理这些模型,以便于模型的重构和提高重用性。
控制(Controller):可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。
划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。
㈩ spring mvc的工作流程是什么
spring工作的流程
流程如下:
1、用户发起请求到前端控制器(DispatcherServlet),该控制器会过滤出哪些请求可以访问Servlet、哪些不能访问。就是url-pattern的作用,并且会加载springmvc.xml配置文件。
2、前端控制器会找到处理器映射器(HandlerMapping),通过HandlerMapping完成url到controller映射的组件,简单来说,就是将在springmvc.xml中配置的或者注解的url与对应的处理类找到并进行存储,用map<url,handler>这样的方式来存储。
3、HandlerMapping有了映射关系,并且找到url对应的处理器,HandlerMapping就会将其处理器(Handler)返回,在返回前,会加上很多拦截器。
4、DispatcherServlet拿到Handler后,找到HandlerAdapter(处理器适配器),通过它来访问处理器,并执行处理器。
5、执行处理器
6、处理器会返回一个ModelAndView对象给HandlerAdapter
7、通过HandlerAdapter将ModelAndView对象返回给前端控制器(DispatcherServlet)
8、前端控制器请求视图解析器(ViewResolver)去进行视图解析,根据逻辑视图名解析成真正的视图(jsp),其实就是将ModelAndView对象中存放视图的名称进行查找,找到对应的页面形成视图对象
9、返回视图对象到前端控制器。
10、视图渲染,就是将ModelAndView对象中的数据放到request域中,用来让页面加载数据的。
11、通过第8步,通过名称找到了对应的页面,通过第10步,request域中有了所需要的数据,那么就能够进行视图渲染了。最后将其返回即可。