Struts2入门与配置

年前在上海静静等待回家的日子 , 闲来无事,在好友李三年的友情提示下,写了这篇Struts2的入门级的文章,希望能对Struts2初学者有一定帮助。

/* 赏心悦目的注释 ,凡是注释里的内容,骨灰级的朋友可一跃而过。*/

闲话少说进入正题 :)

一、开发环境的搭建

1、JDK的安装与环境配置

2、Tomcat的安装与环境配置

3、Myeclipse的安装与环境配置(囧轻轻鄙视一下自己的盗版行为 囧 )

/* 赏心悦目的注释

读到这里,如果你激情万千,开始准备去完成这第一步里所有的内容,那么笔者建议你还是停止阅读此篇文章,抓紧时间,从Java基础学起,祝你旅途愉快^-^

*/

二、Struts2的下载与安装

下载地址:http://struts.apache.org/download.cgi#struts216

解压缩后的目录包含:apps、docs、lib、src四个文件夹和一堆文本文档。

/*赏心悦目的注释

apps里包含了5个war包,可以直接部署在tomcat里运行,需要说明的是,运行Struts2,要求JDK5.0及以上版本,tomcat5.5及以上版本。这5个应用程序是我们学习Struts2的好DEMO,一些不负责的教材就是拿这些项目的源码充斥起来的。

docs是Struts2的帮助文档,全英文的,看不懂英文的战友还要加强对英文的学习才行啊,想学好Java而英文不好最终吃亏的还是自己,我已经吃了很多。

lib里包含运行Struts2程序所依赖的全部jar包。

src里包含此压缩包里全部源代码,采用maven管理,不熟悉maven战友们可以搜索相关资料进行学习,笔者也有专门文章对其进行讲解。

把压缩包解压缩到硬盘,你就顺利完成了安装过程,HOHO,是不是感觉被忽悠了,开个玩笑,其实大部分开源应用都是这样“安装”的,只不过有的需要一些环境变量的配置而已。


*/

三、创建一个山寨级Struts2应用程序

笔者的开发环境 :jdk1.6.0_04、tomcat6.0、eclipse3.3.1.1、MyEclipse6.0 (囧再一次轻轻鄙视一下自己的盗版行为 囧 )、Struts2.1.6、WindowsXP SP2

任务 :完成用户登陆验证,当用户名为Helloworld,密码为Helloworld,通过验证,页面进入index页面,若用户名或密码错误,页面跳回login页面,并给出提示信息。



1、创建一个Web project,在根目录下创建login.jsp,代码如下:



Jsp代码
<%@ page language="java" pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>登录</title>
<style>*{margin:0px;padding:0px;font-size:12px;}</style>
</head>

<body>
<form action="login.action" method="post">
用户名:<input type="text" name="uname"/><br/>
密 码:<input type="password" name="upwd"/><br/>
<input type="submit" value="登录" />
</form>
</body>
</html>

<%@ page language="java" pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>登录</title>
<style>*{margin:0px;padding:0px;font-size:12px;}</style>
</head>

<body>
<form action="login.action" method="post">
用户名:<input type="text" name="uname"/><br/>
密 码:<input type="password" name="upwd"/><br/>
<input type="submit" value="登录" />
</form>
</body>
</html>

熟悉Struts1的战友都熟悉,表单提交的action一般都是以.do的结尾,在Struts2中这个后缀被改成了.action,这与WebWork是一致的,从这点也反映出Struts2与WebWork的亲缘关系,当然,这个后缀也是可以通过配置来修改的。

修改tomcat根目录下conf/server.xml,在<Host>结点之间添加如下代码:



Xml代码
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/struts2app" docBase="H:\workspaceforMyEclipse\struts2app\WebRoot" reloadable="true" />
</Host>

<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/struts2app" docBase="H:\workspaceforMyEclipse\struts2app\WebRoot" reloadable="true" />
</Host>

/*赏心悦目的注释

path是项目虚拟路径,可以通过http://localhost:8080/struts2app访问项目的欢迎页,docBase是项目的物理路径,即项目在硬盘中的存放路径,路径中的WebRoot是项目的根目录,reloadable的参数值为true和false,当设置为true的时候,tomcat可以运行监测程序去监测项目文件是否有改动,如果有改动,tomcat会重新加载,当然,这样的效率是很低的,只有在开发中才这样设置,真正部署的时候,这个值是设为false的。经过这样修改,我们不需要将项目文件拷贝到tomcat的webapp目录下,tomcat启动后会自动加载Context结点项目,方便了我们的开发。

*/



修改WebRoot/WEB-INF/web.xml,修改项目欢迎页。



Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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">
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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">
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>

现在启动tomcat,访问http://localhost:8080/struts2app/

如果看到login.jsp页面的内容,说明前面的配置是正确的。

停止tomcat服务。



2、添加Struts2配置

在Struts2的解压缩文件夹内的lib文件夹里, 我们找到下列5个jar包

commons-logging-1.0.4.jar
freemarker-2.3.13.jar
ognl-2.6.11.jar
struts2-core-2.1.6.jar
xwork-2.1.2.jar
把他们复制到项目根目录下的\WEB-INF\lib\文件夹内。这5个jar包是我们运行Struts2应用程序所依赖的最基本的5个jar包。

在工程的src目录下我们创建一个struts.xml文件,文件代码如下:



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" extends="struts-default">
<action name="login" class="com.songlu.LoginAction">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>

<?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" extends="struts-default">
<action name="login" class="com.songlu.LoginAction">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>

/*赏心悦目的注释

关于这个文件的作用以及各个结点和结点属性的含义,笔者觉得现在解释只会扰乱初学者的思路,挫伤学习积极性,增加学习的恐惧。笔者认为,按照笔者的讲述让初学者第一个Struts2应用程序成功跑起来才是更重要的,这会对初学者产生极大的成就感,这种成就感是很有战略意义的。

笔者有专门的文章对其进行介绍,但不建议你现在就去阅读和理解他们,至少你应该先完成现在这个应用程序,在感受成就感的同时,泡一杯咖啡,然后慢慢阅读我写的相关文章。

*/

在src目录下,我们创建一个名为LoginAction的类,他的包名com.songlu

/*赏心悦目的注释

如果你是个愤青,或对宋陆不满,你可以改成com.liyuchun或者com.furong,当然,你要同时修改之前写的struts.xml中相关代码,但是,建议你还是不要改,你可以瞄一瞄页面左上角的那个头像,相信他还是比liyuchun、furong要顺眼很多。


*/

LoginAction的代码如下:



Java代码
package com.songlu;

public class LoginAction {
private String uname;
private String upwd;
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpwd() {
return upwd;
}
public void setUpwd(String upwd) {
this.upwd = upwd;
}

public String execute(){
return "success";
}
}

package com.songlu;

public class LoginAction {
private String uname;
private String upwd;
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpwd() {
return upwd;
}
public void setUpwd(String upwd) {
this.upwd = upwd;
}

public String execute(){
return "success";
}
}


修改WebRoot/WEB-INF/web.xml,添加Struts2过滤器



Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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">

<filter>
<filter-name>struts</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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">

<filter>
<filter-name>struts</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
在根目录下创建login.jsp,代码如下:



Jsp代码
<%@ page language="java" pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>主页</title>
</head>

<body>
欢迎你${uname}!
</body>
</html>

<%@ page language="java" pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>主页</title>
</head>

<body>
欢迎你${uname}!
</body>
</html>

启动tomcat,请求:http://localhost:8080/struts2app/

这时候应该会报404错误,原因很简单,tomcat根本没有启动成功,而是报了一大堆异常。

Struts2 Unable to load configuration. - bean - jarWEB-INF/lib/struts2-core-2.1.2.jar!/struts-default.xml:46:178

是不是感觉又被忽悠了?别怪我啊战友们,这是apache的失误。按照官方文档说明,运行Struts2必须加载5个核心jar包,也就是咱们一开始拷贝的5个jar包,如果你用的是Struts2之前的版本是没有问题的,但是如果按照笔者所说去下载这个新版本,就会报如上错误,因为还需要加载另外两个jar包,可是官方的说明文档没有更新,笔者在试验的时候也在这里被晃了一下。

解决方案:在Struts2的解压缩文件夹内的lib文件夹里, 我们找到下列2个jar包

commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
把他们复制到项目根目录下的\WEB-INF\lib\文件夹内。

重新启动tomcat,请求:http://localhost:8080/struts2app/

这个时候应该可以正常看到登陆页,如果还有异常,那你就要仔细检查之上步骤有没有遗漏或错误。

在用户名输入文本框内输入:李宇春,点击登陆按钮!

提交->欢迎你李宇春

至此,一个Struts2应用程序算是真正运行成功了。恭喜恭喜!同喜同喜!

接下来,你可以泡杯咖啡,然后去阅读一些关于struts.xml这个文件的文章资料,或者去阅读一些关于maven的文章资料。当你学累的时候,可以回来继续看本文章,完成应用程序剩余部分,即登陆的验证。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值