如何搭建一个struts的框架

         上篇博客中已经学习了Struts这个框架是如何实现MVC,这篇博客简单的介绍一下struts的框架如何搭建、一条线怎么走通。

         首先需要建立一个java的web项目,因为Struts是一个web框架。建立完毕后需要在项目中引入struts相关的jar包到WEB/lib目录下。(下图供参考)


         基本的打底工作完成后就可以开始进行配置,控制一条线的流通。以逻辑最熟悉登录为实例。

第一配置:web.xml

         上篇博客中我们说到ActionServlet会截取URL请求,那么浏览器中会有页面转向、也会有URL请求。那么什么样的URL会被截取这就是在web.xml中配置的。

<span style="font-size:18px;"><?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"> 
 <servlet>
   <servlet-name>action</servlet-name>
   <servlet-class>org.apache.struts.action.ActionServlet</servlet-class><!--完整的ActionServlet路径-->
   <init-param>
     <param-name>config</param-name>
     <param-value>/WEB-INF/struts-config.xml</param-value><!--action的配置文件路径-->
   </init-param>
   <init-param>
     <param-name>debug</param-name>
     <param-value>2</param-value>
   </init-param>
   <init-param>
     <param-name>detail</param-name>
     <param-value>2</param-value>
   </init-param>
   <load-on-startup>2</load-on-startup>
   <!--load-on-startup元素标记容器是否在启动的时候就加载这个servlet;
     
       当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
      当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
   -->
 </servlet>
 
 
 <!-- Standard Action ServletMapping -->
 <servlet-mapping>
   <servlet-name>action</servlet-name>
   <url-pattern>*.do</url-pattern><!--当URL的末尾是.do时会被ActionServlet拦截并截取,这里可任意配置标识-->
 </servlet-mapping> 
</web-app> </span>


    第一配置完成后就可以确定要截取什么样的URL请求和要读取的action配置文件。

    第二配置:struts-config.xml

         有web.xml配置文件的配置可确定要读取的action配置文件,在该action配置文件中就要确定调用那个action。

<span style="font-size:18px;"><?xml version="1.0"encoding=" UTF-8" ?>
 
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD StrutsConfiguration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
 
<struts-config>
   <form-beans>
      <!-- 配置的ActionForm,可以传递数据 -->
      <form-bean name="loginForm" type="com.bjpowernode.struts.LoginActionForm"/>
   </form-beans>
  
   <action-mappings>
      <!--
      action——
         path:对应截取完毕的URL
         type:要调用的action的完整路径
         name:对应要使用的ActionForm
         scope:设置将ActionForm设置位置,默认为session
      forward——
         name:ActionForward根据设置的值匹配forward的那么熟悉
         path:要调整的页面的路径
        -->
      <action path="/login"  
            type="com.bjpowernode.struts.LoginAction"
            name="loginForm"     
            scope="request"   
            >
         <forward name="success" path="/login_success.jsp"/>
         <forward name="error" path="/login_error.jsp"/>     
      </action>
   </action-mappings>
</struts-config></span>

        第二个配置完成后就可以真正的实现根据请求的URL调用对应的action同时将请求的数据或返回的数据对应到ActionForm中。ActionForm是需要我们自己根据数据库的字段建立的,这个登录实例中我们会用到“用户名”和“密码”。

<span style="font-size:18px;">/**
 * 登录ActionForm,负责表单收集数据
 * 表单的属性必须和ActionForm中的get和set的属性一致
 * @author yxf
 *
 */
@SuppressWarnings("serial")
public classLoginActionForm extends ActionForm {
   private String username;//用户名
   private String password;//密码
 
   public String getUsername() {
      return username;
   }
   public void setUsername(Stringusername) {
      this.username = username;
   }
 
   public String getPassword() {
      return password;
   }
   public void setPassword(Stringpassword) {
      this.password = password;
   }
}</span>


*注:jsp页面在提交或action返回数据时时根据get和set后的名字确定的。例如getUsername对应到页面上就是将get后的Username首字母变为小写即username。

        ActionForm建立,两个配置完成后整体的流程就确定了,剩下的就是对action的代码编写了。

<span style="font-size:18px;">/**
 * 登录Action
 * 负责取得表单数据、调用业务逻辑、返回转向信息
 *
 * @author Administrator
 *
 */
public classLoginAction extends Action {
 
   @Override
   public ActionForwardexecute(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception {
      LoginActionFormlaf = (LoginActionForm)form;//拿到ActionForm
      Stringusername = laf.getUsername();//获取用户名
      Stringpassword = laf.getPassword();//获取密码
      UserManageruserManager = newUserManager();
      try {
         userManager.login(username,password);//调用manager方法验证
         return mapping.findForward("success");//成功跳转到配置的成功页面
      }catch(UserNotFoundExceptione) {
         e.printStackTrace();
         request.setAttribute("msg", "用户不能找到,用户名称=【" + username + "】");
      }catch(PasswordErrorExceptione) {
         e.printStackTrace();
         request.setAttribute("msg", "密码错误");
      }
      return mapping.findForward("error");//失败跳转到配置的失败页面
   }
}</span>


 

小结:

         整体的流程实现就是这样的,容易理解实现也比较简单。需要进一步了解的是struts框架是如何根据配置文件完成类的实例化。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值