【Struts2】Struts2纯手工安装、配置以及Helloworld,以最新版struts 2.3.20 GA做样例
很多网上的教程对Struts2的配置、安装弄得不明不白,非常多高手以为小白是什么都懂。很多细节上面的地方没有说明清楚,甚至还有在Maven上面解说的,要知道Struts2跟Maven没有半点的关系。全然能够像其他的javaweb插件那样在web.xml而且启动。同一时候复制那些包又没有说清楚。以致于依照各种教程的web.xml写好。之后,执行Tomcat一堆的错误,永远卡在Dispatcher initialization failed上面,半天出不来。弄得仅仅好在已经配置好Struts的project里面。直接拷贝一个WEB-INF过来,到头来终究没有学会怎样配置Struts2。
然后,Struts2的样例杂糅很多国际化的东西在里面。让人一头雾水。
一、基本目标
利用Eclipse for Javaee建立例如以下的一个Struts2简单project,在文本框输入完东西,马上显示:
这里不可能跟你做一个用户登录系统然后查表来说明Struts2,由于Struts2仅仅是Servlet的一个框架,它代表仅仅是扮演JSP与JAVA文件交互的角色。
二、基本准备
1、在Eclipse for Javaee里面新建一个Webproject,带web.xml文件的。不懂能够參考《【Javaweb】Eclipse for JavaEE新建的Webproject自己主动生成web.xml》(点击打开链接)
2、直接在Struts2的官网(点击打开链接)下载最新版的Struts2,选择当中的Full版本号。理论上仅仅下载lib版本号也能够。可是不知道会不会少了东西,并且最主要是笔者的网络下载lib版没有资源。所以直接下载Full版本号。打开速度可能比較慢,也能够把http://222.200.129.45/mirrors.cnnic.cn/apache//struts/2.3.20/struts-2.3.20-all.zip这个下载地址拷贝到下载工具里面直接下载。
2、下载之后解压把lib中的例如以下的jar包拷贝到你webproject的lib文件中面,不要抱有为了省时间。或者什么的,把lib中的全部包。拷贝到网络project的幻想。
这样反而启动不了project,即使web.xml写好了,也会有Dispatcher initialization failed的问题。
预计是包冲突的原因吧。仅仅复制例如以下九个jar过去,笔者亲測可以顺利启动project。
3、对webproject的web.xml文件写入例如以下代码。之所以使用过滤器。不是说要拦截什么页面。意思是要求全部页面都实现struts2的特性。拦截器的作用。详细能够參见《【Filter】拦截器Filter》(点击打开链接),这段代码在struts2官方提供的文档中没有提供。从网上趴下来的,struts2以web.xml方法来做,不用maven,都这样写,同一时候请辨别网上那些struts1方法,struts1的web.xml写法是启动不了struts2的:
<? xml version="1.0" encoding="UTF-8"?>
<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 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
弄到这里。struts就配置完成了。把它配置到Tomcat里面,就能够启动server了。
三、基本思想
以下開始建立一个Helloworld的Struts2,本project的终于文件夹结构例如以下图:
四、制作过程
1、首先建立一个index.jsp页面,非常easy。一个简单得不能再简单的表单。这里值得注意的是action的指向是calculation,然后使用到EL表达式。取出一会儿传递过来的id值。EL表达式。能够參考《【Filter】利用过滤器Filter解决post传递的编码问题与利用EL表达式简化參数传递》(点击打开链接),非常easy的东西,仅仅是为了不用写那么长的jsp代码
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>index</title>
</head>
<body>
${id}
<form method="post" action="calculate">
<input type="text" name="id" /><br>
<input type="submit" value="go" />
</form>
</body>
</html>
2、右击src目录,选择新建其他文件。
3、在弹出的窗体输入xml文件,找到而且必须命名为struts.xml。这将是以后控制action跳转的文件
4、在struts.xml里面写入例如以下代码,意思为在test包中,刚才calculate那个action将会跳转到test包以下的a.java中的b方法处理。
处理完之后,假设b放回的是success,那么就跳转回index.jsp
struts要求全部java文件必须处于包的以下,不得外露于根文件夹。那仅仅好新建一个test包,在于里面写个a文件咯。部分介绍struts2的书籍非常不负责任。说,每个java必需要有默认的execute方法,事实上不是的,你能够自己指定方法。
<?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="test" extends="struts-default">
<action name="calculate" class="test.a" method="b">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>
5、a.java代码例如以下。这个Java文件我也不想写得这么复杂的,可是struts要求这样写的。
package test; import com.opensymphony.xwork2.ActionSupport; public class a extends ActionSupport {
private String id; public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String b() {
System.out.println("hello," + id);
return SUCCESS;
}
}
首先,全部Action所相应的java文件,必须引入struts2包。表明这是一个struts2的action:
import com.opensymphony.xwork2.ActionSupport;
其次全部方法必须继承ActionSupport类,
而且。为了接住index.jsp穿过来的name="id"的文本,你必须为这个id定义一个静态成员,然后设置对应的getter与setter方法,这才相当于Servlet里面的
request.getParameter("id");
getter。setter方法在eclipse for javaee中是不用自己打的,快捷键ALT+SHIFT+S,或者右键选择Source也能够:
然后快捷键R,就会出现例如以下的界面,为静态成员例如以下所看到的的自己主动创建Setter与Getter:
然后定义一个带字符串返回值的方法B,在里面写入一个打印到控制台的语句。本project运行的时候,便会在控制台中打印出传过来的变量:
之后返回一个SUCCESS变量。相当于一个"success"字符串。这东西在父类里面就已经定义好了。
五、总结
做到这里,整个Struts2简单的Helloworld就做完了,返回SUCCESS之后。Struts2会又把这个id放到request容器里面,前台取值就行立即取到。
整个传值步骤例如以下所看到的,有点乱。但综合上面的制作过程,大家应该可以看懂……
【Struts2】Struts2纯手工安装、配置以及Helloworld,以最新版struts 2.3.20 GA做样例的更多相关文章
- 【struts2】<package>的配置
<package>元素可以把逻辑上相关的一组Action.Result.Intercepter等元素封装起来,形成一个独立的模块,package可以继承其他的package,也可以作为父包 ...
- 基于IDEA 最新Spirng3.2+hibernate4+struts2.3 全注解配置 登录
原文 基于IDEA 最新Spirng3.2+hibernate4+struts2.3 全注解配置 登录 首先说说 IDEA 12,由于myeclipse越来越卡,我改用idea12 了,发现其功能强悍 ...
- Struts2 拦截器具体配置过程
拦截器差点儿遍布每个程序中,所以贴出拦截器配置的具体过程,希望可以帮到大家. Struts2 拦截器具体配置过程 <interceptors> <!-- 先定义拦截器 --> ...
- Struts2(五)常量的配置
Struts2 常量大多在 默认的配置文件中已经配置好,但根据用户的需求不同,开发的要求不同,需要修改这些常量值,修改的方法就是在配置的文件对常量进行重新配置 在struts.xml 文件中使用< ...
- Struts2拦截器的配置
struts2拦截器interceptor的三种配置方法方法1. 普通配置法 <struts> <package name="struts2" extends=& ...
- struts2零配置參考演示样例
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2 ...
- struts2开发流程及配置,域对象对数据存储的3种方式
一.开发流程 1)引入 jar 包,其中必须引入的有(我是用的struts是2.3.32) commons-fileupload-1.3.2.jar |文件上传下载commons-io-2.2 ...
- Struts2的使用注解配置Action(零配置)
1.首先引入struts2注解的jar包:struts2-convention-plugin.jar ------------------------------第一种方式-------------- ...
- 转载 - Struts2 拦截器详细配置过程
出处:http://www.blogjava.net/zzzlyr/archive/2009/10/12/297998.html Struts2 拦截器详细配置过程 1:所有拦截器的超级接口Inter ...
随机推荐
- Android之输入内容监听回车键【Editor】
2.输入内容时按下回车键时监听 username.setOnEditorActionListener(new OnEditorActionListener() { @Override public b ...
- 语法错误: unexpected ''); ?></span></span></h2> ' (T_CONSTANT_ENCAPSED_STRING), expecting ',' or ';'
语法错误: unexpected ''); ?></span></span></h2>' (T_CONSTANT_ENCAPSED_STRING), expe ...
- Linux 命令行光标快速选中移动快捷键
Ctrl+Alt+T 打开终端一些常用的终端快捷键:Ctrl+L 清空屏幕(功能相当于命令clear)Ctrl+U 剪切文本直到行的起始(可以用于清空行)Ctrl+K 剪切文本直到行的末尾Ctrl+Y ...
- [转]Adobe Creative Cloud 2015 下载 Adobe CC 2015 Download
Adobe Creative Cloud 2015 下载 Adobe 宣布 Creative Cloud 设计套件全线更新! Adobe CC 2015新功能包括: – Premiere Pro ...
- 事件处理:pull与push
push:对应函数调用:属于发起方主动型 pull :对应消息循环:模型为信息池+事件循环+派发:属于接收者主动: 通常这种模式的角色对应于消息中心(事件派发中心). 观察者模式:变化+派发.
- 洛谷1414 又是毕业季II
问题描述 彩排了一次,老师不太满意.当然啦,取每位同学的号数来找最大公约数显然不太合理.于是老师给每位同学评了一个能力值.于是现在问题变为,从n个学生中挑出k个人使得他们的默契程度(即能力值的最大公约 ...
- Python中的引用计数法
目录 引用计数法 增量操作 计数器溢出的问题 减量操作 终结器 插入计数处理 引用计数法 增量操作 如果对象的引用数量增加,就在该对象的计数器上进行增量操作.在实际中它是由宏Py_INCREF() 执 ...
- Ubuntu上使用过的命令,Linux常用命令,mount 硬盘挂载, ls 列表list命令,cp 复制copy命令,mkdir 创建文件夹 ,nano 编辑器,cat 文档合并,chmod 文件权限,ssh win10连接ubuntu服务器的步骤
man 帮助 > man ls # ubuntu的帮助 tar.gz 压缩解压 > tar -zcvf yzn.tar.gz /home/yzn # 压缩 > tar -zxvf y ...
- 一个Web报表项目的性能分析和优化实践(三) :提高Web应用服务器Tomcat的内存配置,并确认配置正确
摘要 上一篇,一个Web报表项目的性能分析和优化实践(一):小试牛刀,统一显示SQL语句执行时间 ,讲述了项目优化的整体背景,重点讲述了统一显示了Web项目SQL语句的执行时间. 本篇,将重点介绍提高 ...
- Java基础学习总结(15)——java读取properties文件总结
一.java读取properties文件总结 在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResource ...