1. 程式人生 > >struts入門,實現頁面跳轉

struts入門,實現頁面跳轉

struts的配置,相當簡單,我採用的是maven將struts依賴的包匯入到專案中。

第一步:

·在Eclipse下安裝MAVEN,具體教程就不詳細說了,百度安裝MAVEN。

·然後新建maven專案



完成後,就有一個新的專案空間在左邊Package Explore中

第二步:

配置pox.xml檔案


加入struts的maven依賴內容,然後maven會幫我們自動下載struts需要的jar包:

·<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.8</version>
</dependency>

第三步:

配置web.xml,web.xml檔案在WEB-INF下面,如果沒有可以在此目錄下新建xml檔案,命名為web.xml,其中內容(重點為紅色內容),所有的瀏覽器發出的Http請求到web都必須進過web.xml配置的struts的filter(首選將請求攔下來)


<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd
"
id="WebApp_ID"
version="3.1">
<filter>
<filter-name>

strutName</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>struts-default.xml,struts-plugin.xml,struts.xml</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>strutName
</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

第四步:

編寫請求的測試頁面:index.jsp  (注意在webapp目錄下面,如何新建jsp,滑鼠點選資料夾webapp,然後window按crtl+N,調出新建嚮導,搜尋jsp就行了)


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello World From Struts2</h1>
<form action="login.action" method="post">
使用者名稱:<input type="text" name="username">
密碼:<input type="text" name="password">
<input type="submit" value="提交">
</form>
</body>
</html>

(解釋:action:就是你點選提交這個input按鈕後,瀏覽器的網頁位址列,就變為了localhost/test/login.action。也就是向伺服器發出一個請求行為,然後web.xml的filter就會攔截到,並且分發到login.action該去的地方,那麼它該去哪兒呢?

第五步:指定action該去哪兒。

具體步驟:

一、新建struts.xml,如下


、內容複製如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>

<!-- include開頭的標籤都是一些對struts的要求內容,比如要求使用編碼方式啊,比如struts.xml檔案在執行時更改了,是否reload啊 -->
<include file="struts-default.xml"></include>
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<!-- 下面這行要求action以do和action結尾 -->
<constant name="struts.action.extension" value="do,action"></constant>
<constant name="struts.configuration.xml.reload" value="true"></constant>
<constant name="struts.devMode" value="true"></constant>

<!-- 下面com.struts2.demo是我的包名,也就是HelloWorldAction的包名,namespace是專案根名-->
<packagename="com.struts2.demo" namespace="/" extends="struts-default">

<!-- 下面action的name就是剛剛index.jsp提交過來的action,class對應要響應這個action的java檔案,method表示響應java檔案的具體的響應方法-->
<action name="login"class="com.struts2.demo.HelloWorldAction" method="execute">

<!--如果呼叫execute返回的字串是success,就發給客戶端success.jsp這個頁面,如果返回字串是error,就發給客戶端error.jsp -->
<result name="success">success.jsp</result>
<result name="error">error.jsp</result>
</action>
</package>
</struts>

下面截圖是專案根名,改為  / 。


最後一步:

編寫HelloWorldAction.java

package com.struts2.demo;
import java.io.Serializable;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldAction extends ActionSupport implements Serializable {
HttpServletRequest request = ServletActionContext.getRequest();
// 的請求的輸入框的username,和password。getParameter("這是index.jsp中兩個input的name")
String username = request.getParameter("name");
String password = request.getParameter("password");
public String execute() throws Exception {
return "success";
}
}
//execute方法被呼叫,返回success給struts,然後,struts檢視strut.xml,確認應該跳轉到頁面:success.jsp