日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java struts 2 源码阅读入门

發布時間:2025/4/14 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java struts 2 源码阅读入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一 搭建源碼閱讀環境

首先新建一個struts 2 實例工程,并附著源碼;

?

在Eclipse中新建一個動態web工程;完成后結構如下;

?

添加如下圖的包;可以直接拖到lib文件夾;完成后如下;

?

?

新建一個action類,結構如下,代碼在后;

?

package strutsdemo1;public class FirstAction {public String hello(){//每次調用,都是不同的對象!System.out.println("世界,你好"+this);return "success";}}

?

?

?

?

?

前面建項目時忘記生成web.xml,添加之;添加struts.xml;結構如下;代碼在后;

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"><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><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list> </web-app>


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><package name="default" namespace="/" extends="struts-default"><action name="hello" class="strutsdemo1.FirstAction" method="hello"><result name="success">/first.jsp</result></action></package> </struts>


在WebContent文件夾下新建first.jsp;

?

?

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%> <!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=ISO-8859-1"> <title>Insert title here</title> </head> <body><%out.println("Hello World!");%> </body> </html>


如果jsp文件頭部出現

?

The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

錯誤;

需要添加ServerRuntime;添加好后如下圖;添加過程參見

http://blog.csdn.net/testcs_dn/article/details/36455669

?

添加了ServerRuntime后項目管理器中有如下內容;

?

執行項目,結果如下;

struts實例工程建好;一個好的搭建struts工程的參考見

http://www.yiibai.com/struts2/struts2_examples.html

http://www.jb51.net/article/72250.htm

?

下面附加源碼包;

附加的方法見

http://blog.csdn.net/bcbobo21cn/article/details/52496261

?

附加struts2-core和xwork-core的源碼,這兩個是struts 2 的核心;附加好之后如下圖;

?

?

開始debug,可以閱讀 struts 2 的源碼了;見下圖;

?

所下的斷點是這樣的;

?

struts 2 包和源碼包可在此下載;

http://pan.baidu.com/s/1qYnK784

?

二 Struts 2 原理

http://blog.csdn.net/w563847254/article/details/9120933

http://blog.csdn.net/w563847254/article/details/9146277

原理圖;

?

三 Struts2源碼閱讀之ActionContext

https://my.oschina.net/mlongbo/blog/89878
?上一篇文章概述了Struts2的一些流程。這次說下ActionContext,直接進入正題。 ? ? ? ?


static ThreadLocal actionContext = new ThreadLocal();//ActionContext ?

public static ActionContext getContext() {
? return (ActionContext) actionContext.get();
}

? ? ? ? 從上面可以看到ActionContext是被存放在當前線程中的,獲取ActionContext也是從ThreadLocal中獲取的。因此在執行攔截器、 action和result的過程中,由于他們都是在一個線程中按照順序執行的,所以可以在任意時候從ThreadLocal中獲取 ActionContext。

? ? ? ? ActionContext是Action執行時的上下文,上下文可以看作是一個容器

Map<String, Object> context;
? ? public static void setContext(ActionContext context) {
? ? ? ? actionContext.set(context);
? ? }
? ? public static ActionContext getContext() {
? ? ? return (ActionContext) actionContext.get();
? ? }
? ? ? ? 由上面可以看出,其實我們這里的容器就是一個Map而已,在容器中存放的是Action在執行時需要用到的對象.比如:VALUE_STACK、ACTION_NAME、SESSION、APPLICATION、ACTION_INVOCATION等等。

? ? ? ? 另外還一個類叫ServletActionContext,它直接繼承了ActionContext,因此也是線程安全的。ServletActionContext還提供了一些直接與Servlet相關對象訪問的功能,例如HttpServletRequest、HttpServletResponse、ServletContext、PageContextd等。

? ? ? ? 如果ActionContext能夠實現我們的功能,那最好就不要使用ServletActionContext,讓我們的Action盡量不要直接去訪問Servlet的相關對象.

總結

以上是生活随笔為你收集整理的Java struts 2 源码阅读入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 看了下面会湿的视频 | 91久久色| 欧美一级片免费看 | 日韩av免费在线 | 亚洲第一免费视频 | 亚洲一区二区三区四 | 日韩电影一区二区三区四区 | 四虎视频在线观看 | 在线免费观看一区 | 婷婷俺来也 | 日韩蜜桃视频 | 成年人网站免费在线观看 | 极品美女一区二区三区 | 床戏高潮做进去大尺度视频网站 | 国产人久久人人人人爽 | 麻豆短视频在线观看 | 天堂成人国产精品一区 | 成人毛片网站 | 亚洲欧美伊人 | 久久免费在线观看 | 91免费网站在线观看 | 亚洲免费黄色 | 日韩成人av在线 | 亚洲一区亚洲二区 | 亚洲一二区视频 | 黄色一级片黄色一级片 | 久久综合91| 天天干 夜夜操 | 韩国av三级 | 91福利专区 | 久久久综合av | 亚洲精品久久久久中文字幕二区 | 亚洲乱码视频 | 韩日av片 | 午夜精品久久久久久久久久久久久蜜桃 | 美女丝袜av | 国产亚洲精品成人av久久ww | 夜夜视频 | 四虎黄色片 | 日韩怡红院 | 在线观看亚洲a | 人妻少妇偷人精品无码 | 99riav3国产精品视频 | 性chinese天美传媒麻 | 一区视频网站 | 天天拍夜夜拍 | 成人性生交大片免费 | 亚洲视频欧洲视频 | 日本高清不卡一区 | 国产一区二区三区四区hd | 久久久精品免费 | 久章草在线观看 | 东京久久久 | www,av在线 | 久久久久女 | 国产chinasex对白videos麻豆 | 亚洲黄色片网站 | 不卡中文字幕 | 亚洲色图欧洲色图 | 少妇av网| 日韩欧美不卡在线 | 欧美大片免费观看网址 | 国产又粗又猛又黄又爽的视频 | 中国xxxx性xxxx产国 | 天天色天天射天天干 | va视频在线 | 福利综合网 | 午夜免费一区 | 上床视频在线观看 | 欧美无遮挡高潮床戏 | 91美女片黄在线观看 | 中文字幕日韩三级 | 一个色在线视频 | www黄色 | 欧美男女动态图 | 天天操天天射天天爽 | 国产精品污 | 裸体裸乳被免费看视频 | 国产男男gay体育生白袜 | 久久这里 | 国产精品99久久久 | 久久er99热精品一区二区 | 狠狠干狠狠操视频 | 丰满少妇被猛烈进入一区二区 | 日韩电影一区二区 | 裸体黄色片 | xxxxxx日本| 一区二区三区小视频 | 免费中文字幕在线观看 | 少妇黄色片 | 综合久久网 | 日韩超碰在线 | 午夜精品网站 | 黑人与亚洲人色ⅹvideos | 凹凸国产熟女精品视频 | 精品熟妇无码av免费久久 | 黄色大片av| 丝袜 亚洲 另类 国产 制服 | 国产精品传媒 |