Struts2.0+Spring+Hibernate的搭建和其工作流程

64 篇文章 0 订阅
26 篇文章 0 订阅

1.新建一个web项目.用Myeclipse添加Myeclipse自带的spring和hibernate框架,然后添加struts2.0的包,将三个框架的外部包都添加到/WEB-INF/lib下.

2.配置web.xml文件.
       加入下面代码:

<filter>
   <filter-name>struts2</filter-name>
   <filter-class>
   org.apache.struts2.dispatcher.FilterDispatcher
   </filter-class>
</filter>
<filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

-------------------------------------------------------------

             注:如果这样写

                <filter-mapping>
                          <filter-name>struts2</filter-name>
                          <url-pattern>*.action</url-pattern>
                </filter-mapping>       

                则还要加入如下映射

                <filter-mapping>
                          <filter-name>struts2</filter-name>
                          <url-pattern>*.jsp</url-pattern>
                </filter-mapping>

--------------------------------------------------------------

即所有业务请求都将被FilterDispatcher拦截,传统的struts1.x则是定义一个servlet.

由于要用到spring的依赖注入,(下面会提到).

所以继续添加如下代码

<listener>
   <listener-class>
    org.springframework.web.context.ContextLoaderListener
   </listener-class>
</listener>

如果你的appllication.xml文件没有放在src目录下,则还需加入如下代码

<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

红色部分则为文件的相对路径.

3.写一个简单的登录页面.有两个文本框.

<form action="Login.action" method="post">
            员工号:
        <input type="text" name="empNumber" style="width: 12em;"><br>
             密码:
              <input name="password" type="password" style="width: 12em;"><br>
             <input type="submit" value="提交">
</form>

4.定义一个简单的pojo类,我并没有让它继承 com.opensymphony.xwork2.ActionSupport类,

也没有实现com.opensymphony.xwork2.Action接口.在struts2.0中,一个简单的pojo类也能起到业务逻辑控制器的作用,等价于struts1.x中的Action类。

当然Struts2通常做法是继承com.opensymphony.xwork2.ActionSupport类进行扩展

5.在pojo类中定义要从客户端获取到的数据的属性,并加上其getter和setter方法.

private String empNumber;  //与html中input的name对应即可
private String password;  //与html中input的name对应即可

   public String getEmpNumber()
{
   return this.empNumber;
}

public void setEmpNumber(String empNumber)
{
   this.empNumber = empNumber;
}

public String getPassword()
{
   return this.password;
}

public void setPassword(String password)
{
   this.password = password;
}

然后添加一个public String execute() throws Exception{}方法,

拦截器默认或调用此方法来执行你的业务逻辑控制(如果你在struts.xml中action标记中定义了method属性,则可以将execute换成你定义的方法名).

struts1.x中则是

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,

  HttpServletResponse response) throws Exception{}

由此可看出struts2.0中,自定义的业务逻辑控制器(Action)已经完全与ServletAPI解耦了.更有利于代码重用与维护.

6.写struts.xml文件

     在src目录下新建一个struts.xml文件,内容如下(没有使用spring):

<?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="login" extends="struts-default" namespace="">

   <!-- 登陆配置 method与action中方法名称对应-->
   <action name="Login"
   class="com.work.action.LoginAction" method="execute">

    <result name="success">/authority/index.jsp</result>
    <result name="error">/Login.jsp</result>

   </action>

</package>

</struts>

这里的name指的是客户端请求的前缀,如Login.action去掉.action

如果你不用sping来管理你的对象工厂,则class的值为你自己写的Action的完整包路径.如class="com.work.action.LoginAction",如果你需要spring来管理你的对象工厂,也就是说利用spring的依赖注入来创建并注入你需要的业务对象,则class的值为application.xml里定义的<bean>节点的name属性所指定的值,

如application.xml中定义如下bean节点.

.............
<!-- 登录 -->
<bean name="LoginAction" class="com.work.action.LoginAction">
     <property name="daoFactory" ref="myFactory"></property><!--这里注入 业务逻辑,非必须-->
</bean>
............

在struts.xml中定义(使用了spring):

<?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="login" extends="struts-default" namespace="">

   <!-- 登陆配置 -->
   <action name="Login"
   class="LoginAction" method="execute">

    <result name="success">/authority/index.jsp</result>
    <result name="error">/Login.jsp</result>


   </action>

</package>

</struts>

就这样,整个框架就算搭好了,那些业务逻辑则自己去添加.

相关的包请到以下地址下载 http://download.csdn.net/source/1855000 ----------------------------------------------- 个人知识管理系统 数据库:MySQL 5.0 Struts2.0 + Spring + Hibernate + DWR 对于三大框架目还在学习阶段,做得不好的地方欢迎来mail指正yukiceo@126.com,或http://blog.csdn.net/yukiceo 每天面对大量的知识,时间一长,容易造成某些知识点的生疏或者遗忘,本系统方便对知识进行分类收录,并结合人类遗忘规律,及时对相应的知识点进行提示复习。 提示复习的时间分别是: 第一次:10 分钟, 第二次:30分钟, 第三次:4 小时 第四次:12小时 第五次:24小时 第六次:3 天 第七次:7 天 之后 :每15天 当然如果没有及时更新复习的话,下一次的复习更新时间会在上一次复习更新后顺延。 由于对页面样式了解不多,所以写出来的样式目只在IE上运行良好,在火狐上效果不佳,并且在火狐上提示复习这一块一直出不来,目也在研究CSS,希望能写出适合大多数浏览器的样式。 用户可建立自己的知识分类,对于私密信息(比喻日记等)可增加访问权限,只有登陆用户才能看到,非登陆用户只能浏览公开信息,以及增加新的信息,但无权修改以删除信息,用户权限拦截采用了Struts2的自定义拦截器 用户只有一个,就是自己,所以用户采用硬编码方式,但是密码较验采用了MD5加密码方式,在LoginAction中,可以自行修改成自己的(暂时用户名yukiceo,密码yukiceo)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值