jsp使用哪第一类对象解析器评估对象

热门搜索:
当前位置:
→ 解析器的使用(JAXP)
解析器的使用(JAXP)
作者:佚名 日期: 6:04:19 [
] 人气: 188 |
分析器的使用(一)作者: 常明 写作日期:
简介这组文章主要就目前有的XML分析器分别介绍一下他们的接口和用法。其中包括SUN的XML分析器,IBM的分析器XML4J,XML4C,ORACLE的分析器,EXPAT。SUN的JAXPJAXP API全部包括在JAXP.JAR中,它有两个工厂类 SAXParserFactory和DocumentBuilderFactory 分别对应SAX接口和DOM接口。这两个工厂类的作用是,通过设定其中的属性创建合适的分析器,它可以配合各种分析器的具体实现一起使用。这就是说SAXParserFactor可以和任何符合SAX接口的PARSER一起用,不一定就是SUN的分析器;DocumentBuidlerFactory也一样,不一定用SUN的实现。对于sax只要parser是实现org.xml.sax.Parser接口的,对于DOM就是文档对象实现了 org.w3c.dom.*的接口。SUN的分析器的实现是com.sun.xml.parser,它是实现了sax接口的,它的DOM实现则是基于SAX的,所以他们的分析器是一个。下面介绍DOM的编程,首先要引入以下JAXP API定义:import javax.xml.parsers.DocumentBuilderFimport javax.xml.parsers.FactoryConfigurationEimport javax.xml.parsers.ParserConfigurationEimport javax.xml.parsers.DocumentB如果要处理SAX异常加入:import org.xml.sax.SAXEimport org.xml.sax.SAXParseE文件I/O:import java.io.Fimport java.io.IOE如果要处理DOM异常加入:import org.w3c.dom.Dimport org.w3c.dom.DOME程序如下,声明一个静态全局的DOM的Document,方便下面的处理,Document可以从文件装入,写可以通过程序写入,否则是空的。public class DomEcho{static Dpublic static void main (String argv []){...}在分析过程中的异常处理的程序如下,这里有四种异常的处理:public static void main (String argv []){if (argv.length != 1) {...}try {} catch (SAXParseException spe) {&// Error generated by the parser&System.out.println (&\n** Parsing error& + &, line & + spe.getLineNumber ()+ &, uri & + spe.getSystemId ());&System.out.println(&&& + spe.getMessage() );&// Use the contained exception, if any&Exceptionx =&if (spe.getException() != null)&x = spe.getException();&x.printStackTrace();} catch (SAXException sxe) {&// Error generated by this application&// (or a parser-initialization error)&Exceptionx =&if (sxe.getException() != null)&x = sxe.getException();&x.printStackTrace();} catch (ParserConfigurationException pce) {&// Parser with specified options //can t be built&pce.printStackTrace();} catch (IOException ioe) {&// I/O error&ioe.printStackTrace();}}// main 生成分析器,有两步,首先实例化工厂,再由工厂生成DocumentBuilder,最后开始分析:DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();try {&DocumentBuilder builder =factory.newDocumentBuilder();&document = builder.parse( new File(argv[0]) );} catch (SAXParseException spe) {有了Document对象后就可以做各种DOM操作,以下程序输出XML:XmlDocument xdoc = (XmlDocument)xdoc.write (System.out);如果要使用SAX接口程序就稍复杂一些,首先引入定义:import java.io.*;import org.xml.sax.*;import javax.xml.parsers.SAXParserFimport javax.xml.parsers.ParserConfigurationEimport javax.xml.parsers.SAXP和DOM的编程相似,首先一样实例化DocumentBuilderFactory,创建一个SAXParser,然后开始分析,期间处理各种异常:public static void main (String argv []){if (argv.length != 1) {System.err.println (&Usage: cmd filename&);System.exit (1);}// Use the default (non-validating) parserSAXParserFactory factory =&SAXParserFactory.newInstance();try {&NoA// Parse the input SAXParser saxParser =factory.newSAXParser();saxParser.setDocumentHandler(noaction);saxParser.parse(new File(argv [0]), new Echo() );} catch (Throwable t) {t.printStackTrace ();}System.exit (0);}但用SAX是通过处理事件来进行的,所以在分析之前,一般要设定处理器,使用saxparser的SetDocumentHandler方法来设定。 下面是一个什么都不做的事件处理器,它实现了DocumentHandler接口。class NoAction implement DocumentHandler{...&&public void startDocument ()throws SAXException{}public void endDocument ()throws SAXException{}public void startElement (String name, AttributeList attrs)throws SAXException{}public void endElement (String name)throws SAXException{}public void characters (char buf [], int offset, int len)throws SAXException{}&...以上就基本介绍了sun的xml分析器的使用,有任何问题请发mail给我们一起讨论。
11-10? 11-10? 11-10? 11-10? 11-10? 11-08? 11-08? 11-08? 11-08? 11-07?
本类热门阅览
Copyright &
. All Rights Reserved微信公众号
Spring 3.0默认多种视图和视图解析器概述
本文将通过一个示例来介绍如何开发 Spring 自定义视图和视图解析器,来显示后缀名为 SWF 的视图,并提供一个简单的注册机制,为特定后缀名的视图注册相应的视图解析器。
什么是 Spring 视图和视图解析器
Spring MVC(Model View Controller)是 Spring 中一个重要的组成部分,而 Spring 视图和视图解析器则是 Spring MVC 中的组成部分。在介绍 Spring 视图和视图解析器前,我们先了解下在 Spring MVC 框架中,一个 Web 请求所需经历的六个阶段:
请求会首先被 Spring MVC 的前端请求分发器(Dispatcher)拦截。该拦截器是一个 Servlet, 需要在 web.xml 中配置,所有符合所配置的 URL 样式的访问请求,将都会被该拦截器拦截。Spring 提供了默认的分发器 org.springframework.web.servlet.DispatcherServlet,您可以根据需要,决定是否需要定制自己的分发器。
在接收到访问请求后,分发器会根据开发人员在 Spring 配置文件或代码中的注解(Annotation),来查找合适的控制器。
分发器在查找到合适的控制器后,将请求转交给该控制器处理。
通常,控制器会调用相应服务类来处理业务逻辑,在将请求处理后,控制器需返回处理后的结果数据模型(Model)以及下一个需要显示的视图名。
在控制器处理结束并返回模型和视图名之后,Spring 会依次调用 Spring 容器中所注册的视图解析器,来查找符合条件的视图。
在获得 Spring 视图后,Spring 会根据该视图的配置信息,显示该视图。
图 1.Spring MVC 处理流程
通过以上 Spring MVC 的介绍,我们可以发现,视图和视图解析器将出现在整个请求处理流程中的最后部分。那么到底什么是视图和视图解析器?简而言之,视图是指 Spring MVC 中的 V(View),而视图解析器的功能则是依据指定的规则来查找相应的视图。
常用视图和视图解析器简介
在开发中,视图通常就是 JSP、Velocity 等。Spring 默认提供了多种视图解析器,比如,我们可以使用最常用解析器 InternalResourceViewResolver 来查找 JSP 视图(与之相对应的视图类为 InternalResourceView)。通常,一个视图解析器只能查找一个或多个特定类型的视图,在遇到 Spring 不支持的视图或者我们要自定义视图查找规则的情况下,我们就可以通过扩展 Spring 来自定义自己所需的视图解析器。目前,视图解析器都需要实现接口 org.springframework.web.servlet.ViewResolver, 它包含方法 resolveViewName,该方法会通过视图名查找并返回 Spring 视图对象。表 1 列出了常用的 Spring 视图解析器。
表 1.Spring 常用视图解析器列表
视图解析器
XmlViewResolver
接口 ViewResolver 的实现,从 XML 配置文件中查找视图实现(默认 XML 配置文件为 /WEB-INF/views.xml).
ResourceBundleViewResolver
接口 ViewResolver 的实现,用于从 properties 文件中查找视图。.
UrlBasedViewResolver
接口 ViewResolver 的实现,用于根据请求的 URL 路径返回相应的视图,该视图需为抽象类 AbstractUrlBasedView 的实现,它还有些子类,如 InternalResourceView&和 JstlView 等 .
InternalResourceViewResolver
UrlBasedViewResolver 的子类,通常用于查找 JSP(类 InternalResourceView)和 JSTL(类 JstlView,InternalResourceView 的子类)等视图。
VelocityViewResolver&/FreeMarkerViewResolver
UrlBasedViewResolver 的子类分别用于支持 Velocity(类 VelocityView)和 FreeMark 视图(类 FreeMarkerView)。
ContentNegotiatingViewResolver
接口 ViewResolver 的实现,用于根据请求文件的后缀名或请求的 header 中的 accept 字段查找视图。
在多数项目中,InternalResourceViewResolver 是最常用的,该解析器可以返回指定目录下指定后缀的文件,它支持 JSP 及 JSTL 等视图技术,但是用该视图解析器时,需要注意设置好正确的优先级,因为该视图解析器即使没有找到正确的文件,也会返回一个视图,而不是返回 null,这样优先级比该视图解析器低的解析器,将不会被执行。
在 Web 开发中,我们的前端显示可以是 JSP、Excel、Velocity 等,在 Spring 中,不同的前端显示技术都有其对应的 Java 视图类,正如表 1 所提到的,InternalResourceView 可以代表 JSP 视图,FreeMarkerView 代表 FreeMarker 视图。目前,Spring 支持多种技术开发的视图,包括 JSP、JSTL、Excel,Velocity 等,在多数项目中,用户并不需要自定义自己的视图,在接下来的章节,我们将介绍如何定义开发视图和视图解析器。
其他类似的新闻
● ● ● ● ● ● ● ● ● ●
其他相关的新闻
大家感兴趣的内容
小伙伴最爱的新闻
小伙伴还关注了以下信息
小伙伴关注的焦点
小伙伴都在关注的热门词
Copyright (C) 2006- Inc. All Rights Reserved
孝感风信信息技术有限公司 ● 版权所有.jsp与.html页面到底有什么区别,区别在哪。【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:611,596贴子:
.jsp与.html页面到底有什么区别,区别在哪。收藏
&%@ page language="java" import="java.util.*" pageEncoding="gbk"%&这句话加入html中,也可以往页面里写java代码吗?
java做为IT行业主流技术,是很受企业青睐的.达内java培训O基础4-16周您精通速成班!更为抢手.达内IT培训,专设java学习课程「入门+进阶+精通」,学习+就业!一步搞定!
没人吗。虽然工作了,但是有很多小白问题依然不解。
不可以..jsp代码只能往jsp文件里写html 代码在jsphtml里都可以写
jsp 其实就是 servlet的另外一个形式 但是最终会被服务器解析为 java文件 然后编译调用执行的
就不是一类东西
jsp全名是java Server Pages,他们之间最大间区别,一个可以直接打开运行,另一个是需要发布到服务器例如tomcat才能运行的,也就说jsp需要编译过才能运行在游览器,这是我的见解~如果说的有误请指教!
&%@ page language="java" import="java.util.*" pageEncoding="gbk"%&是告诉服务器用jsp解析器来解析吧,我觉得应该可以吧。没试过,不过我知道可以把jsp的后缀改成html。好吧,我也是菜鸟。同求大婶解释
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或Springmvc中多视图解析器解析问题 - 开涛的博客—公众号:kaitao-1234567,一如既往的干货分享 - ITeye技术网站
博客分类:
最近被问到过几次关于springmvc多视图解析器解析的问题;总结一下。
假设我有两个jsp:
WEB-INF/html/a.jsp
WEB-INF/report/b.jsp
且我配置了视图解析器:
&bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="1"&
&property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/&
&property name="contentType" value="text/html"/&
&property name="prefix" value="/WEB-INF/html/"/&
&property name="suffix" value=".jsp"/&
&bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="2"&
&property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/&
&property name="contentType" value="text/html"/&
&property name="prefix" value="/WEB-INF/report/"/&
&property name="suffix" value=".jsp"/&
然后呢,我分别返回视图名为a和b;为什么a能找到,而b的时候是404;我配置了两个视图解析器,第一个找不到的话,第二个能找到啊?遇到过这个问题的朋友基本上会有类似的问题;
此处我们使用了InternalResourceViewResolver,其有一个buildView方法,该方法一定会创建一个View;所以呢View永远不为null(即使该jsp不存在);问题就是出在这;因为我们使用这个的时候默认是使用servlet forward转发的,此时并不知道该jsp是否存在。
3、解决方案:
3.1、最简单的办法是使用其viewNames属性,来指定一个是否可以处理的规则;
&property name="viewNames" value="html*"/&
&property name="viewNames" value="report*"/&
如上两个的意思是对html或report开头的视图名进行处理,比如返回的视图名为html/a 那么会交给viewNames为html*的那个解析器处理;支持的规则可以查看javadoc。
3.2、内容协商,根据请求时的MediaType来决定使用哪个View;比如根据不同的MediaType决定是JSON/XML/HTML展示时;可以搜索ContentNegotiatingViewResolver了解;
以上的方式对于请求的MediaType一样,且视图名没有规则时一点用没有。
3.3、如果仅有几个不同的视图需要特殊处理;可以考虑直接返回View对象进行处理;而直接不走ViewResolver;
3.4、如果以上都不满足;那只能自己实现自己相应的ViewResolver,可以覆盖两个方法进行处理:
3.4.1、覆盖UrlBasedViewResolver子类的canHandle;来决定哪些视图名不需要当前ViewResolver进行处理;自己可以得到prefix + suffix进行判断具体的视图页面是否存在,当然这个可能会存在性能问题;考虑做缓存。
浏览 15831
jinnianshilongnian
浏览量:1563851
浏览量:1889462
浏览量:3782289
浏览量:164801
浏览量:1027278
浏览量:177508
浏览量:2953903
浏览量:379112
学习一下,很不错
小楠人gjn 写道zhuxunjun 写道看了好几遍这篇文章, ...
出现404的小伙伴看一下路径有没有更换成自己的项目名http: ...
adc333 写道为什么我验证“login(&cla ...
讲的真好,不过有点小小的问题引用因为PrincipalColl ...}

我要回帖

更多关于 jsp解析json对象 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信