「Java」Struts 1 系を使ってみる
Struts 1 系をサラの環境からパッと使いたいな、っていう時のメモです。
今更感が満載の内容ですが ( 1 系は既に EOL ですし・・・ )、まぁ気にせずいきましょう。
定番のログイン画面を作ることにします。
ログイン成功 -> ユーザ名を表示するページに遷移
ログイン失敗 -> ログイン画面に遷移
という感じで。
1. 設定ファイルの作成
■ struts-config.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <form-beans> <form-bean name="LoginForm" type="login.form.LoginForm" /> </form-beans> <action-mappings> <action path="/login" type="login.action.LoginAction" name="LoginForm" scope="request"> <forward name="success" path="/loginSuccess.jsp"/> <forward name="fail" path="/login.jsp"/> </action> </action-mappings> </struts-config>
■ web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <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> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
2. 画面の作成
■ login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <html:form action="/login"> user : <html:text property="name" /><br> password : <html:password property="pass" /><br> <html:submit /> </html:form> </body> </html>
■ loginSuccess.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> Hello <bean:write name="name" /> </body> </html>
3. Action クラス、ActionForm クラスの作成
■ LoginForm.java
package login.form; import org.apache.struts.action.ActionForm; public class LoginForm extends ActionForm { private String name; private String pass; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } }
■ LoginAction.java
package login.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import login.form.LoginForm; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class LoginAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) { LoginForm lf = (LoginForm) form; String name = lf.getName(); String pass = lf.getPass(); req.setAttribute("name", name); if ("test".equals(name) && "test".equals(pass)) { return (mapping.findForward("success")); } else { return (mapping.findForward("fail")); } } }
ドキュメントはとりあえず以下あたりです。
・Struts 1 - Table of Contents
http://struts.apache.org/development/1.x/userGuide/index.html
急ぎましたが、以上です。
[ 環境情報 ]
Windows 7 SP1
Apache Tomcat 6.0.35
Apache Struts 1.3.10
Java SE 6 Update 34