struts(三)——struts框架实现登录示例

前两篇讲解了struts框架的基本实现,自己感觉讲的也有些枯燥,今天拿登录的例子来做一个实现。

1、新建一个javaweb项目,并将struts的jar包拷贝到WebRoot/WEB-INF/lib下。

                 struts(三)——struts框架实现登录示例_第1张图片

2、拷贝完jar包还不能进行工作,用户的请求必须达到ActionServlet,我们才能通过struts处理请求,所以还需要将ActionServlet配置在web.xml文件里面。

<?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">
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>


3、建立actionForm,表单上的用户名和密码,必须与actionForm中属性的get/set方法后半部分一致。

package com.xxjstgb.struts;
import org.apache.struts.action.ActionForm;
/**
 * 登录ActionForm,负责表单收集数据
 * @author liuzhengquan
 *
 */@SuppressWarnings("serial")
public class LoginActionForm extends ActionForm {
	 private String userName;
	 private String password;
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}


4、建立LoginAction,这里需要继承struts的Action类。处理Model层的逻辑,并返回转向信息。

package com.xxjstgb.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;
/**
 * 登录Action
 * 负责取得表单数据、调用业务逻辑、返回转向信息
 * @author liuzhengquan
 *
 */
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 (UserNoFoundException e) {
			e.printStackTrace();
			request.setAttribute("msg", "用户不能找到,用户名称=【"+userName+"】");
		}catch (PasswordErrorException e) {
			e.printStackTrace();
			request.setAttribute("msg", "密码错误");
		}
		return mapping.findForward("error");
	}
}


5、配置struts-config.xml文件。在struts(一)里面我们通过if…else判断截取的URL,根据相应的URL,调用相应的Action。在struts框架里面已经对此做了简单的封装,我们只需要将action和actionForm配置在struts-config.xml文件里面。通过映射他们的关系,来实现匹配工作,替代了原来的if…else语句。


<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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>
	<form-beans>
		<form-bean name="LoginForm" type="com.xxjstgb.struts.LoginActionForm"></form-bean>
	</form-beans>
	<action-mappings>
		<action path="/login" 
				type="com.xxjstgb.struts.LoginAction"
				name="LoginForm"
				scope="request">
			<forward name="success" path="/login_success.jsp"></forward>
			<forward name="error" path="/login_failed.jsp"></forward>
		</action>
	</action-mappings>
</struts-config>


6、访问

<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>

至此,通过struts框架完成了登录实例。

你可能感兴趣的:(struts(三)——struts框架实现登录示例)