zoukankan      html  css  js  c++  java
  • 菜鸟学SSH(一)——Struts实现简单登录(附源码)

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


    登录页面:

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

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
    <title>Insert title here</title>
    </head>
    <body>
        <form action="login.do" method="post">
            用户:<input type="text" name="username"><br>
            密码:<input type="password" name="password"></br>
            <input type="submit" value="登录">
        </form>
    </body>
    </html>

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

    web.xml:

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

    <?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>
        <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>  
    </web-app>



    struts-config.xml:

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

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



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

    package com.lsj.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 ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
            
            LoginActionForm laf = (LoginActionForm)form;
            String username = laf.getUsername();
            String password = laf.getPassword();
            
            UserManager userManager = new UserManager();
            try {
                userManager.login(username, password);
                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");
        }
    
    }


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



    源代码

  • 相关阅读:
    uva 1391(2-SAT)
    uva 1146(2-SAT+二分判断)
    uva 12167(强连通分支)
    uva 11324(强连通分支+DAG)
    Codeforces Round #227 (Div. 2) 解题报告
    uva 10319(2-SAT)
    uva 610(割边)
    uva 11504(强连通分支)
    测试:网页测试,入门面试题
    测试:安装包的测试
  • 原文地址:https://www.cnblogs.com/liushuijinger/p/3355052.html
Copyright © 2011-2022 走看看