今天是我第一次用博客,虽然还有好多的不懂,但是我还是会努力的把自己学到的写下来,分享给大家;
一,SSH框架中的struts2的搭建流程
1.在搭建struts2之前,我们首先要有struts2的jar包,在这里我介绍大家去http://www.apache.org/官网下载,
之后放到lib目录下,我下载的是struts-2.3.30版本,以后在使用struts2.x时要注意版本;
2.当然struts2的jar包有好多可能你在开发中用不上,我在这里就只列出必须要有的;
3.在导完包后,我们就要把它与java项目连接起来,去到项目的WEB-INF下有个web.xml,struts2的入口点是一个过滤器,
因此,sturts2要按过滤器的方式配置。如果没有那就是你在创建项目的最后一页忘了勾上选项,可以如下配置web.xml;
首先在xml文件里配置信息头,注意根据你版本填写;
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
然后,再以过滤器的形式配置引入struts2jar包,注意在后面的版本变成两个过滤器啦;
<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>
4.配置好web.xml文件后,我们就要编写一个用于替代servlet的Action类,注意Action是个特殊类,要继承ActionSupport类;
ActionSupport类不但实现了Action的接口,还实现了验证和国际化相关的接口;
1 import com.opensymphony.xwork2.ActionSupport; 2 3 public class IndexAction extends ActionSupport { 4 // 模拟IndexServlet的doGet方法 5 // 跟Servlet最大的差异:没了request,也没了response 6 public String execute1() { 7 8 // return 9 // "success"取代request.getRequestDispatcher("index.jsp").forward(request, 10 // response); 11 return "success"; 12 } 13 }
5.编写完Action类后,我们要配置struts.xml文件,struts2中最核心的是Action,而Action的核心就是struts.xml,struts.xml集中了所有页面的导航定义。
掌握struts.xml是掌握struts2项目的关键所在,struts.xml的配置如下;
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <!-- 上面的头,注意版本,从样例里复制过来 showcase.warWEB-INFsrcjavastruts.xml --> <struts> <!-- 第1步:先定义一个包 --> <package name="mypck001" extends="struts-default"> <!-- 第2步:定义一个action,配置跳转信息 name 类似于Servlet @WebServlet("/IndexServlet") http://xxxx/xxx/Index.action http://xxxx/xxx/Index class 对应于自己写的Action类 当不写method属性时,默认调用的是execute --> <action name="Index" class="ssh.action.IndexAction" method="execute1"> <!-- 跳转是forward /WEB-INF/是防止jsp不经过action就可以访问 --> <result name="success">/WEB-INF/jsp/index2.jsp</result> <result name="error">/WEB-INF/jsp/s_tag.jsp</result> </action> </package> </struts>
注意:Action的name一定要写成代码里显示的形式,没必要后面加“.do”或“.action”这样的后缀形式;<result/>之间定义的JSP页面要把全路径写出来。
6.经过这几步后,启动你的服务器,在地址栏输入登录界面的地址,一个简单的struts2框架就搭建好了……
在struts.xml中,是采用package来管理各种action的。
package标签中的namespace指定了该包的命名空间。
extends是说当前这个包继承自struts-default包,可以在struts2-core-2.2.3.1.jar中的struts-default.xml文件中找到这个包,这个包被定义成抽象的,它不能包含有action。
包中的每一个action标签都和一个逻辑处理类进行了映射,name指定了这个action的名字,和包的namespace组合起来,可以直接访问这个逻辑处理类。
class指定了逻辑处理类的位置,method指定了进行逻辑处理类中进行逻辑处理的方法,这个execute很重要,而且它有固定的返回类型,就是String。
result标签就是根据逻辑判断之后,execute方法返回的字符串,根据返回的字符串,来进入到指定的页面。这里一定要把跳转的地址写清楚,明白。否则浏览器会报404的错误