新建第一个应用程序

上一章我们讲到了关于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。如下最后的结果。

 <?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" 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"> <display-name>Hello World</display-name> <filter>
<filter-name>struts-prepare</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareFilter</filter-class>
</filter> <filter>
<filter-name>struts-execute</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts-prepare</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <filter-mapping>
<filter-name>struts-execute</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list> </web-app>

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

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

FirstAction类的代码:

 package com.helloworld;

 import com.opensymphony.xwork2.ActionSupport;

 public class FirstAction extends ActionSupport{
public String execute() throws Exception
{
return SUCCESS;
}
}

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配置文件的内容。如下

 <?xml version="1.0" encoding="UTF-8" ?>

 <!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd"> <struts>
<constant name="struts.devMode" value="false" /> <package name="default" extends="struts-default"> <action name="first" class="com.helloworld.FirstAction" >
<result name="success">/WEB-INF/HelloWorld.jsp</result>
</action> </package> </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/根目录)项目的根目录就出面文件列表。

    <servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

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

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

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

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

Struts2 源码分析——Hello world的更多相关文章

  1. Struts2 源码分析——DefaultActionInvocation类的执行action

    本章简言 上一章讲到关于拦截器的机制的知识点,让我们对拦截器有了一定的认识.我们也清楚的知道在执行用户action类实例之前,struts2会先去执行当前action类对应的拦截器.而关于在哪里执行a ...

  2. Struts2 源码分析——拦截器的机制

    本章简言 上一章讲到关于action代理类的工作.即是如何去找对应的action配置信息,并执行action类的实例.而这一章笔者将讲到在执行action需要用到的拦截器.为什么要讲拦截器呢?可以这样 ...

  3. Struts2 源码分析——Action代理类的工作

    章节简言 上一章笔者讲到关于如何加载配置文件里面的package元素节点信息.相信读者到这里心里面对struts2在启动的时候加载相关的信息有了一定的了解和认识.而本章将讲到关于struts2启动成功 ...

  4. Struts2 源码分析——配置管理之PackageProvider接口

    本章简言 上一章讲到关于ContainerProvider的知识.让我们知道struts2是如何注册相关的数据.也知道如何加载相关的配置信息.本章笔者将讲到如何加载配置文件里面的package元素节点 ...

  5. Struts2 源码分析——配置管理之ContainerProvider接口

    本章简言 上一章笔者讲到关于Dispatcher类的执行action功能,知道了关于执行action需要用到的信息.而本章将会讲到的内容也跟Dispatcher类有关系.那就是配置管理中的Contai ...

  6. Struts2 源码分析——调结者(Dispatcher)之执行action

    章节简言 上一章笔者写关于Dispatcher类如何处理接受来的request请求.当然读者们也知道他并非正真的执行action操作.他只是在执行action操作之前的准备工作.那么谁才是正真的执行a ...

  7. Struts2 源码分析——过滤器(Filter)

    章节简言 上一章笔者试着建一个Hello world的例子.是一个空白的struts2例子.明白了运行struts2至少需要用到哪一些Jar包.而这一章笔者将根据前面章节(Struts2 源码分析—— ...

  8. Struts2 源码分析——项目分析

    项目知识点分析 从上一章中我们知道了接下来我们要去了解源码的项目(struts2-showcase).而这一章将讲述我三年后在次接触struts2-showcase项目是一个什么样子的情况.我有一个工 ...

  9. Struts2 源码分析——前言

    笔者简言 笔者在博园里面注册是在二年前.可是那个时候我不知道要写些什么,也怕写出来被别人骂误人子弟.而现在却动笔了是因为前一段时间内我去参加一些大公司的面试,让笔者内心深处留下很多问号.最近三年来我一 ...

随机推荐

  1. 原创教程:《metasploit新手指南》介绍及下载

    原创教程:<metasploit新手指南>介绍及下载 1.1 作者简介 这份教程并不是“玄魂工作室”原创,但是我还是要力推给大家.相比那些一连几年都在问“我怎么才能入门”的人而言,我们更欣 ...

  2. 使用DBUnit框架数据库插入特殊字符失败的查错经历

    本文记录的是使用DBUnit测试框架进行数据库数据插入时,插入特殊字符失败的查错经历.希望能对向我这样的小白同学们在遇到类似问题时,能够有一些启发.背景:在写跟数据库交互模块的单元测试,数据库表中的e ...

  3. 走进AngularJs(八) ng的路由机制

    在谈路由机制前有必要先提一下现在比较流行的单页面应用,就是所谓的single page APP.为了实现无刷新的视图切换,我们通常会用ajax请求从后台取数据,然后套上HTML模板渲染在页面上,然而a ...

  4. ReactMix框架,让你实现一套js代码,基于ReactNative在H5,App都能完美跑起来,Write Once,Run Anywhere

    ReactNative框架推出已经有一段时间了,相信很多小伙伴都在尝试实现Write Once, Run Anywhere的梦想,比如淘宝的ReactWeb等等,但是这些框架都局限于因为ReactNa ...

  5. vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化)

    环境准备 软件:vmware workstation 9.0    ubuntu-12.04.2-server-amd64(官方下载) 硬件:确认CPU支持虚拟化VM-T vmware设置 vmwar ...

  6. AngularJS快速入门指南15:API

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  7. Oracle使用小记

    windows下Oracle必须要启动的服务 Oracle ORCL VSS Writer Service:Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Service ...

  8. Fiddler实战深入研究(二)

    Fiddler实战深入研究(二) 阅读目录 Fiddler不能捕获chrome的session的设置 理解数据包统计 请求重定向(AutoResponder) Composer选项卡 Filters选 ...

  9. mybatis插入的同时获取主键id

    <insert id="insertAndReturnId" parameterType="com.qianlong.cms.entity.AppCmsRole&q ...

  10. SSH无密码登录

    首先生成密钥对 ssh-keygen -t rsa cd ~/.ssh/ cat id_rsa.pub 复制你生成的公钥 登录到需要免登录的服务器 cd ~/.ssh 添加到 authorized_k ...