1. 程式人生 > >struts2筆記(一)HelloWorld

struts2筆記(一)HelloWorld

    最近在看李剛的Struts2.1權威指南,按照書上內容,自己寫了一個HelloWorld,但是發現總是出現No result defined for action and result error這個問題,使用網上介紹的各種方法都沒有解決這個問題,後來我自己手動添加了struts2.3的jar包(原來用的是myeclipse新增的struts2.1)。問題得到了解決,但是tomcat會出現如下警告


    下面給出HelloWorld的新建過程,以及以上問題的解決方法。

    1.首先新建一個Web工程

       2.下載struts,並將以下包放到工程的lib資料夾下面,並引入工程

            1)xwork-core-xxx

            2)struts2-core-xxx

            3)ognl-2.x.x

            4)freemarker-2.x.xx

            5)commons-io-1.x.x

            6)commons-fileupload-1.x.x

    3.在編輯WEB-INF下編輯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>login.jsp</welcome-file>
  </welcome-file-list>
  <!-- 定義Struts2 的核心控制器:2.3版本用這個控制器 -->
  <filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class> </filter> <!-- filter用來初始化Struts2並且處理所有的HTTP請求 --> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
    上文紅色部分為struts2.3的核心控制器,這和2.1版本是不同的,改寫成這個後就不會出現上文的WARNING了。

    4.在原始檔目錄下新建一個struts.xml

         

    並編輯

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
          "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
  <constant name="struts.devMode" value="true"></constant>  
    <constant name="struts.i18n.encoding" value="utf-8"></constant>  
	<package name="fang" extends="struts-default">
	<action name="login" class="com.fang.login.action.LoginAction">
	  <result name="error">/error.jsp</result>
	  <result name="success">/welcome.jsp</result>
	</action>
	</package>
</struts>
    5.編寫LoginAction.java

package com.fang.login.action;

import com.opensymphony.xwork2.Action;

public class LoginAction implements Action{
	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;
	}
	//處理使用者請求的execute方法
	public String execute() throws Exception
	{
		if(getUsername().equals("fangjava")&&getPassword().equals("fang"))
		{
			return SUCCESS;
		}
		else
		{
			return ERROR;
		}
	}
}
    6.編寫相應的jsp檔案。

    小結:在struts2.1下面出現No result defined for action and result error問題的原因仍然沒有找到,自己也沒有跟程式碼跟到框架裡,所以分析不出原因。