Struts2框架04 struts和spring整合
目錄
1 servlet 與 filter 的異同
# 2 記憶體中的字元編碼
3 gbk和utf-8的特徵
4 struts和spring的整合
5 struts和spring的整合步驟
6 springIOC在action類別中的使用
7 註解回顧
1 servlet 和 filter 的異同
1.1 相同點
filter完全可以代替servlet使用,但是filter中的某些功能servlet不能實現,而servlet的所有功能filter都能實現
1.2 不同點
1.2.1 概念上
servlet 是運行在伺服器端的程序,動態產生web頁面
filter 是一段可以復用的程式碼,不能產生請求和回應,但是可以對對應和請求做對應的處理
1.2.2 生命週期上
servlet 是在web伺服器啟動或web伺服器接收到第一次請求時利用構造器實例化servlet,然後調用init方法進行初始化,之後的每次請求會呼叫doGet或doPost方法進行處理;當關閉伺服器的時候,呼叫destroy方法銷毀實例
filter 是在web服務器啟動時利用構造器實例化filter,然後調用init方法進行初始化,之後的每次請求調用doFilter方法進行處理,關閉伺服器的時候,呼叫destroy方法銷毀實例
1.2.3 類型不同
servlet是類別、filter是介面
1.3 servlet 、filter的程式實作


<span style="color: #008080"> 1</span> <span style="color: #0000ff">package</span><span style="color: #000000"> cn.xiangxu; </span><span style="color: #008080"> 2</span> <span style="color: #008080"> 3</span> <span style="color: #0000ff">import</span><span style="color: #000000"> java.io.IOException; </span><span style="color: #008080"> 4</span> <span style="color: #0000ff">import</span><span style="color: #000000"> java.io.PrintWriter; </span><span style="color: #008080"> 5</span> <span style="color: #008080"> 6</span> <span style="color: #0000ff">import</span><span style="color: #000000"> javax.servlet.ServletException; </span><span style="color: #008080"> 7</span> <span style="color: #0000ff">import</span><span style="color: #000000"> javax.servlet.http.HttpServlet; </span><span style="color: #008080"> 8</span> <span style="color: #0000ff">import</span><span style="color: #000000"> javax.servlet.http.HttpServletRequest; </span><span style="color: #008080"> 9</span> <span style="color: #0000ff">import</span><span style="color: #000000"> javax.servlet.http.HttpServletResponse; </span><span style="color: #008080">10</span> <span style="color: #008080">11</span> <span style="color: #008000">/**</span> <span style="color: #008080">12</span> <span style="color: #008000"> * Servlet implementation class DemoServlet </span><span style="color: #008080">13</span> <span style="color: #008000">*/</span> <span style="color: #008080">14</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> DemoServlet <span style="color: #0000ff">extends</span><span style="color: #000000"> HttpServlet { </span><span style="color: #008080">15</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">final</span> <span style="color: #0000ff">long</span> serialVersionUID = 1L<span style="color: #000000">; </span><span style="color: #008080">16</span> <span style="color: #008080">17</span> <span style="color: #008000">/**</span> <span style="color: #008080">18</span> <span style="color: #008000"> * </span><span style="color: #808080">@see</span><span style="color: #008000"> HttpServlet#HttpServlet() </span><span style="color: #008080">19</span> <span style="color: #008000">*/</span> <span style="color: #008080">20</span> <span style="color: #0000ff">public</span><span style="color: #000000"> DemoServlet() { </span><span style="color: #008080">21</span> <span style="color: #0000ff">super</span><span style="color: #000000">(); </span><span style="color: #008080">22</span> System.out.println("01 利用构造器实例化"<span style="color: #000000">); </span><span style="color: #008080">23</span> <span style="color: #000000"> } </span><span style="color: #008080">24</span> <span style="color: #008080">25</span> <span style="color: #000000"> @Override </span><span style="color: #008080">26</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> init() <span style="color: #0000ff">throws</span><span style="color: #000000"> ServletException { </span><span style="color: #008080">27</span> <span style="color: #0000ff">super</span><span style="color: #000000">.init(); </span><span style="color: #008080">28</span> System.out.println("02 利用init方法初始化"<span style="color: #000000">); </span><span style="color: #008080">29</span> <span style="color: #000000"> } </span><span style="color: #008080">30</span> <span style="color: #008080">31</span> <span style="color: #008000">/**</span> <span style="color: #008080">32</span> <span style="color: #008000"> * </span><span style="color: #808080">@see</span><span style="color: #008000"> HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) </span><span style="color: #008080">33</span> <span style="color: #008000">*/</span> <span style="color: #008080">34</span> <span style="color: #0000ff">protected</span> <span style="color: #0000ff">void</span> doGet(HttpServletRequest request, HttpServletResponse response) <span style="color: #0000ff">throws</span><span style="color: #000000"> ServletException, IOException { </span><span style="color: #008080">35</span> System.out.println("03 调用处理方法"<span style="color: #000000">); </span><span style="color: #008080">36</span> <span style="color: #008080">37</span> response.setContentType("text/html;charset:utf-8"); <span style="color: #008000">//</span><span style="color: #008000"> 设置消息头部分信息</span> <span style="color: #008080">38</span> response.setCharacterEncoding("utf-8"<span style="color: #000000">); </span><span style="color: #008080">39</span> <span style="color: #008080">40</span> PrintWriter out =<span style="color: #000000"> response.getWriter(); </span><span style="color: #008080">41</span> out.println("hello servlet"<span style="color: #000000">); </span><span style="color: #008080">42</span> <span style="color: #000000"> out.close(); </span><span style="color: #008080">43</span> <span style="color: #000000"> } </span><span style="color: #008080">44</span> <span style="color: #008080">45</span> <span style="color: #000000"> @Override </span><span style="color: #008080">46</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> destroy() { </span><span style="color: #008080">47</span> <span style="color: #0000ff">super</span><span style="color: #000000">.destroy(); </span><span style="color: #008080">48</span> System.out.println("04 利用destroy方法销毁"<span style="color: #000000">); </span><span style="color: #008080">49</span> <span style="color: #000000"> } </span><span style="color: #008080">50</span> <span style="color: #008080">51</span> <span style="color: #008000">/**</span> <span style="color: #008080">52</span> <span style="color: #008000"> * </span><span style="color: #808080">@see</span><span style="color: #008000"> HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) </span><span style="color: #008080">53</span> <span style="color: #008000">*/</span> <span style="color: #008080">54</span> <span style="color: #0000ff">protected</span> <span style="color: #0000ff">void</span> doPost(HttpServletRequest request, HttpServletResponse response) <span style="color: #0000ff">throws</span><span style="color: #000000"> ServletException, IOException { </span><span style="color: #008080">55</span> <span style="color: #008000">//</span><span style="color: #008000"> TODO Auto-generated method stub</span> <span style="color: #008080">56</span> <span style="color: #000000"> doGet(request, response); </span><span style="color: #008080">57</span> <span style="color: #000000"> } </span><span style="color: #008080">58</span> <span style="color: #008080">59</span> }


<span style="color: #008080"> 1</span> <span style="color: #0000ff">package</span><span style="color: #000000"> cn.xiangxu; </span><span style="color: #008080"> 2</span> <span style="color: #008080"> 3</span> <span style="color: #0000ff">import</span><span style="color: #000000"> java.io.IOException; </span><span style="color: #008080"> 4</span> <span style="color: #0000ff">import</span><span style="color: #000000"> java.io.PrintWriter; </span><span style="color: #008080"> 5</span> <span style="color: #008080"> 6</span> <span style="color: #0000ff">import</span><span style="color: #000000"> javax.servlet.Filter; </span><span style="color: #008080"> 7</span> <span style="color: #0000ff">import</span><span style="color: #000000"> javax.servlet.FilterChain; </span><span style="color: #008080"> 8</span> <span style="color: #0000ff">import</span><span style="color: #000000"> javax.servlet.FilterConfig; </span><span style="color: #008080"> 9</span> <span style="color: #0000ff">import</span><span style="color: #000000"> javax.servlet.ServletException; </span><span style="color: #008080">10</span> <span style="color: #0000ff">import</span><span style="color: #000000"> javax.servlet.ServletRequest; </span><span style="color: #008080">11</span> <span style="color: #0000ff">import</span><span style="color: #000000"> javax.servlet.ServletResponse; </span><span style="color: #008080">12</span> <span style="color: #0000ff">import</span><span style="color: #000000"> javax.servlet.http.HttpServletResponse; </span><span style="color: #008080">13</span> <span style="color: #008080">14</span> <span style="color: #008000">/**</span> <span style="color: #008080">15</span> <span style="color: #008000"> * Servlet Filter implementation class DemoFilter </span><span style="color: #008080">16</span> <span style="color: #008000">*/</span> <span style="color: #008080">17</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> DemoFilter <span style="color: #0000ff">implements</span><span style="color: #000000"> Filter { </span><span style="color: #008080">18</span> <span style="color: #008080">19</span> <span style="color: #008000">/**</span> <span style="color: #008080">20</span> <span style="color: #008000"> * Default constructor. </span><span style="color: #008080">21</span> <span style="color: #008000">*/</span> <span style="color: #008080">22</span> <span style="color: #0000ff">public</span><span style="color: #000000"> DemoFilter() { </span><span style="color: #008080">23</span> System.out.println("01 利用构造器实例化"<span style="color: #000000">); </span><span style="color: #008080">24</span> <span style="color: #000000"> } </span><span style="color: #008080">25</span> <span style="color: #008080">26</span> <span style="color: #008000">/**</span> <span style="color: #008080">27</span> <span style="color: #008000"> * </span><span style="color: #808080">@see</span><span style="color: #008000"> Filter#init(FilterConfig) </span><span style="color: #008080">28</span> <span style="color: #008000">*/</span> <span style="color: #008080">29</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> init(FilterConfig fConfig) <span style="color: #0000ff">throws</span><span style="color: #000000"> ServletException { </span><span style="color: #008080">30</span> System.out.println("02 利用init方法初始化"<span style="color: #000000">); </span><span style="color: #008080">31</span> <span style="color: #000000"> } </span><span style="color: #008080">32</span> <span style="color: #008080">33</span> <span style="color: #008000">/**</span> <span style="color: #008080">34</span> <span style="color: #008000"> * </span><span style="color: #808080">@see</span><span style="color: #008000"> Filter#doFilter(ServletRequest, ServletResponse, FilterChain) </span><span style="color: #008080">35</span> <span style="color: #008000">*/</span> <span style="color: #008080">36</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> doFilter(ServletRequest request, ServletResponse resp, FilterChain chain) <span style="color: #0000ff">throws</span><span style="color: #000000"> IOException, ServletException { </span><span style="color: #008080">37</span> System.out.println("03 调用处理方法"<span style="color: #000000">); </span><span style="color: #008080">38</span> <span style="color: #008080">39</span> HttpServletResponse response =<span style="color: #000000"> (HttpServletResponse)resp; </span><span style="color: #008080">40</span> <span style="color: #008080">41</span> response.setContentType("text/html;charset:utf-8"<span style="color: #000000">); </span><span style="color: #008080">42</span> response.setCharacterEncoding("utf-8"<span style="color: #000000">); </span><span style="color: #008080">43</span> <span style="color: #008080">44</span> PrintWriter out =<span style="color: #000000"> response.getWriter(); </span><span style="color: #008080">45</span> out.println("hello filter"<span style="color: #000000">); </span><span style="color: #008080">46</span> <span style="color: #000000"> out.close(); </span><span style="color: #008080">47</span> <span style="color: #000000"> } </span><span style="color: #008080">48</span> <span style="color: #008080">49</span> <span style="color: #008000">/**</span> <span style="color: #008080">50</span> <span style="color: #008000"> * </span><span style="color: #808080">@see</span><span style="color: #008000"> Filter#destroy() </span><span style="color: #008080">51</span> <span style="color: #008000">*/</span> <span style="color: #008080">52</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> destroy() { </span><span style="color: #008080">53</span> System.out.println("04 利用destroy方法销毁"<span style="color: #000000">); </span><span style="color: #008080">54</span> <span style="color: #000000"> } </span><span style="color: #008080">55</span> <span style="color: #008080">56</span> }


<span style="color: #008080"> 1</span> <span style="color: #0000ff"><?</span><span style="color: #ff00ff">xml version="1.0" encoding="UTF-8"</span><span style="color: #0000ff">?></span> <span style="color: #008080"> 2</span> <span style="color: #0000ff"><</span><span style="color: #800000">web-app </span><span style="color: #ff0000">xmlns:xsi</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #ff0000"> xmlns</span><span style="color: #0000ff">="http://java.sun.com/xml/ns/javaee"</span><span style="color: #ff0000"> xsi:schemaLocation</span><span style="color: #0000ff">="http://java.sun.com/xml/ns/javaee "</span><span style="color: #ff0000"> id</span><span style="color: #0000ff">="WebApp_ID"</span><span style="color: #ff0000"> version</span><span style="color: #0000ff">="2.5"</span><span style="color: #0000ff">></span> <span style="color: #008080"> 3</span> <span style="color: #0000ff"><</span><span style="color: #800000">display-name</span><span style="color: #0000ff">></span>servletVsFilter<span style="color: #0000ff"></</span><span style="color: #800000">display-name</span><span style="color: #0000ff">></span> <span style="color: #008080"> 4</span> <span style="color: #0000ff"><</span><span style="color: #800000">welcome-file-list</span><span style="color: #0000ff">></span> <span style="color: #008080"> 5</span> <span style="color: #0000ff"><</span><span style="color: #800000">welcome-file</span><span style="color: #0000ff">></span>index.html<span style="color: #0000ff"></</span><span style="color: #800000">welcome-file</span><span style="color: #0000ff">></span> <span style="color: #008080"> 6</span> <span style="color: #0000ff"><</span><span style="color: #800000">welcome-file</span><span style="color: #0000ff">></span>index.htm<span style="color: #0000ff"></</span><span style="color: #800000">welcome-file</span><span style="color: #0000ff">></span> <span style="color: #008080"> 7</span> <span style="color: #0000ff"><</span><span style="color: #800000">welcome-file</span><span style="color: #0000ff">></span>index.jsp<span style="color: #0000ff"></</span><span style="color: #800000">welcome-file</span><span style="color: #0000ff">></span> <span style="color: #008080"> 8</span> <span style="color: #0000ff"><</span><span style="color: #800000">welcome-file</span><span style="color: #0000ff">></span>default.html<span style="color: #0000ff"></</span><span style="color: #800000">welcome-file</span><span style="color: #0000ff">></span> <span style="color: #008080"> 9</span> <span style="color: #0000ff"><</span><span style="color: #800000">welcome-file</span><span style="color: #0000ff">></span>default.htm<span style="color: #0000ff"></</span><span style="color: #800000">welcome-file</span><span style="color: #0000ff">></span> <span style="color: #008080">10</span> <span style="color: #0000ff"><</span><span style="color: #800000">welcome-file</span><span style="color: #0000ff">></span>default.jsp<span style="color: #0000ff"></</span><span style="color: #800000">welcome-file</span><span style="color: #0000ff">></span> <span style="color: #008080">11</span> <span style="color: #0000ff"></</span><span style="color: #800000">welcome-file-list</span><span style="color: #0000ff">></span> <span style="color: #008080">12</span> <span style="color: #0000ff"><</span><span style="color: #800000">servlet</span><span style="color: #0000ff">></span> <span style="color: #008080">13</span> <span style="color: #0000ff"><</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">></span>servlet<span style="color: #0000ff"></</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">></span> <span style="color: #008080">14</span> <span style="color: #0000ff"><</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">></span>cn.xiangxu.DemoServlet<span style="color: #0000ff"></</span><span style="color: #800000">servlet-class</span><span style="color: #0000ff">></span> <span style="color: #008080">15</span> <span style="color: #0000ff"></</span><span style="color: #800000">servlet</span><span style="color: #0000ff">></span> <span style="color: #008080">16</span> <span style="color: #0000ff"><</span><span style="color: #800000">servlet-mapping</span><span style="color: #0000ff">></span> <span style="color: #008080">17</span> <span style="color: #0000ff"><</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">></span>servlet<span style="color: #0000ff"></</span><span style="color: #800000">servlet-name</span><span style="color: #0000ff">></span> <span style="color: #008080">18</span> <span style="color: #0000ff"><</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">></span>/servlet.do<span style="color: #0000ff"></</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">></span> <span style="color: #008080">19</span> <span style="color: #0000ff"></</span><span style="color: #800000">servlet-mapping</span><span style="color: #0000ff">></span> <span style="color: #008080">20</span> <span style="color: #008080">21</span> <span style="color: #0000ff"><</span><span style="color: #800000">filter</span><span style="color: #0000ff">></span> <span style="color: #008080">22</span> <span style="color: #0000ff"><</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">></span>filter<span style="color: #0000ff"></</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">></span> <span style="color: #008080">23</span> <span style="color: #0000ff"><</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">></span>cn.xiangxu.DemoFilter<span style="color: #0000ff"></</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">></span> <span style="color: #008080">24</span> <span style="color: #0000ff"></</span><span style="color: #800000">filter</span><span style="color: #0000ff">></span> <span style="color: #008080">25</span> <span style="color: #0000ff"><</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">></span> <span style="color: #008080">26</span> <span style="color: #0000ff"><</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">></span>filter<span style="color: #0000ff"></</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">></span> <span style="color: #008080">27</span> <span style="color: #0000ff"><</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">></span>/filter.do<span style="color: #0000ff"></</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">></span> <span style="color: #008080">28</span> <span style="color: #0000ff"></</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">></span> <span style="color: #008080">29</span> <span style="color: #0000ff"></</span><span style="color: #800000">web-app</span><span style="color: #0000ff">></span>
项目结构图
servlet效果图
filter效果图
2 为什么对内存中的字符进行编码
字符在服务器内存中是16位的char,网络传输的单位是8为的byte,我们必须对数据进行拆分才能够进行传输,拆分的过程我们叫做编码
3 描述一下GBK和UTF-8的特点
utf-8是国际化的最优编码方案,包括了所有的字符,中文占3字节
gbk是本土化的最优编码方案,包含的字符较少,中文占2字节
4 struts2 和 spring 整合
4.1 为什么要进行整合
使用spring框架管理组件,实现注入,简化代码
4.2 怎么整合
导包(struts2 - spring - plugin)
配置文件(web.xml spring-struts.xml)
struts.xml配置文件
5 利用 struts + spring 实现 hello world 案例
5.1 导包
struts2核心包、struts和spring的整合插件包


<span style="color: #008080"> 1</span> <span style="color: #0000ff"><</span><span style="color: #800000">project </span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://maven.apache.org/POM/4.0.0"</span><span style="color: #ff0000"> xmlns:xsi</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #ff0000"> xsi:schemaLocation</span><span style="color: #0000ff">="http://maven.apache.org/POM/4.0.0 "</span><span style="color: #0000ff">></span> <span style="color: #008080"> 2</span> <span style="color: #0000ff"><</span><span style="color: #800000">modelVersion</span><span style="color: #0000ff">></span>4.0.0<span style="color: #0000ff"></</span><span style="color: #800000">modelVersion</span><span style="color: #0000ff">></span> <span style="color: #008080"> 3</span> <span style="color: #0000ff"><</span><span style="color: #800000">groupId</span><span style="color: #0000ff">></span>cn.xiangxu<span style="color: #0000ff"></</span><span style="color: #800000">groupId</span><span style="color: #0000ff">></span> <span style="color: #008080"> 4</span> <span style="color: #0000ff"><</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">></span>ssh02<span style="color: #0000ff"></</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">></span> <span style="color: #008080"> 5</span> <span style="color: #0000ff"><</span><span style="color: #800000">version</span><span style="color: #0000ff">></span>0.0.1-SNAPSHOT<span style="color: #0000ff"></</span><span style="color: #800000">version</span><span style="color: #0000ff">></span> <span style="color: #008080"> 6</span> <span style="color: #0000ff"><</span><span style="color: #800000">packaging</span><span style="color: #0000ff">></span>war<span style="color: #0000ff"></</span><span style="color: #800000">packaging</span><span style="color: #0000ff">></span> <span style="color: #008080"> 7</span> <span style="color: #0000ff"><</span><span style="color: #800000">dependencies</span><span style="color: #0000ff">></span> <span style="color: #008080"> 8</span> <span style="color: #0000ff"><</span><span style="color: #800000">dependency</span><span style="color: #0000ff">></span> <span style="color: #008080"> 9</span> <span style="color: #0000ff"><</span><span style="color: #800000">groupId</span><span style="color: #0000ff">></span>org.apache.struts<span style="color: #0000ff"></</span><span style="color: #800000">groupId</span><span style="color: #0000ff">></span> <span style="color: #008080">10</span> <span style="color: #0000ff"><</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">></span>struts2-core<span style="color: #0000ff"></</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">></span> <span style="color: #008080">11</span> <span style="color: #0000ff"><</span><span style="color: #800000">version</span><span style="color: #0000ff">></span>2.3.8<span style="color: #0000ff"></</span><span style="color: #800000">version</span><span style="color: #0000ff">></span> <span style="color: #008080">12</span> <span style="color: #0000ff"></</span><span style="color: #800000">dependency</span><span style="color: #0000ff">></span> <span style="color: #008080">13</span> <span style="color: #0000ff"><</span><span style="color: #800000">dependency</span><span style="color: #0000ff">></span> <span style="color: #008080">14</span> <span style="color: #0000ff"><</span><span style="color: #800000">groupId</span><span style="color: #0000ff">></span>org.apache.struts<span style="color: #0000ff"></</span><span style="color: #800000">groupId</span><span style="color: #0000ff">></span> <span style="color: #008080">15</span> <span style="color: #0000ff"><</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">></span>struts2-spring-plugin<span style="color: #0000ff"></</span><span style="color: #800000">artifactId</span><span style="color: #0000ff">></span> <span style="color: #008080">16</span> <span style="color: #0000ff"><</span><span style="color: #800000">version</span><span style="color: #0000ff">></span>2.3.8<span style="color: #0000ff"></</span><span style="color: #800000">version</span><span style="color: #0000ff">></span> <span style="color: #008080">17</span> <span style="color: #0000ff"></</span><span style="color: #800000">dependency</span><span style="color: #0000ff">></span> <span style="color: #008080">18</span> <span style="color: #0000ff"></</span><span style="color: #800000">dependencies</span><span style="color: #0000ff">></span> <span style="color: #008080">19</span> <span style="color: #0000ff"></</span><span style="color: #800000">project</span><span style="color: #0000ff">></span>
5.2 配置web.xml


<span style="color: #008080"> 1</span> <?xml version="1.0" encoding="UTF-8"?> <span style="color: #008080"> 2</span> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee " version="2.5"> <span style="color: #008080"> 3</span> <display-name>ssh02</display-name> <span style="color: #008080"> 4</span> <welcome-file-list> <span style="color: #008080"> 5</span> <welcome-file>index.html</welcome-file> <span style="color: #008080"> 6</span> <welcome-file>index.htm</welcome-file> <span style="color: #008080"> 7</span> <welcome-file>index.jsp</welcome-file> <span style="color: #008080"> 8</span> <welcome-file><span style="color: #0000ff">default</span>.html</welcome-file> <span style="color: #008080"> 9</span> <welcome-file><span style="color: #0000ff">default</span>.htm</welcome-file> <span style="color: #008080">10</span> <welcome-file><span style="color: #0000ff">default</span>.jsp</welcome-file> <span style="color: #008080">11</span> </welcome-file-list> <span style="color: #008080">12</span> <span style="color: #008080">13</span> <!--<span style="color: #000000"> 配置spring监听 </span><span style="color: #008080">14</span> 目的:容器启动时自动加载一下东西到缓存中 --> <span style="color: #008080">15</span> <listener> <span style="color: #008080">16</span> <listener-<span style="color: #0000ff">class</span>>org.springframework.web.context.ContextLoaderListener</listener-<span style="color: #0000ff">class</span>> <span style="color: #008080">17</span> </listener> <span style="color: #008080">18</span> <span style="color: #008080">19</span> <!-- 配置Spring配置文件的位置 --> <span style="color: #008080">20</span> <context-param> <span style="color: #008080">21</span> <param-name>contextConfigLocation</param-name> <span style="color: #008080">22</span> <param-value>classpath:spring_*.xml</param-value> <span style="color: #008080">23</span> </context-param> <span style="color: #008080">24</span> <span style="color: #008080">25</span> <!-- 配置主控制器和过滤条件 --> <span style="color: #008080">26</span> <filter> <span style="color: #008080">27</span> <filter-name>mvc</filter-name> <span style="color: #008080">28</span> <filter-<span style="color: #0000ff">class</span>>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-<span style="color: #0000ff">class</span>> <span style="color: #008080">29</span> </filter> <span style="color: #008080">30</span> <filter-mapping> <span style="color: #008080">31</span> <filter-name>mvc</filter-name> <span style="color: #008080">32</span> <url-pattern><span style="color: #008000">/*</span><span style="color: #008000"></url-pattern> </span><span style="color: #008080">33</span> <span style="color: #008000"> </filter-mapping> </span><span style="color: #008080">34</span> <span style="color: #008080">35</span> <span style="color: #008080">36</span> <span style="color: #008000"></web-app></span>
5.2.1 配置spring监听
所需类的位置
5.2.2 配置Spring配置文件的位置
配置文件所处位置
5.2.3 配置主控制器和过滤条件
所需类的位置
5.3 配置spring_context.xml
只需要在里面配置组件扫描即可


<span style="color: #008080"> 1</span> <span style="color: #0000ff"><?</span><span style="color: #ff00ff">xml version="1.0" encoding="UTF-8"</span><span style="color: #0000ff">?></span> <span style="color: #008080"> 2</span> <span style="color: #0000ff"><</span><span style="color: #800000">beans </span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://www.springframework.org/schema/beans"</span> <span style="color: #008080"> 3</span> <span style="color: #ff0000"> xmlns:xsi</span><span style="color: #0000ff">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #ff0000"> xmlns:context</span><span style="color: #0000ff">="http://www.springframework.org/schema/context"</span> <span style="color: #008080"> 4</span> <span style="color: #ff0000"> xmlns:jdbc</span><span style="color: #0000ff">="http://www.springframework.org/schema/jdbc"</span><span style="color: #ff0000"> xmlns:jee</span><span style="color: #0000ff">="http://www.springframework.org/schema/jee"</span> <span style="color: #008080"> 5</span> <span style="color: #ff0000"> xmlns:tx</span><span style="color: #0000ff">="http://www.springframework.org/schema/tx"</span><span style="color: #ff0000"> xmlns:aop</span><span style="color: #0000ff">="http://www.springframework.org/schema/aop"</span> <span style="color: #008080"> 6</span> <span style="color: #ff0000"> xmlns:mvc</span><span style="color: #0000ff">="http://www.springframework.org/schema/mvc"</span><span style="color: #ff0000"> xmlns:util</span><span style="color: #0000ff">="http://www.springframework.org/schema/util"</span> <span style="color: #008080"> 7</span> <span style="color: #ff0000"> xmlns:jpa</span><span style="color: #0000ff">="http://www.springframework.org/schema/data/jpa"</span> <span style="color: #008080"> 8</span> <span style="color: #ff0000"> xsi:schemaLocation</span><span style="color: #0000ff">=" </span><span style="color: #008080"> 9</span> <span style="color: #0000ff"> http://www.springframework.org/schema/beans/spring-beans-3.0.xsd </span><span style="color: #008080">10</span> <span style="color: #0000ff"> http://www.springframework.org/schema/context/spring-context-3.0.xsd </span><span style="color: #008080">11</span> <span style="color: #0000ff"> http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd </span><span style="color: #008080">12</span> <span style="color: #0000ff"> http://www.springframework.org/schema/jee/spring-jee-3.0.xsd </span><span style="color: #008080">13</span> <span style="color: #0000ff"> http://www.springframework.org/schema/tx/spring-tx-3.0.xsd </span><span style="color: #008080">14</span> <span style="color: #0000ff"> http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd </span><span style="color: #008080">15</span> <span style="color: #0000ff"> http://www.springframework.org/schema/aop/spring-aop-3.0.xsd </span><span style="color: #008080">16</span> <span style="color: #0000ff"> http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd </span><span style="color: #008080">17</span> <span style="color: #0000ff"> http://www.springframework.org/schema/util/spring-util-3.0.xsd"</span><span style="color: #0000ff">></span> <span style="color: #008080">18</span> <span style="color: #008080">19</span> <span style="color: #008000"><!--</span><span style="color: #008000"> 配置组件扫描 </span><span style="color: #008000">--></span> <span style="color: #008080">20</span> <span style="color: #0000ff"><</span><span style="color: #800000">context:component-scan </span><span style="color: #ff0000">base-package</span><span style="color: #0000ff">="cn.xiangxu"</span> <span style="color: #0000ff">/></span> <span style="color: #008080">21</span> <span style="color: #008080">22</span> <span style="color: #0000ff"></</span><span style="color: #800000">beans</span><span style="color: #0000ff">></span>
5.4 配置struts.xml


<span style="color: #008080"> 1</span> <span style="color: #0000ff"><?</span><span style="color: #ff00ff">xml version="1.0" encoding="UTF-8"</span><span style="color: #0000ff">?></span> <span style="color: #008080"> 2</span> <span style="color: #0000ff"><!</span><span style="color: #ff00ff">DOCTYPE struts PUBLIC </span><span style="color: #008080"> 3</span> <span style="color: #ff00ff"> "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" </span><span style="color: #008080"> 4</span> <span style="color: #ff00ff"> "http://struts.apache.org/dtds/struts-2.3.dtd"</span><span style="color: #0000ff">></span> <span style="color: #008080"> 5</span> <span style="color: #0000ff"><</span><span style="color: #800000">struts</span><span style="color: #0000ff">></span> <span style="color: #008080"> 6</span> <span style="color: #008080"> 7</span> <span style="color: #0000ff"><</span><span style="color: #800000">package </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="test"</span><span style="color: #ff0000"> namespace</span><span style="color: #0000ff">="/test"</span><span style="color: #ff0000"> extends</span><span style="color: #0000ff">="struts-default"</span><span style="color: #0000ff">></span> <span style="color: #008000"><!--</span><span style="color: #008000"> namespace是配置访问路径,extends是配置继承默认struts文件 </span><span style="color: #008000">--></span> <span style="color: #008080"> 8</span> <span style="color: #0000ff"><</span><span style="color: #800000">action </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="demo"</span><span style="color: #ff0000"> class</span><span style="color: #0000ff">="cn.xiangxu.TestAction"</span><span style="color: #0000ff">></span> <span style="color: #008000"><!--</span><span style="color: #008000"> name是配置访问网名,class是配置action类 </span><span style="color: #008000">--></span> <span style="color: #008080"> 9</span> <span style="color: #0000ff"><</span><span style="color: #800000">result </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="success"</span><span style="color: #0000ff">></span> <span style="color: #008080">10</span> <span style="color: #000000"> /WEB-INF/jsp/msg.jsp </span><span style="color: #008080">11</span> <span style="color: #0000ff"></</span><span style="color: #800000">result</span><span style="color: #0000ff">></span> <span style="color: #008080">12</span> <span style="color: #0000ff"></</span><span style="color: #800000">action</span><span style="color: #0000ff">></span> <span style="color: #008080">13</span> <span style="color: #0000ff"></</span><span style="color: #800000">package</span><span style="color: #0000ff">></span> <span style="color: #008080">14</span> <span style="color: #008080">15</span> <span style="color: #0000ff"></</span><span style="color: #800000">struts</span><span style="color: #0000ff">></span>
5.5 编写action类


<span style="color: #008080">1</span> <span style="color: #0000ff">package</span><span style="color: #000000"> cn.xiangxu; </span><span style="color: #008080">2</span> <span style="color: #008080">3</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span><span style="color: #000000"> TestAction { </span><span style="color: #008080">4</span> <span style="color: #0000ff">public</span><span style="color: #000000"> String execute() { </span><span style="color: #008080">5</span> System.out.println("struts整合spring"<span style="color: #000000">); </span><span style="color: #008080">6</span> <span style="color: #0000ff">return</span> "success"<span style="color: #000000">; </span><span style="color: #008080">7</span> <span style="color: #000000"> } </span><span style="color: #008080">8</span> }
5.6 编写所需的JSP文件


<span style="color: #008080"> 1</span> <span style="color: #0000ff"><</span><span style="color: #800000">%@ page </span><span style="color: #ff0000">language</span><span style="color: #0000ff">="java"</span><span style="color: #ff0000"> contentType</span><span style="color: #0000ff">="text/html; charset=utf-8"</span> <span style="color: #008080"> 2</span> <span style="color: #ff0000"> pageEncoding</span><span style="color: #0000ff">="utf-8"</span><span style="color: #ff0000">%</span><span style="color: #0000ff">></span> <span style="color: #008080"> 3</span> <span style="color: #0000ff"><!</span><span style="color: #ff00ff">DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"</span><span style="color: #0000ff">></span> <span style="color: #008080"> 4</span> <span style="color: #0000ff"><</span><span style="color: #800000">html</span><span style="color: #0000ff">></span> <span style="color: #008080"> 5</span> <span style="color: #0000ff"><</span><span style="color: #800000">head</span><span style="color: #0000ff">></span> <span style="color: #008080"> 6</span> <span style="color: #0000ff"><</span><span style="color: #800000">meta </span><span style="color: #ff0000">http-equiv</span><span style="color: #0000ff">="Content-Type"</span><span style="color: #ff0000"> content</span><span style="color: #0000ff">="text/html; charset=utf-8"</span><span style="color: #0000ff">></span> <span style="color: #008080"> 7</span> <span style="color: #0000ff"><</span><span style="color: #800000">title</span><span style="color: #0000ff">></span>test<span style="color: #0000ff"></</span><span style="color: #800000">title</span><span style="color: #0000ff">></span> <span style="color: #008080"> 8</span> <span style="color: #0000ff"></</span><span style="color: #800000">head</span><span style="color: #0000ff">></span> <span style="color: #008080"> 9</span> <span style="color: #0000ff"><</span><span style="color: #800000">body</span><span style="color: #0000ff">></span> <span style="color: #008080">10</span> <span style="color: #0000ff"><</span><span style="color: #800000">h2</span><span style="color: #0000ff">></span>恭喜你,struts整合spring成功!<span style="color: #0000ff"></</span><span style="color: #800000">h2</span><span style="color: #0000ff">></span> <span style="color: #008080">11</span> <span style="color: #0000ff"></</span><span style="color: #800000">body</span><span style="color: #0000ff">></span> <span style="color: #008080">12</span> <span style="color: #0000ff"></</span><span style="color: #800000">html</span><span style="color: #0000ff">></span>
项目结构图
6 struts整合spring后就可以使用springIOC啦
例如:持久层的action类中通过依赖注入服务层的类,从而就可以使用服务层的相关属性和方法啦
6.1 案例改进所需的业务层类


<span style="color: #008080"> 1</span> <span style="color: #0000ff">package</span><span style="color: #000000"> cn.xiangxu.service; </span><span style="color: #008080"> 2</span> <span style="color: #008080"> 3</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.springframework.stereotype.Service; </span><span style="color: #008080"> 4</span> <span style="color: #008080"> 5</span> <span style="color: #000000">@Service </span><span style="color: #008080"> 6</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span><span style="color: #000000"> TestService { </span><span style="color: #008080"> 7</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> test() { </span><span style="color: #008080"> 8</span> System.out.println("我是业务层的数据哟。"<span style="color: #000000">); </span><span style="color: #008080"> 9</span> <span style="color: #000000"> } </span><span style="color: #008080">10</span> }
6.2 案例改进一
在action类上添加@Controller注解,这样spring容器就会自动给其增加一个bean
在action类上添加@Scope("prototype")注解,这样就能让每一个请求都有一个action处理类,如果不写就是所有的请求公用一个action处理类(即:默认时使用单例模式)
在action类中依赖注入业务层,从而实现控制反转


<span style="color: #008080"> 1</span> <span style="color: #0000ff">package</span><span style="color: #000000"> cn.xiangxu.action; </span><span style="color: #008080"> 2</span> <span style="color: #008080"> 3</span> <span style="color: #0000ff">import</span><span style="color: #000000"> javax.annotation.Resource; </span><span style="color: #008080"> 4</span> <span style="color: #008080"> 5</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.springframework.context.annotation.Scope; </span><span style="color: #008080"> 6</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.springframework.stereotype.Controller; </span><span style="color: #008080"> 7</span> <span style="color: #008080"> 8</span> <span style="color: #0000ff">import</span><span style="color: #000000"> cn.xiangxu.service.TestService; </span><span style="color: #008080"> 9</span> <span style="color: #008080">10</span> <span style="color: #000000">@Controller </span><span style="color: #008080">11</span> @Scope("prototype"<span style="color: #000000">) </span><span style="color: #008080">12</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span><span style="color: #000000"> TestAction { </span><span style="color: #008080">13</span> <span style="color: #008080">14</span> @Resource(name="testService"<span style="color: #000000">) </span><span style="color: #008080">15</span> <span style="color: #0000ff">private</span><span style="color: #000000"> TestService testService; </span><span style="color: #008080">16</span> <span style="color: #008080">17</span> <span style="color: #0000ff">public</span><span style="color: #000000"> String execute() { </span><span style="color: #008080">18</span> System.out.println("struts整合spring"<span style="color: #000000">); </span><span style="color: #008080">19</span> <span style="color: #000000"> testService.test(); </span><span style="color: #008080">20</span> <span style="color: #0000ff">return</span> "success"<span style="color: #000000">; </span><span style="color: #008080">21</span> <span style="color: #000000"> } </span><span style="color: #008080">22</span> }
6.3 案例改进二
struts中的action标签中的class属性值可以用相应bean的id代替


<span style="color: #008080"> 1</span> <span style="color: #0000ff"><?</span><span style="color: #ff00ff">xml version="1.0" encoding="UTF-8"</span><span style="color: #0000ff">?></span> <span style="color: #008080"> 2</span> <span style="color: #0000ff"><!</span><span style="color: #ff00ff">DOCTYPE struts PUBLIC </span><span style="color: #008080"> 3</span> <span style="color: #ff00ff"> "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" </span><span style="color: #008080"> 4</span> <span style="color: #ff00ff"> "http://struts.apache.org/dtds/struts-2.3.dtd"</span><span style="color: #0000ff">></span> <span style="color: #008080"> 5</span> <span style="color: #0000ff"><</span><span style="color: #800000">struts</span><span style="color: #0000ff">></span> <span style="color: #008080"> 6</span> <span style="color: #008080"> 7</span> <span style="color: #0000ff"><</span><span style="color: #800000">package </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="test"</span><span style="color: #ff0000"> namespace</span><span style="color: #0000ff">="/test"</span><span style="color: #ff0000"> extends</span><span style="color: #0000ff">="struts-default"</span><span style="color: #0000ff">></span> <span style="color: #008000"><!--</span><span style="color: #008000"> namespace是配置访问路径,extends是配置继承默认struts文件 </span><span style="color: #008000">--></span> <span style="color: #008080"> 8</span> <span style="color: #0000ff"><</span><span style="color: #800000">action </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="demo"</span><span style="color: #ff0000"> class</span><span style="color: #0000ff">="testAction"</span><span style="color: #0000ff">></span> <span style="color: #008000"><!--</span><span style="color: #008000"> name是配置访问网名,class是配置action类 </span><span style="color: #008000">--></span> <span style="color: #008080"> 9</span> <span style="color: #0000ff"><</span><span style="color: #800000">result </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="success"</span><span style="color: #0000ff">></span> <span style="color: #008080">10</span> <span style="color: #000000"> /WEB-INF/jsp/msg.jsp </span><span style="color: #008080">11</span> <span style="color: #0000ff"></</span><span style="color: #800000">result</span><span style="color: #0000ff">></span> <span style="color: #008080">12</span> <span style="color: #0000ff"></</span><span style="color: #800000">action</span><span style="color: #0000ff">></span> <span style="color: #008080">13</span> <span style="color: #0000ff"></</span><span style="color: #800000">package</span><span style="color: #0000ff">></span> <span style="color: #008080">14</span> <span style="color: #008080">15</span> <span style="color: #0000ff"></</span><span style="color: #800000">struts</span><span style="color: #0000ff">></span>
#7 註解回顧
@Component@Controller@Service@Repository
# @Resource@Scope
@Component 通用的標記(不建議使用,菜鳥可以使用,【AOP編程時可以使用】)
格式1:@Controller("指定id")
# 格式2:@Controller 這種方式時使用預設的id,即:類別名稱小寫後的值
@Controller 作用於控制層
@Service 作用於業務層#Service 作用於業務層
@Repository 作用於持久層
@Scope 避免線程的安全問題,指定值為「prototype",這樣每個請求都會對應一個action處理類別;如果不寫的話就是單例模式(即:所有請求對應一個action處理類別)
格式:@Scope("prototype")
# @Resource 依賴注入時的宣告
格式:@Resource(name="依賴注入的id")
#
以上是Struts2框架04 struts和spring整合的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

2023年,AI技術已成為熱門話題,對各行業產生了巨大影響,程式設計領域尤其如此。人們越來越認識到AI技術的重要性,Spring社群也不例外。隨著GenAI(GeneralArtificialIntelligence)技術的不斷進步,簡化具備AI功能的應用程式的創建變得至關重要和迫切。在這個背景下,"SpringAI"應運而生,旨在簡化開發AI功能應用程式的過程,使其變得簡單直觀,避免不必要的複雜性。透過"SpringAI",開發者可以更輕鬆地建立具備AI功能的應用程序,將其變得更加易於使用和操作

Spring+AI作為行業領導者,透過其強大、靈活的API和先進的功能,為各種行業提供了領先性的解決方案。在本專題中,我們將深入探討Spring+AI在各領域的應用範例,每個案例都將展示Spring+AI如何滿足特定需求,實現目標,並將這些LESSONSLEARNED擴展到更廣泛的應用。希望這個專題能對你有所啟發,更深入地理解和利用Spring+AI的無限可能。 Spring框架在軟體開發領域已經有超過20年的歷史,自SpringBoot1.0版本發布以來已有10年。現在,無人會質疑,Spring

spring編程式事務的實作方式:1、使用TransactionTemplate;2、使用TransactionCallback和TransactionCallbackWithoutResult;3、使用Transactional註解;4、使用TransactionTemplate和@Transactional結合使用;5、自訂事務管理器。

Struts2框架的原理:1、攔截器解析請求路徑;2、找出Action的完整類別名稱;3、建立Action物件;4、執行Action方法;5、返回結果;6、視圖解析。它原理基於攔截器的機制,使得業務邏輯控制器與Servlet API完全脫離開,提高了程式碼的可重複使用性和可維護性。透過使用反射機制,Struts2框架可以靈活地建立和管理Action對象,實現請求與回應的處理。

SpringBoot和SpringCloud都是SpringFramework的擴展,它們可以幫助開發人員更快地建置和部署微服務應用程序,但它們各自有不同的用途和功能。 SpringBoot是一個快速建立Java應用程式的框架,讓開發人員可以更快地建立和部署基於Spring的應用程式。它提供了一個簡單、易於理解的方式來建立獨立的、可執行的Spring應用

Spring設定事務隔離等級的方法:1、使用@Transactional註解;2、在Spring設定檔中設定;3、使用PlatformTransactionManager;4、在Java配置類別中設定。詳細介紹:1、使用@Transactional註解,在需要進行事務管理的類別或方法上加入@Transactional註解,並在屬性中設定隔離等級;2、在Spring設定檔等等。

Struts框架的原理解析與實務探索Struts框架作為JavaWeb開發中常用的MVC框架,具有良好的設計模式和可擴展性,廣泛應用於企業級應用程式開發中。本文將對Struts框架的原理進行解析,並結合實際程式碼範例進行探索,幫助讀者更好地理解和應用該框架。一、Struts框架的原理解析1.MVC架構Struts框架是基於MVC(Model-View-Con

作為一名Java開發者,學習和使用Spring框架已經是一項必不可少的技能。而隨著雲端運算和微服務的盛行,學習和使用SpringCloud成為了另一個必須掌握的技能。 SpringCloud是一個基於SpringBoot的用於快速建立分散式系統的開發工具集。它為開發者提供了一系列的元件,包括服務註冊與發現、配置中心、負載平衡和斷路器等,使得開發者在建構微
