zoukankan      html  css  js  c++  java
  • struts2——简单登陆实例

    从今天开始,一起跟 各位聊聊java的三大框架——SSH。先从Struts开始说起,Struts对MVC进行了很好的封装,使用Struts的目的是为了帮助我们减少在 运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。今天通过一个简单的例子来说说Struts。

    登录页面:

    这里面没啥东西,主要就是将action命名成“.do”的形式,让Struts通过配置文件来执行相应操作。

    1. <html>  
    2. <head>  
    3. <meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
    4. <title>Insert title here</title>  
    5. </head>  
    6. <body>  
    7.     <form action="login.do" method="post">  
    8.         用户:<input type="text" name="username"><br>  
    9.         密码:<input type="password" name="password"></br>  
    10.         <input type="submit" value="登录">  
    11.     </form>  
    12. </body>  
    13. </html>  

    PS:表单中的name值必须跟对应的actionform的get、set属性一致。

    web.xml:

    它的作用就是告诉Struts它的配置文件(struts-config.xml)在哪,让Struts可以找到,还有执行的动作(.do),还有加载顺序之类的。

    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <web-app version="2.4"   
    3.     xmlns="http://java.sun.com/xml/ns/j2ee"   
    4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    5.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   
    6.     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
    7.   <welcome-file-list>  
    8.     <welcome-file>login.jsp</welcome-file>  
    9.   </welcome-file-list>  
    10.     
    11.   <servlet>  
    12.     <servlet-name>action</servlet-name>  
    13.     <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>  
    14.     <init-param>  
    15.       <param-name>config</param-name>  
    16.       <param-value>/WEB-INF/struts-config.xml</param-value>  
    17.     </init-param>  
    18.     <load-on-startup>2</load-on-startup>  
    19.   </servlet>  
    20.   
    21.   
    22.   <!-- Standard Action Servlet Mapping -->  
    23.   <servlet-mapping>  
    24.     <servlet-name>action</servlet-name>  
    25.     <url-pattern>*.do</url-pattern>  
    26.   </servlet-mapping>    
    27. </web-app>  



    struts-config.xml:

    从名字上就能看出来,这是Struts的配置文件。form-bean用来接收提交的表单数据,action-mappings用来执行相应的动作。

    1. <?xml version="1.0" encoding="ISO-8859-1" ?>  
    2.   
    3. <!DOCTYPE struts-config PUBLIC  
    4.           "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"  
    5.           "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">  
    6.   
    7. <struts-config>  
    8.     <form-beans>  
    9.         <form-bean name="loginForm" type="com.lsj.struts.LoginActionForm"/>  
    10.     </form-beans>  
    11.       
    12.     <action-mappings>  
    13.         <action path="/login"   
    14.                 type="com.lsj.struts.LoginAction"  
    15.                 name="loginForm"          
    16.                 scope="request"       
    17.                 >  
    18.             <forward name="success" path="/login_success.jsp" />  
    19.             <forward name="error" path="/login_error.jsp"/>         
    20.         </action>  
    21.     </action-mappings>  
    22. </struts-config>  



    这个类就是用来处理用户登录的业务逻辑

    1. package com.lsj.struts;  
    2.   
    3. import javax.servlet.http.HttpServletRequest;  
    4. import javax.servlet.http.HttpServletResponse;  
    5.   
    6. import org.apache.struts.action.Action;  
    7. import org.apache.struts.action.ActionForm;  
    8. import org.apache.struts.action.ActionForward;  
    9. import org.apache.struts.action.ActionMapping;  
    10.   
    11.   
    12. public class LoginAction extends Action {  
    13.   
    14.     @Override  
    15.     public ActionForward execute(ActionMapping mapping, ActionForm form,  
    16.             HttpServletRequest request, HttpServletResponse response)  
    17.             throws Exception {  
    18.           
    19.         LoginActionForm laf = (LoginActionForm)form;  
    20.         String username = laf.getUsername();  
    21.         String password = laf.getPassword();  
    22.           
    23.         UserManager userManager = new UserManager();  
    24.         try {  
    25.             userManager.login(username, password);  
    26.             return mapping.findForward("success");  
    27.         }catch(UserNotFoundException e) {  
    28.             e.printStackTrace();  
    29.             request.setAttribute("msg", "用户不能找到,用户名称=【" + username + "】");  
    30.         }catch(PasswordErrorException e) {  
    31.             e.printStackTrace();  
    32.             request.setAttribute("msg", "密码错误");  
    33.         }  
    34.         return mapping.findForward("error");  
    35.     }  
    36.   
    37. }  


    通过上面这个简单的小实例,大家可以清晰的看出,两个配置文件起到了一个很好的串联作用。也正是因为有配置文件,所以才是程序变得非常的灵活。这个小例子 比较简单,配置文件承担的责任不是很多,后面的东西会更多的用到配置文件,体会就会更加的深刻了。最后为大家附上源码方便一起研究讨论。

  • 相关阅读:
    windows wmi
    python编码规范
    gogs安装
    mariadb-5.5安装
    python kafka
    delimiter关键字
    phpstorm设置背景图片
    linux 下mysql 关闭 启动
    通过下载git包来安装git
    git clone 某个链接时候报错Initialized empty Git repository in 不能克隆
  • 原文地址:https://www.cnblogs.com/zhangtan/p/5736911.html
Copyright © 2011-2022 走看看