|
接上;
Listing A:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app>
Listing B:
<!-- Action Servlet Configuration --> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>application</param-name> <param-value>ApplicationResources</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>2</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>2</param-value> </init-param> <init-param> <param-name>validate</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
Listing C:
<!-- Action Servlet Mapping --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping>
Listing D:
<!-- The Welcome File List --> <welcome-file-list> <welcome-file>bloggerLogin.jsp</welcome-file> </welcome-file-list> <taglib> <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri> <taglib-location>/WEB-INF/struts-html.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri> <taglib-location>/WEB-INF/struts-bean.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri> <taglib-location>/WEB-INF/struts-logic.tld</taglib-location> </taglib> </web-app>
Listing E:
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd"> <struts-config>
Listing F: <form-beans> <form-bean name="bloggerForm" type="xmlrpc.bloggerForm"/> <form-bean name="bloggerLogin" type="xmlrpc.bloggerUserForm"/> </form-beans>
Listing G: <action-mappings> <action path="/bloggerLogin" type="xmlrpc.bloggerUserAction" name="bloggerLogin"> <forward name="display" path="/bloggerPost.jsp"/> <forward name="bloggerPost" path="/bloggerPost.jsp"/> <forward name="bloggerError" path="/bloggerError.jsp"/> <forward name="bloggerLogin" path="/bloggerLogin.jsp"/> </action> <action path="/blogger" type="xmlrpc.bloggerAction" name="bloggerForm"> <forward name="display" path="/bloggerPost.jsp"/> <forward name="bloggerPost" path="/bloggerPost.jsp"/> <forward name="bloggerError" path="/bloggerError.jsp"/> <forward name="bloggerLogin" path="/bloggerLogin.jsp"/> <forward name="bloggerLogin" path="/bloggerLogin.jsp"/> </action> </action-mappings> </struts-config>
Listing H:
<%@ page language="java" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <html:html locale="true"> <head> <title></title> </head> <body bgcolor="#FFFFFF"> <html:errors/> <html:form action="bloggerLogin.action" focus="username"> <table border="0" width="50%"> <tr> <td><bean:message key="info.username"/></td> <td><html:text property="username" size="16"/></td></tr> <tr> <td><bean:message key="info.password"/></td> <td><html:password property="password" size="16"/></td></tr> <tr> <td><html:submit property="submit" value="Submit"/></td> <td><html:reset/></td></tr> </table> </html:form> </body> </html:html>
-----------------------------------------------------------------
Listing I:
info.username=Username info.password=Password info.blogid=Blog Id info.updateblog=Update Blog by FTP?
Listing J: package xmlrpc; import org.apache.struts.action.ActionForm; public class bloggerUserForm extends ActionForm { protected String username; protected String password; public void setUsername(String username) { this.username = username; } public String getUsername() { return username; } public void setPassword(String password) { this.password = password; } public String getPassword() { return password; } public void reset() { username = null; password = null; } }
Listing K:
package xmlrpc; import java.util.Vector; import java.util.Hashtable; import java.io.InputStream; import java.io.IOException; import java.io.OutputStream; import java.io.FileOutputStream; import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ForwardingActionForward; /** * This action performs the login, and passes the user on to the post screen */ public class bloggerUserAction extends Action {
Listing L: public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(); if (form instanceof bloggerUserForm) { bloggerUserForm theForm = (bloggerUserForm) form;
Listing M:
String username = theForm.getUsername(); String password = theForm.getPassword(); request.setAttribute("username", username); request.setAttribute("password", password);
Listing N:
bloggerUser user = (bloggerUser) session.getAttribute("b_user"); if (user == null) { user = new bloggerUser(); } user.setUsername(username); user.setPassword(password);
Listing O:
//List Vectors to make a userinfo request Vector params = new Vector(); params.addElement(bloggerUser.APP_KEY); params.addElement(username); params.addElement(password); xmlRequest xmlrpc = new xmlRequest(); xmlrpc.setParams(params); xmlrpc.setXmlRequestUrl(bloggerUser.blogger_url); xmlrpc.setMethod("blogger.getUsersBlogs"); try { Vector result = (Vector) xmlrpc.getResult(); for (int i=0; i < result.size(); i++) { System.out.println((String) ((Hashtable) result.get(i)).get("blogid")); user.addBlog((String) ((Hashtable) result.get(i)).get("blogid")); } } catch (Exception e) { ActionErrors errors = new ActionErrors(); errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("Blogger Error: " + e)); saveErrors(request, errors); return mapping.findForward("bloggerError"); }
Listing P:
session.setAttribute("b_user", user); //return a forward to display.jsp return mapping.findForward("bloggerPost"); } //this shouldn't happen in this example return null; } }
Listing Q:
<%@ page language="java" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> <html:html locale="true"> <head> <title></title> </head> <body bgcolor="#FFFFFF"> <html:errors/> <html:form action="blogger.action" focus="username" scope="session"> <table border="0" width="50%">
Listing R:
<tr> <td><bean:message key="info.username"/></td> <td><html:text property="username" name="b_user" size="16"/></td></tr> <tr> <td><bean:message key="info.password"/></td> <td><html:password property="password" name="b_user" size="16"/></td></tr> <tr> <td><bean:message key="info.blogid"/></td> <td>
Listing S:
<html:select property="blogid"> <logic:iterate id="b_result" name="b_user" property="blogs"> <html:option value="<%= (String) b_result %>"/> </logic:iterate> </html:select> </td></tr> <tr> <td><bean:message key="info.update"/></td> <td><html:checkbox property="update"/></td></tr> <tr> <td colspan=2> <html:textarea property="content" cols="40" rows="5"/><br/></td></tr> <tr> <td><html:submit property="submit" value="Submit"/></td> <td><html:reset/></td></tr> </table> </html:form> </body> </html:html>
|