struts2筆記(一)HelloWorld
阿新 • • 發佈:2018-11-11
最近在看李剛的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問題的原因仍然沒有找到,自己也沒有跟程式碼跟到框架裡,所以分析不出原因。