ZhangLiHai.Com Blog


用struts开发MVC程序入门(三)

张利海 于 2003年05月06日 发表

接上;


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>



新版本Blog中有更多内容
Copyright (C)2002-2007 All Rights Reserved Powered By:ZhangLiHai.Com