codecamp

SSH Struts实现简单登录(附源码)

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");  
    }  

}  

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

关于 SSH
SSH Struts2国际化手动切换版
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }