菜鸟学习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");

	}



}


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

 



源代码

 

你可能感兴趣的:(struts)