分享

在spring mvc框架中显示xml视图

 duduwolf 2005-08-10
 

举一个很简单的例子,用户在登陆窗口中输入用户名和密码,提交以后以xml的方式显示你填写的内容,

具体步骤如下:
1。配置web.xml文件
<servlet>
 <servlet-name>login</servlet-name>
 <servlet-class>
 org.springframework.web.servlet.DispatcherServlet
 </servlet-class>
 <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
 <servlet-name>login</servlet-name>
 <url-pattern>*.htm</url-pattern>
  </servlet-mapping>
2。配置login.xml文件
<bean id="viewResolver"

class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
      <property name="basename">
        <value>views</value>
      </property>
   </bean>
 
  <!--Request Mapping -->
  <bean id="urlMapping"
 class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
 <property name="mappings">
 <props>
  <prop key="/login.htm">LoginAction</prop>
  
 </props>
 </property>
  </bean>
 
  <!---Action Definition-->
  <bean id="LoginAction"
 class="LoginAction">
 <property name="commandClass">
 <value>LoginInfo</value>
 </property>
 <property name="fail_view">
 <value>loginfail</value>
 </property>
 <property name="success_view">
 <value>main</value>
 </property>
  </bean>
3。定义控制类loginAction.java和commandClass-->LoginInfo.java
<---------------------LoginAction---------------------------->
public class LoginAction extends SimpleFormController {
 

 protected ModelAndView onSubmit(Object cmd, BindException ex)
   throws Exception {
  LoginInfo loginInfo = (LoginInfo) cmd;

  Map model = new HashMap();
  List list = new ArrayList();
  list.add(loginInfo);
  model.put("loginInfos", list);

  return new ModelAndView("login", model);

 }
<---------------------LoginAction---------------------------->
<---------------------LoginInfo---------------------------->
public class LoginInfo {
    private String username;
    private String password;

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}
<---------------------LoginInfo---------------------------->
4.定义自己的viewResolver--->LoginView
<---------------------LoginView---------------------------->
public class LoginView extends AbstractXsltView {
 protected Node createDomNode(Map model, String rootName,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {

  Document doc = DocumentHelper.createDocument();
  Element root = doc.addElement(rootName);
  doc.setRootElement(root);
  List loginInfos = (List) model.get("loginInfos");
  for (Iterator it = loginInfos.iterator(); it.hasNext();) {
   LoginInfo info = (LoginInfo) it.next();
   Element a = root.addElement("loginInfo");
   a.addElement("username").addText(info.getUsername());
   a.addElement("password").addText(info.getPassword());
   
  }
  response.setContentType("text/xml");
  return new DOMWriter().write(doc);
 }

}
<---------------------LoginView---------------------------->
5.定义views.properties文件
login.class=LoginView

login.stylesheetLocation=/WEB-INF/xsl/loginInfo.xsl

login.root=loginInfos
6。定义loginInfo.xsl文件
<?xml version="1.0" encoding="GBK"?>
<xsl:stylesheet

xmlns:xsl="http://www./1999/XSL/Transform" version="1.0">
   
<xsl:output method="xml" omit-xml-declaration="no"/>
   
<xsl:template match="/">
       
<loginInfos>
           
<xsl:for-each select="loginInfos/loginInfo">
               
<loginInfo>
                   
<username>
                       
<xsl:value-of select="username"/>
                   
</username>
                   
<password>
                       
<xsl:value-of select="password"/>
                   
</password>
               
</loginInfo>
           
</xsl:for-each>
       
</loginInfos>
   
</xsl:template>
</xsl:stylesheet>

7。定义index.html文件
<html>
<body>
<form method="POST" action="login.htm">
<p align="left">登录</p>
<br>
用户名:
<input type="text" name="username" >
<br>
密 码 :
<input type="password" name="password" >
<br>
<p>
<input type="submit" value="提交" name="B1">
<input type="reset" value="重置" name="B2">
</p>
</form>
</body>
</html>
8。运行tomcat 预览:http://localhost:8080/xml/index.html
注:
views.properties放在classes文件夹。loginInfo.xsl放在/WEB-INF/xsl/文件夹。
index.html放在根目录下,xml文件放在/WEB-INF/下,其他的.class文件放在/WEB-INF/classes/下
需要的dom4j-1.6.jar、spring.jar放到/WEB-INF/lib下。
做完这一切,你就可以在浏览器里面测试结果了~!~

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多