【Struts】——登录示例

上一篇初步了解了Struts,然后再根据一个示例练习,会更好的了解其流程。

这是目录结构:


一、建立Java web项目,下载jar包,拷贝到我们自己项目struts_login –>lib文件夹下


二、配置web.xml文件

        找到资料\struts-1.2.9-bin\webapps\struts-blank\WEB-INF文件中的web.xml文件。复制对ActionServlet的配置,粘贴到我们项目的struts_loginWEB-INF下的web.xml中,代码如下所示。主要是对struts自带的ActionServlet进行配置。

<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>  
   
   
 <!--Standard Action Servlet Mapping -->  
 <servlet-mapping>  
   <servlet-name>action</servlet-name>  
   <url-pattern>*.do</url-pattern>  
 </servlet-mapping>
三、建立ActionForm
        建立ActionForm,继承struts框架中已经写好的ActionForm。在ActionForm中设置用到的数据,并且和表单保持一致。因为提交表单的时候,数据会存在ActionFrom中。

    package com.bjpowernode.struts;  
    import org.apache.struts.action.ActionForm;  
       
    /** 
     * 登录ActionForm,负责表单收集数据. 
     * 表单的属性必须和ActionForm中的get和set的属性一致. 
     * @author summer 
     * 
     */  
    public classLoginActionForm extends ActionForm {  
       
        //用户名。  
        private String username;  
        //密码。  
        private String password;  
         
        //设置密码。  
        public void setPassword(Stringpassword) {  
           this.password = password;  
        }  
        //得到用户名。  
        public String getUsername() {  
           return username;  
        }  
        //设置用户名。  
        public void setUsername(Stringusername) {  
           this.username = username;  
        }  
        //得到密码。  
        public String getPassword() {  
         
           return password;  
        }  
         
    }  
四、建立Action
        在项目中建立Action,同时继承Struts中的org.apache.struts.action.Action重载父类的execute方法。在这里可以完成取出表单中的数据。Action的功能是负责拿到表单数据和调用业务逻辑后进行页面跳转。建立登陆的Action类,LoginAction.java类,调用业务逻辑类UserManagerlogin方法。代码如下所示。

    packagecom.bjpowernode.struts;  
       
    importjavax.servlet.http.HttpServletRequest;  
    importjavax.servlet.http.HttpServletResponse;  
       
    importorg.apache.struts.action.Action;  
    importorg.apache.struts.action.ActionForm;  
    importorg.apache.struts.action.ActionForward;  
    importorg.apache.struts.action.ActionMapping;  
       
    /** 
     *登录Action 
     *负责取得表单数据,调用业务逻辑,返回转向信息. 
     * 
     * @author summer 
     * 
     */  
    public classLoginAction extendsAction {  
       
          @Override  
          public ActionForward execute(ActionMappingmapping,ActionForm form,  
                        HttpServletRequest request, HttpServletResponseresponse)  
                        throws Exception {  
       
       
                 LoginActionForm laf = (LoginActionForm)form;  
                 Stringusername = laf.getUsername();  
                 Stringpassword = laf.getPassword();  
                   
                 UserManager userManager = newUserManager();  
                 //传递用户名和密码  
                 try  
                 {  
                        userManager.login(username, password);  
                        request.setAttribute("username", username);  
                        return mapping.findForward("success");  
                 }catch(UserNotFoundException e)  
                 {  
                        e.printStackTrace();  
                        request.setAttribute("msg","用户不能找到,用户名称=[" +username +"+]");  
                 }catch(PasswordErrorException e)  
                 {  
                        e.printStackTrace();  
                        request.setAttribute("msg","密码错误");  
                 }  
                   
                 return mapping.findForward("error");  
          }  
       
    }  
五、建立struts-config.xml

        我们下载的struts  bin文件夹中的struts-config.xml文件复制到我们的项目的WEB-INF中,删除struts-config.xml中的注释部分。把ActionActionForm配置起来。ActionForm放到<form-beans></form-beans>中,Action配置放到<action-mappings></action-mappings>中,struts-config.xml配置代码如下所示。
       

    <?xml version="1.0" encoding="ISO-8859-1" ?>  
       
    <!DOCTYPE struts-config PUBLIC  
             "-//Apache Software Foundation//DTD Struts Configuration1.2//EN"  
             "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">  
       
       
    <struts-config>  
        <form-beans>  
           <form-bean name="loginForm" type="com.bjpowernode.struts.LoginActionForm"/>  
        </form-beans>  
         
        <action-mappings>  
           <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>  

六、业务逻辑部分

packagecom.bjpowernode.struts;  
   
publicclassUserManager {  
        
      publicvoid login(Stringusername,Stringpassword)  
      {  
             if(!"admin".equals(username))  
             {  
                    thrownewUserNotFoundException();  
             }  
               
               
             if(!"admin".equals(password))  
             {  
                    thrownewPasswordErrorException();  
             }  
      }  
   
}

七、自定义异常类:

    packagecom.bjpowernode.struts;  
       
    public class UserNotFoundExceptionextends RuntimeException {  
       
          public UserNotFoundException() {  
          }  
       
          public UserNotFoundException(Stringmessage) {  
                 super(message);  
          }  
       
          public UserNotFoundException(Throwable cause) {  
                 super(cause);  
          }  
       
          public UserNotFoundException(Stringmessage,Throwable cause) {  
                 super(message, cause);  
          }  
       
    }  
       
    packagecom.bjpowernode.struts;  
       
    public class PasswordErrorExceptionextends RuntimeException {  
       
          public PasswordErrorException() {  
          }  
       
          public PasswordErrorException(Stringmessage) {  
                 super(message);  
          }  
       
          public PasswordErrorException(Throwable cause) {  
                 super(cause);  
          }  
       
          public PasswordErrorException(Stringmessage,Throwable cause) {  
                 super(message, cause);  
          }  
       
    }  

八、登录界面jsp

登录界面login.jsp,错误显示界面login_error.jsp,登录成功界面login_success.jsp。代码如下所示。

login.jsp

<%@pagelanguage="java" contentType="text/html; charset=GB18030"  
   pageEncoding="GB18030"%>  
<!DOCTYPEhtml PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
<title>Inserttitle here</title>  
</head>  
<body>  
<form action="login.do" method="post">  
   用户:<inputtypeinputtype="text" name="username"><Br>  
   密码:<inputtypeinputtype="password" name="password"></br>  
   <input type="submit" value="登录">  
</form>  
</body>  
</html>

login_success.jsp

<%@page language="java"contentType="text/html;charset=GB18030"  
   pageEncoding="GB18030"%>  
<!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
<title>Insert title here</title>  
</head>  
<body>  
  ${username},登录成功!  
</body>  
</html> 

login_error.jsp

<%@page  language="java" contentType="text/html; charset=GB18030"  
   pageEncoding="GB18030"%>  
<!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
<title>Insert title here</title>  
</head>  
<body>  
  <%--  
  <%=request.getAttribute("msg") %>  
  --%>  
    
  ${msg }  
</body>  
</html> 

         这样Struts的一个小示例就完成了,这样也就完成了从初步了解到简单应用,随着今后的不断积累,我们会对struts了解的越来越深入,越来越深刻。





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值