【Struts】Struts2簡介及實現使用者登入程式碼示例
Struts2是由傳統的Struts1和WebWork兩個經典的MVC框架發展起來的,無論是從Struts2設計的角度來看,還是從Struts2在實際專案中的易用性來看,Struts2都堪稱是一個非常優秀的MVC框架。
與傳統的Struts1相比,Struts2允許使用普通的、傳統的Java物件作為Action;Action的execute()方法不再與Servlet API耦合,因而更易於測試;支援更多的檢視技術;基於AOP思想的攔截器機制,提供了極好的可擴充套件性;更強大、更易用的輸入校驗功能;並且將Ajax技術整合到了框架裡面等等,這些都是Struts2具有更大的吸引力的原因所在。
下面我們來看一張經典的Struts2架構圖:
對比著上面的圖片,我們一起來簡單瞭解下Struts2的執行流程: 所有請求被Struts2核心控制器FilterDispather攔截
根據ActionMapper提供的資訊決定如何進行下一步
ActionMapper主要依賴Struts2的配置檔案struts.xml
接下來為每個Action建立Action代理類ActionProxy
執行ActionProxy的execute()方法
在執行execute()方式時會逐個執行Struts2中的攔截器
執行完成攔截器後才會真正執行目標Action
目標Action需要返會轉向的檢視名稱
ActionProxy取得檢視名稱物件Result完成轉向
生成resposne物件完成本次請求
瞭解了Struts2框架的整體內容和執行流程,依舊以一個使用者登入的示例來說明如何使用Struts2進行專案開發。
第一步:在MyEclipse中建立Java Web專案(需要注意的是Struts2需要執行在JRE1.5及其以上版本的環境中)
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
</pre><p><span style="font-size:18px"><span style="white-space:pre"></span>第四步:提供struts2的配置檔案struts.xml,放到原始碼檔案src下</span></p><p><span style="font-size:18px"></span></p><p><span style="font-size:18px"><span style="white-space:pre"></span>第五步:編寫Action原始碼檔案和JSP頁面,進行程式開發</span></p><p><span style="font-size:18px"> LoginAction</span></p><p><span style="font-size:18px"></span></p><pre code_snippet_id="1667602" snippet_file_name="blog_20160430_2_170036" name="code" class="java">public class LoginAction {
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;
}
public String execute() throws Exception {
if ("admin".equals(username) && "admin".equals(password)) {
return "success";
}else {
return "error";
}
}
}
login.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!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=GB18030">
<title>Insert title here</title>
</head>
<body>
<form action="login.action">
使用者:<input type="text" name="username"><br>
密碼:<input type="password" name="password"><br>
<input type="submit" value="登入">
</form>
</body>
</html>
login_success.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!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=GB18030">
<title>Insert title here</title>
</head>
<body>
${username },登入成功
</body>
</html>
login_error.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!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=GB18030">
<title>Insert title here</title>
</head>
<body>
登入失敗
</body>
</html>
第六步:將開發好的Action類和JSP頁面配置到struts.xml配置檔案中,具體配置如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 需要繼承struts-default包,這樣就擁有的最基本的功能 -->
<package name="struts2" extends="struts-default">
<action name="login" class="com.bjpowernode.struts2.LoginAction">
<result name="success">/login_success.jsp</result>
<result name="error">/login_error.jsp</result>
</action>
</package>
</struts>
第七步:部署到Tomcat中,啟動並且執行程式小結一下;
從上面的例子中,不難發現,Struts2框架在實際開發中更加的便捷和高效,並且在Struts1的基礎上有了很大的提升,但是Struts2依然是一個基於請求驅動的MVC框架,其核心設計來自於另一個MVC框架WebWork,是對WebWork的一個升級,並且與Struts1的體系結構有很大的區別,具體有哪些不同的地方,敬請期待下篇。
相關文章
- JSP程式設計實現簡單使用者7天內免登入及示例程式碼JS程式設計
- JSP程式設計實現使用者自動登入功能示例程式碼JS程式設計
- 在struts2中實現去掉字尾及url重寫
- (三)struts2進階之實現Action
- 【struts2】
- iOS逆向——Method Swizzle及WeChat註冊、登入程式碼示例iOS
- 三方登入原理及後端示例程式碼後端
- Struts2框架快速入門筆記框架筆記
- Struts2 原始碼分析-----工作原理分析原始碼
- BiLSTM介紹及程式碼實現
- CNN介紹及程式碼實現CNN
- vue 實現原理及簡單示例實現Vue
- struts2的使用
- 初識Struts2
- Struts2配置-1
- vue實現簡訊驗證碼登入Vue
- uniapp 實現簡訊驗證碼登入APP
- Struts框架_9 Struts2的驗證框架
- CRC校驗原理簡介及C程式碼實現說明C程式
- struts2總結(三)--官網下載struts2的jar包JAR
- SSM專案搭建及實現簡單的登入SSM
- Apache Struts2遠端程式碼執行漏洞(S2-001)復現總結Apache
- Struts2配置後ClassNotFoundExceptionException
- Struts2【與Spring整合】Spring
- Python自動登入QQ的實現示例Python
- 純css實現輸入框placeholder動效及輸入校驗的示例程式碼CSS
- Struts2入門這一篇就夠了
- 掃碼登入認證技術原理介紹及實踐
- Struts2 原始碼分析-----攔截器原始碼解析 --- ParametersInterceptor原始碼
- Java 語言實現簡易版掃碼登入Java
- Struts2工作原理(圖解)圖解
- struts2知識點整理
- struts2資料校驗
- 在 IDEA 中配置 Struts2Idea
- STRUTS2的getClassLoader漏洞利用
- 遊戲陪玩原始碼的登入方式,簡訊驗證碼登入的實現遊戲原始碼
- 介紹Linux小技巧,如何實現免密碼登入Linux密碼
- Struts2 Tomcat class.classLoader.resources.dirContext.docBase賦值造成的DoS及遠端程式碼執行利用!TomcatContext賦值
- OutputStreamWriter介紹&程式碼實現和InputStreamReader介紹&程式碼實現