:Spring中视图有多种,现在因为WAP网站的原因,需要自定义JstlView可以使得渲染JSP时时候能给html中每个连接加上参数:
1:使用HttpServletResponseWrapper类包装HttpServletReponse
/** * 重写包装类 * @author lijunqing */ public class WapResponseWrapper extends HttpServletResponseWrapper { private ByteArrayOutputStream buffer; private PrintWriter writer; private ServletOutputStream out; public WapResponseWrapper(HttpServletResponse response) throws UnsupportedEncodingException { super(response); buffer=new ByteArrayOutputStream(); out=new WapOutPutStream(buffer); writer=new PrintWriter(new OutputStreamWriter(buffer, "UTF-8")); } // 重载父类获取outputstream的方法 public ServletOutputStream getOutputStream() throws IOException { return out; } // 重载父类获取writer的方法 public PrintWriter getWriter() throws UnsupportedEncodingException { return writer; } public void flushBuffer() throws IOException { if(out != null) { out.flush(); } if(writer != null) { writer.flush(); } } public String getContent() throws IOException { flushBuffer(); //强行flush 不然有可能为空 return buffer.toString("UTF-8"); } /** * 自定义WapOutPutStream 把Reponse的流写到WapOutPutStream中 * @author lijunqing */ private class WapOutPutStream extends ServletOutputStream { ByteArrayOutputStream byteArrayOut; public WapOutPutStream(ByteArrayOutputStream out) { byteArrayOut=out; } @Override public void write(int b) throws IOException { byteArrayOut.write(b); } } }
2:定义WapView继承JstlView
/** * wap视图显示 * @author lijunqing */ public class WapView extends JstlView { @Override public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception { WapResponseWrapper wrapper=new WapResponseWrapper(response); super.render(model, request, wrapper); // 使得我们可以获得页面内容 String result=wrapper.getContent(); // 用正则给每个url加公共参数等 处理逻辑 PrintWriter w=response.getWriter(); // 这个地方不能用Wrapper的,不然输出页面没内容; w.write(result); w.flush(); } }
相关推荐
Spring MVC 是一个强大的Java web应用程序开发框架,它遵循Model-View-Controller(MVC)设计模式,用于构建可维护性和可扩展性高的企业级应用。本实战教程将深入讲解Spring MVC的关键组件和工作流程,帮助开发者更...
3. 强大的扩展性和灵活性,得益于 Spring 框架的整体设计。 然而,Struts2 也有其独特的优点,例如丰富的插件、强大的拦截器机制等,适合不同的项目需求。 总的来说,Spring MVC 的设计简洁明了,易于理解和使用,...
而viewResolver则用于根据请求确定应加载的视图资源,这里默认使用JstlView,但可以通过设置prefix和suffix属性来自定义视图的前缀和后缀,增加视图的灵活性。 综上所述,“springMVC入门资料全含Spring3 0”不仅...
p:viewClass="org.springframework.web.servlet.view.JstlView"/> ``` - **InternalResourceViewResolver**: 配置视图解析器,设置视图前缀和后缀。 - **context:component-scan**: 扫描指定包下的组件,...
自定义实现该接口可以扩展Spring MVC的功能。 6. **ViewResolver**:视图解析器接口,如`UrlBasedViewResolver`和`InternalResourceViewResolver`,它们负责将逻辑视图名转换为实际视图。`...
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="order" value="1"/> <!-- 设置较低的优先级 --> <!-- 设置Freemarker视图解析器的优先级更高 --> ...
模型-视图-控制器模式是软件设计中的一个经典架构模式,它将应用程序逻辑分离开来,提高了代码的可维护性和可扩展性。在 Spring MVC 中: - **模型(Model)**:通常包含业务逻辑和数据对象,处理应用程序的数据。 ...
同时,Spring MVC更容易编写高性能的应用,并且其灵活性极高,得益于Spring框架的整体扩展性。 Spring MVC的主要组件包括: 1. **DispatcherServlet**:作为前端控制器,它是整个Spring MVC流程的入口点。...
3. **灵活性**:Spring3 MVC 依托于Spring框架的卓越扩展性,提供了无与伦比的灵活性,开发者几乎不会感到框架带来的约束。 ### **核心组件及功能** - **DispatcherServlet**:作为前端控制器,它是Spring MVC的...
Spring_MVC的核心在于其模块化设计,易于扩展,并且能够与其他Spring组件无缝集成。 二、核心类与接口 1. DispatcherServlet:作为Spring_MVC的前端控制器,它负责接收请求,根据HandlerMapping进行调度。 2. ...
2. **模块化**:Spring MVC的组件设计使得开发者可以根据需要选择使用哪些部分,易于扩展和维护。 3. **注解驱动**:Spring 3.0引入了大量注解,如`@RequestMapping`、`@Controller`、`@Service`、`@Autowired`等,...
Spring MVC 以其灵活性、高效性和可扩展性在近年来逐渐受到开发者青睐,尤其是在Spring 3.0版本之后。下面我们将详细探讨Spring MVC的核心组件、工作流程以及与Struts2.x的比较。 1. **Spring MVC 核心组件** - *...
Spring 3.0 MVC 是一个强大的、基于 Java 的框架,用于构建可维护和可扩展的 web 应用程序。在这个版本中,Spring 引入了 REST(Representational State Transfer)风格的编程,使得开发者可以更方便地使用注解来...
- **灵活性**:Spring MVC因其高度的灵活性和可扩展性而受到开发者喜爱,而Struts2的配置相对繁琐。 选择哪个框架取决于项目需求和团队熟悉度。Spring MVC通常被认为更现代,更适合大型企业级应用,而Struts2在中小...
总结,Spring MVC是Java EE开发Web应用的强大工具,其MVC设计模式、强大的数据绑定和验证、灵活的拦截器机制以及丰富的扩展性,使得开发者能够高效地构建健壮且易于维护的Web应用。在实际开发中,可以结合Spring ...
通过分析源码,我们可以学习到如何扩展Spring MVC,例如自定义拦截器、异常处理器、视图解析器等,这对于优化性能和实现特定功能非常有用。 此外,`spring-mvc-reading-main`可能是项目的主要源代码目录,其中可能...
在实际开发中,了解这些核心概念和组件的工作方式对于优化性能、处理异常、调试和扩展Spring MVC应用至关重要。例如,自定义HandlerMapping或HandlerAdapter可以实现特定的路由规则,而熟悉ModelAndView的使用则可以...
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> ``` 这里配置了组件扫描,处理器映射器和适配器,以及视图解析器来决定如何查找和渲染视图。 【部署 ...