Struts与Model2(二)

四.源码示例

Struts环境搭建:

 1.首先要下载struts的jar包,地址http://struts.apache.org/

 2.解压后将lib文件夹里的jar包都加入到项目中

 3.在webapps文件夹中解压struts-blank.war,将其中的struts-config.xml拷贝到项目中

 4.配置web.xml部署ActionServlet。这个格式是相对固定的,所以一般复制即可:

<?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>
  
  <servlet>
   <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
     <param-name>config</param-name>
     <param-value>/WEB-INF/struts-config.xml</param-value>
    </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>
  </servlet>

<servlet-mapping>
   <servlet-name>action</servlet-name>
   <url-pattern>*.do</url-pattern>
  </servlet-mapping>  
</web-app>


 

 5.配置struts-config.xml部署Action、ActionForm。

   其中type均为你项目中Action和ActionForm所在包的完整路径;

   name可以随便起,但是Action中的name必须与它用到的ActionForm的name相一致;

   action中要添加scope="request"这个属性,因为scope默认是session,这个可以根据实际情况而定。

<?xml version="1.0"encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache SoftwareFoundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

<struts-config>
        <form-beans>
                <form-beanname="loginForm" type="com.dan.struts.LoginActionForm"/>
        </form-beans>
        
        <action-mappings>
                <actionpath="/login"
                                type="com.dan.struts.LoginAction"
                                name="loginForm"                
                                scope="request"                
                                >
                        <forwardname="success" path="/login_success.jsp"/>
                        <forwardname="error"path="/login_error.jsp"/>                
                </action>
        </action-mappings>
</struts-config>


 

源码:

LoginAction.java

package com.dan.struts;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class LoginAction extends Action {

@Override
        public ActionForwardexecute(ActionMapping mapping, ActionFormform,
                        HttpServletRequestrequest, HttpServletResponseresponse)
                        throwsException {
                
                LoginActionFormlaf = (LoginActionForm)form;
                Stringusername =laf.getUsername();
                Stringpassword =laf.getPassword();
                
                UserManageruserManager = newUserManager();
                try{
                        userManager.login(username,password);
                        returnmapping.findForward("success");
                }catch(Exception e){
                        e.printStackTrace();
                }
                returnmapping.findForward("error");
        }
}


 

LoginActionForm.java

package com.dan.struts;

import org.apache.struts.action.ActionForm;

public class LoginActionForm extends ActionForm{
        
        private Stringusername;
        
        private String password;

public String getUsername(){
                returnusername;
        }

public void setUsername(String username){
                this.username= username;
        }

public String getPassword(){
                returnpassword;
        }

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


 

UserManager.java

package com.dan.struts;

public class UserManager {

public void login(String username, String password)throws Exception{
                if(!"admin".equals(username) || !"admin".equals(password)) {
                        thrownewException();
                }                
        }
}


 

login.jsp

<body>
        <formaction="login.do"method="post">
                用户:<input type="text"name="username"><br>
                密码:<input type="password"name="password"></br>
                <inputtype="submit" value="登录">
        </form>
</body>


 

login_success.jsp

<body>
        ${loginForm.username},登录成功
</body>


 

login_error.jsp

<body>        
        登录失败!
</body>


 

   通过上面对Struts的原理的讲解,我们可以看到,Struts其实就是对Model2中的Servlet的职责又进行了划分,它将一些框架处理部分(如截取URL,分发等)放到ActionServlet进行封装,使我们只需要关心页面和具体的页面流转实现,服务更加人性化。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值