Struts 1.x入門
1.webプロジェクトを新規作成し、Struts 1.xの依存ライブラリに加入する。
参照
commons-beanutils-1.8.0.jar:ダイナミックな取得/設定値Java Beanの属性
commons-digester-1.8.jar:ルールに基づくXMLドキュメント解析は、主にXMLからJavaオブジェクトへのマッピングに使用されます。
commons-fileupload-1.1.11.jar:strutsでファイルをアップロードするには、必要です。
commons-validator-1.3.1.jar:strutsの検証フレームワーク
commons-loging-1.0.4.jar:ログ処理
commons-chain-1.2.jar:HTTP要求処理の基礎メカニズムを処理する。
struts-core-1.30.jar:strutsのコアライブラリ
struts-extres-1.30.jar:strutsの拡張ライブラリ
オロロ-2.8.8.jar:テキスト処理ツール
ANtlr-2.7.2.jar:文法アナライザ
2.web.xmlファイルの設定
参照
commons-beanutils-1.8.0.jar:ダイナミックな取得/設定値Java Beanの属性
commons-digester-1.8.jar:ルールに基づくXMLドキュメント解析は、主にXMLからJavaオブジェクトへのマッピングに使用されます。
commons-fileupload-1.1.11.jar:strutsでファイルをアップロードするには、必要です。
commons-validator-1.3.1.jar:strutsの検証フレームワーク
commons-loging-1.0.4.jar:ログ処理
commons-chain-1.2.jar:HTTP要求処理の基礎メカニズムを処理する。
struts-core-1.30.jar:strutsのコアライブラリ
struts-extres-1.30.jar:strutsの拡張ライブラリ
オロロ-2.8.8.jar:テキスト処理ツール
ANtlr-2.7.2.jar:文法アナライザ
2.web.xmlファイルの設定
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- Standard Action Servlet Configuration -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<!-- init-param -->
<init-param>
<!--
/WEB-INF/struts-config.xml, , struts-config.xml WEB-INF
-->
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<!-- servlet -->
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<!-- , Servlet , tomcat -->
<load-on-startup>2</load-on-startup>
</servlet>
<!-- Standard Action Servlet Mapping -->
<!-- servlet *.do -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
3.WEB-INFにstruts-config.xmlファイルを追加する
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<form-bean name="loginForm" type="com.yx.zzg.form.LoginActionForm" />
</form-beans>
<!-- , , , -->
<!--
<global-forwards>
<forward name="failure" path="/failure.jsp" />
</global-forwards>
-->
<action-mappings>
<!-- path action , “/” -->
<!-- type action -->
<!-- name ActionForm -->
<!--
struts ActionForm session , scope request, <%
LoginActionForm
laf=(LoginActionForm)request.getAttribute("loginForm");
%> ActionForm
-->
<!-- ActionForm validate , -->
<!--
attribute , ActionForm ActionForm name , attribute attribute
-->
<action path="/login" type="com.yx.zzg.action.LoginAction"
name="loginForm" scope="request" validate="false" attribute="loginForm">
<!-- ,redirect false, , true -->
<forward name="success" path="/success.jsp" />
<forward name="failure" path="/failure.jsp" />
</action>
<!--
, unknown.jsp , .do 。forward action ,
-->
<action path="/unknown" forward="/unknown.jsp" unknown="true" />
</action-mappings>
</struts-config>
4.アクションForm類の作成
package com.yx.zzg.form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
/**
* ActionForm.
* ActionForm
* ActionForm
* @author toshiba
*
*/
public class LoginActionForm extends ActionForm {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public void reset(ActionMapping mapping, HttpServletRequest request) {
System.out.println("----------LoginActionForm.reset()---------");
}
@Override
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
System.out.println("----------LoginActionForm.validate()---------");
return null;
}
}
5.異常クラスの作成
package com.yx.zzg.exception;
public class PasswordErrorException extends RuntimeException {
}
package com.yx.zzg.exception;
public class UserNotFoundException extends RuntimeException {
}
6.業務類の作成
package com.yx.zzg.service;
import com.yx.zzg.exception.PasswordErrorException;
import com.yx.zzg.exception.UserNotFoundException;
public class UserManager {
private static UserManager instance=new UserManager();
private UserManager(){
}
public static UserManager getInstance(){
return instance;
}
public void login(String username,String password){
if(!"zzg".equals(username)){
throw new UserNotFoundException();
}
if(!"zzg".equals(password)){
throw new PasswordErrorException();
}
}
}
7.アクション部門の作成
package com.yx.zzg.action;
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.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.yx.zzg.exception.PasswordErrorException;
import com.yx.zzg.exception.UserNotFoundException;
import com.yx.zzg.form.LoginActionForm;
import com.yx.zzg.service.UserManager;
public class LoginAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String errorInfo="";
LoginActionForm laf = (LoginActionForm) form;
String username = laf.getUsername();
String password = laf.getPassword();
// if ("zzg".equals(username) && "zzg".equals(password)) {
// request.setAttribute("username", username);
// return mapping.findForward("success");
// } else {
// return mapping.findForward("failure");
// }
try{
UserManager.getInstance().login(username, password);
//request.setAttribute("username", username);
return mapping.findForward("success");
}catch(UserNotFoundException fnfe){
fnfe.printStackTrace();
errorInfo=" ";
}catch(PasswordErrorException pee){
pee.printStackTrace();
errorInfo=" ";
}
request.setAttribute("errorInof", errorInfo);
return mapping.findForward("failure");
}
}
6.試験ページの登録
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>
<title> </title>
</head>
<body>
<form action="login.do" method="post">
:
<input name="username" type="text" />
:
<input name="password" type="password" />
<input type="submit" value=" " />
</form>
</body>
</html>