欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Struts1登陆Demo

程序员文章站 2022-04-08 20:01:10
...

本实例是Struts1的一个入门实例

采用的编辑器是Myeclipse 10

 

一,创建模型

本事列涉及两个JavaBean

1.UserInfo.java:描述用户的实体类

package cx.mystruts.entity;

public class UserInfo {
	private String uid;
	private String pwd;
	public String getUid() {
		return uid;
	}
	public void setUid(String uid) {
		this.uid = uid;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public UserInfo(String uid, String pwd) {
		super();
		this.uid = uid;
		this.pwd = pwd;
	}
	public UserInfo() {}

}

2.UserService.java:处理业务逻辑的JavaBean

package cx.mystruts.service;

import java.util.HashMap;
import java.util.Map;

import cx.mystruts.entity.UserInfo;

public class UserService {
	
	//构造Map对象,用于存入UserInfo的集合
	private Map userInfoMap=new HashMap();
	//构造UserService静态对象,实现单列工厂模式
	private static UserService userService=new UserService();
	
	//构造函数私有,单列模式,模拟数据库产生UserInfo的集合
	private UserService(){
		try{
			UserInfo u=new UserInfo("cx","123456");
			userInfoMap.put(u.getUid(), u);
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}
	
	//定义静态方法
	public static UserService newInstance(){
		return userService;
	}
	
	public UserInfo login(String uid,String pwd){
		//判断用户输入的用户名是否在集合中
		if(this.userInfoMap.containsKey(uid)){
			UserInfo findUserInfo=(UserInfo)this.userInfoMap.get(uid);
			if(findUserInfo.getPwd().equals(pwd)){
				return findUserInfo;
			}
			return null;
		}
		return null;
	}

}

 二.以下步骤需要添加Struts支持,直接使用MyEclipse添加,这里不介绍

1.创建ActionForm

package cx.struts;

import org.apache.struts.action.ActionForm;

public class LoginActionForm extends ActionForm {
	
	private String uid;
	private String pwd;
	public String getUid() {
		return uid;
	}
	public void setUid(String uid) {
		this.uid = uid;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	
	

}

 2.创建控制器

   (1)ActionMapping:包含Action的配置信息,与Struts-config.xml配置文件中的<action>元素对应。

   (2)ActionForm:包含用户的表单数据。当Struts1框架调用execute()方法时,ActionFrom中的数据已经通过了表单验证。

   (3)HttpServletRequest:当前的HTTP请求对象

   (4)HttpServletResponse:当前的HTTP响应对象

package cx.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;

import cx.mystruts.entity.UserInfo;
import cx.mystruts.service.UserService;

public class LoginAction extends Action{
	
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {
		LoginActionForm frm=(LoginActionForm)form;
		String uid=frm.getUid();
		String pwd=frm.getPwd();
		
		UserInfo user=UserService.newInstance().login(uid, pwd);
		if(user!=null){
			request.setAttribute("user", user);
			return mapping.findForward("success");
		}
		return mapping.findForward("fail");
	}

}

 三.视图

1.登陆界面index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    
    <title>User Login</title>

  </head>
  
  <body>
    <form action="login.do" method="post">
      UID:<input type="text" name="uid" />
      PWD:<input type="text" name="pwd"/>
      <input type="submit" value="ok">
    
    </form>
  </body>
</html>

 2.登陆成功界面success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Success</title>
  </head>
  
  <body>
  <h1>Login Success</h1>
    UID:${user.uid }<br/>
    PWD:${user.pwd }
  </body>
</html>

 3.登陆失败界面fail.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>fail</title>
    
  </head>
  
  <body>
    <h1>Login Fail</h1>
  </body>
</html>

 四.Struts配置文件

1.webxml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name />
  <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>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 2.Struts-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
  <data-sources />
  <form-beans>
    <form-bean name="loginActionForm"  type="cx.struts.LoginActionForm"/>
  </form-beans>
  <global-exceptions />
  <global-forwards />
  <action-mappings>
     <action  name="loginActionForm"  path="/login"  type="cx.struts.LoginAction">
      <!-- 配置Action中的success转发,对应于index.jsp页面 -->
      <forward name="success" path="/success.jsp"/>
       <!-- 配置Action中的fail转发,对应于error.jsp页面 -->
      <forward name="fail" path="/fail.jsp"/>
    </action>
     
  </action-mappings>
  <message-resources parameter="cx.struts.ApplicationResources" />
</struts-config>

 

 

OK!到此,整个登陆流程就Ok!