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的真实路经下tomcat\bin文件夹下面。在运行一下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那就是没有什么前后的问题了。

posted @ 2016-08-26 16:41  Aomi  阅读(1424)  评论(0编辑  收藏  举报