• Struts2 源码分析——Hello world


    新建第一个应用程序

    上一章我们讲到了关于struts2核心机制。对于程序员来讲比较概念的一章。而本章笔者将会亲手写一个Hello world的例子。所以如果对struts2使用比较了解的朋友,请跳过本章。当然如果有跟笔者相同情况的朋友,我意见不烦看看我写的文章,就当打发时间来着。在前面的章节里面我们知道如果获得源码(不清楚的朋友,请查看Struts2 源码分析——前言)。用Eclipse新建一个Dynamic Web Project。项目为HelloWorld。如下面等图片。

    第一步:新建一个Dynamic Web Project

    第二步:命名项目HelloWorld。并点击下一步(Next)。直到出现第三步的图片。

    第三步:选择生成Web.xml。并点击完成(finish)。

    好了一个Web项目就正式建立成功了。而接下来我们就要把相关的struts2的配置写上去。

    1.去源码解开的根目录。找到apps文件夹。找到我们要分析源码的项目struts2-showcase。找到项目的web.xml文件,并复制替换掉HelloWorld项目的web.xml。删除不需要的配置信息。只要留下下面有用的信息。并改掉display-name的信息为Hello World。如下最后的结果。

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app id="WebApp_9" version="2.4" 
     3     xmlns="http://java.sun.com/xml/ns/j2ee" 
     4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     5     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
     6 
     7     <display-name>Hello World</display-name>
     8     
     9     <filter>
    10         <filter-name>struts-prepare</filter-name>
    11         <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareFilter</filter-class>
    12     </filter>
    13 
    14     <filter>
    15         <filter-name>struts-execute</filter-name>
    16         <filter-class>org.apache.struts2.dispatcher.filter.StrutsExecuteFilter</filter-class>
    17     </filter>
    18 
    19     <filter-mapping>
    20         <filter-name>struts-prepare</filter-name>
    21         <url-pattern>/*</url-pattern>
    22     </filter-mapping>
    23 
    24     <filter-mapping>
    25         <filter-name>struts-execute</filter-name>
    26         <url-pattern>/*</url-pattern>
    27     </filter-mapping>
    28 
    29     <welcome-file-list>
    30         <welcome-file>index.jsp</welcome-file>
    31         <welcome-file>default.jsp</welcome-file>
    32         <welcome-file>index.html</welcome-file>
    33     </welcome-file-list>
    34 
    35 
    36 </web-app>

    2.从项目struts2-showcase的WEB-INF/lib底下,把struts2要用的包全部复到HelloWorld项目的WEB-INF/lib里面。相关包如下

    3.在HelloWorld项目里面新建一个包为:com.helloworld。然后在com.helloworld的包下面,新一个action类为:FirstAction。

    FirstAction类的代码:

     1 package com.helloworld;
     2 
     3 import com.opensymphony.xwork2.ActionSupport;
     4 
     5 public class FirstAction extends ActionSupport{
     6     public String execute() throws Exception
     7     {
     8         return SUCCESS;
     9     }
    10 }

    4.把相关struts2配置文件复制到HelloWorld项目的SRC文件下。并到WEB-IN文件夹下新建一个JSP为HelloWorld。如图下

    HelloWorld.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>
    Hello World
    </body>
    </html>

    5.修改struts.xml配置文件的内容。如下

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 
     3 <!DOCTYPE struts PUBLIC
     4     "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
     5     "http://struts.apache.org/dtds/struts-2.5.dtd">
     6 
     7 <struts>
     8     <constant name="struts.devMode" value="false" />
     9     
    10     <package name="default" extends="struts-default">
    11 
    12         <action name="first" class="com.helloworld.FirstAction" >
    13             <result name="success">/WEB-INF/HelloWorld.jsp</result>
    14         </action>
    15 
    16     </package>
    17 
    18 </struts>

    到这里一个就是基本的struts2相关的配置就结束了。在开发中我们要用到struts2相关的功能的话,只能把相关包引进来。修改相关的配置就可以了。当然这里就是笔者讲的重点。

    发布第一个目项。

    笔者用的是eclipse来开发。所以这里只是简单的讲一下用eclipse发布而以。另一种是打包为war在发布这里就不讲了。

    1.点开Servers的操作区,点开图片中的蓝色字体新建一个服务器。如图下。

    2.选择自己的Tomcat版本号。并服务器命为Tomcat v7.0。点击下一步(next)。如图下

    3.选择自己要发布的项目,点击增加(add)。在点击完成(finish)。如果成功的话,eclipse的项目窗体也出现相关Tomcat的配置的项目。如图下

    成功之后:

    项目体窗

    4.接下来就变的很简单 。如果选择服务器=》右击=》选择Public(发布)。然后在来选择服务器=》右击=》先择自己需要的执行模式。是debug还是start.自己看。如图下

    最后运行的结果

    看到上面操作还是很简单的。笔者这还是要说一些开发使用Tomcat的时候要注意的点。

    <1>.点开成功这后项目体窗下的Servers项目。并找到对应的web.xml.这里的web.xml是为Tomcat服务器下的每一个项目所用。如果项目本身自己没有web.xml的时候就是去找服务器的web.xml。找到底下代码的部分。你们看到一个<param-name>listings</param-name>为节点的值。这节点的值设为true的时候。就是可以看到项目的文件。也就是如果你的URL里面输入(http://locahost:xxx/根目录)项目的根目录就出面文件列表。

     1    <servlet>
     2         <servlet-name>default</servlet-name>
     3         <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
     4         <init-param>
     5             <param-name>debug</param-name>
     6             <param-value>0</param-value>
     7         </init-param>
     8         <init-param>
     9             <param-name>listings</param-name>
    10             <param-value>false</param-value>
    11         </init-param>
    12         <load-on-startup>1</load-on-startup>
    13     </servlet>

    为了让读者看明白笔者只能在新建一个项目,让大家看明白。如图下

    <2>. 我们在开发过程中可能会发现端口被占用。不要担心。把到Tomcat的真实路经下tomcatin文件夹下面。在运行一下shutdown.bat。当然你的tomcat一定要保证能运行。因为有一些情况eclispse可以用。但是独立却不能运行。请自己行配置一下就行了。实在不行的话。同样子找到server.xml,并找到底下代码的部分。把8080改成为你想要的端口号即可。

    1 <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
    本章总结

    本章主要讲的如何配置struts2。当然笔者成功的运行项目的时候。笔者认为struts2.xml文件是一个重要的文件。他是struts2的如何找到对应的action类的重要信息的存放点。同时笔者也明白了一点:StrutsPrepareFilter类一定要在StrutsExecuteFilter类前面执行。否则会出错。不信,你们可以试试。当然如果用StrutsPrepareAndExecuteFilter那就是没有什么前后的问题了。

  • 相关阅读:
    LA 2038 Strategic game(最小点覆盖,树形dp,二分匹配)
    UVA 10564 Paths through the Hourglass(背包)
    Codeforces Round #323 (Div. 2) D 582B Once Again...(快速幂)
    UVALive 3530 Martian Mining(贪心,dp)
    UVALive 4727 Jump(约瑟夫环,递推)
    UVALive 4731 Cellular Network(贪心,dp)
    UVA Mega Man's Mission(状压dp)
    Aizu 2456 Usoperanto (贪心)
    UVA 11404 Plalidromic Subsquence (回文子序列,LCS)
    Aizu 2304 Reverse Roads(无向流)
  • 原文地址:https://www.cnblogs.com/hayasi/p/5807862.html
Copyright © 2020-2023  润新知