首先,看部分spring加载bean文件的源码:
spring-beans-5.0.6.RELEASE.jar!/org/springframework/beans/factory/xml/PluggableSchemaResolver.class :
spring-beans-5.0.6.RELEASE.jar!/org/springframework/beans/factory/xml/DefaultNamespaceHandlerResolver.class :
可以看出,spring在加载xml文件的时候,会默认读取配置文件 META-INF/spring.schemas 和 META-INF/spring.handlers 。这样,我们就可以在这两个文件添加我们自定义的xml文件格式和xml文件解析处理器。
新建一个Springboot工程,pom如下。
SelfDefineXmlTrial/pom.xml :
然后,新建一个用于测试controller。
com.lfqy.springboot.selfdefxml.controller.SelfDefXmlController :
最后,创建一个Springboot的启动类。
com.lfqy.springboot.selfdefxml.SelfDefXmlApplication :
运行启动之后,浏览器访问 http://localhost:8080/selfdefxml/hello 效果如下:
修改前面提到的配置文件 META-INF/spring.schemas 、 META-INF/spring.handlers ,添加xml格式说明。
META-INF/spring.schemas :
META-INF/spring.handlers :
添加xml格式说明配置文件。
META-INF/selfdef.xsd :
添加自定义xml格式处理器类。
com.lfqy.springboot.selfdefxml.selxmlparse.UserNamespaceHandler :
新增xml格式解析类。
com.lfqy.springboot.selfdefxml.selxmlparse.UserBeanDefinitionParser :
新增自定义xml对应的bean类。
com.lfqy.springboot.selfdefxml.beans.User :
添加自定义xml配置文件读取的相关逻辑。
com.lfqy.springboot.selfdefxml.SelfDefXmlApplication :
到这里,编码就完成了,工程的目录结构如下。
运行之后,控制台输出如下:
这里,通过实现一个启动时自动初始化的一个servlet来实现。
com.lfqy.springboot.selfdefxml.servlet.StartupServlet :
在启动时加载servlet,为了方便区分,这里新写一个启动类。
com.lfqy.springboot.selfdefxml.SelfDefXmlLoadOnStartupApplication
到这里,编码已经完成,工程的目录结构如下:
运行之后,控制台输出如下:
servlet写xml文件是为了配置你的servlet,定位到你的路径以后才能够使用,这种要通过配置的xml叫做servlet2.0,现在有可以不用配置xml的servlet称之为servlet3.0,在servlet的class加上注解(annotation)@WebServlet("你的自定义名称,可以不用类名")就可以不通过配置xml直接使用
将servlet后台数据传给前端有几种方式,第一种前端通过ajax与后台进行数据交互,此时后台可以用response.getWriter.println("你的数据")传给前端(如果是查询数据一般封装成json传递),前端则通过ajax的回调函数来接收,另一种就是你所说的el表达式,是后台通过request.setAttribute()//session.setAttribute()来传递数据,前端可以通过el表达式,或者用jsp的request,getAttribute()/session.getAttribute()来接收数据,不过一般这种传参方式是通过后台转发页面的时候才能将参数带过去(request.getRequestDispatcher("你的路径加页面名").forward(request, response))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)