【SSH之旅】一步步学习Struts1框架(二):Struts实例

       从上篇博客可以看到,其实Struts1框架就是封装了一些页面的转向、数据类型的转换,去除冗余的if else判断,除了这些,其实还封装了一些我们平常用的JSTL标签库,文件上传等等。

       下面看如何运用Strut是实现登陆和添加用户实例。

项目目录结构:

                 【SSH之旅】一步步学习Struts1框架(二):Struts实例_第1张图片

Login.jsp,登录页面

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'MyJsp.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
  </head>
  
  <body>
  	<form action="Login.do?command=Login" method="post">
    	 姓名:<input type="text" name="username"><br>
    	 密码:<input type="password" name="password"></br>
    	 <input type="submit" value="登录">
    </form>
  </body>
</html>
user_input.jsp 添加页面

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
		<title>添加用户</title>
		<link rel="stylesheet" href="../style/drp.css">
		<script type="text/javascript">

	function addUser() {
		with (document.getElementById("userForm")) {
			method = "post";
			action = "Login.do?command=Add";
			submit();
		}
	}
</script>
	</head>
	<body class="body1">
		<form name="userForm" target="_self" id="userForm">
			<div align="center">
				<table width="95%" border="0" cellpadding="0" cellspacing="0">
					<tr>
						<td width="22%" height="29">
							<div align="right">用户代码: </div>
						</td>
						<td width="78%">
							<input name="userId" type="text" class="text1" id="userId"
								size="10" maxlength="10">
						</td>
					</tr>
					<tr>
						<td height="26">
							<div align="right">用户名称: </div>
						</td>
						<td>
							<input name="username" type="text" class="text1" id="userName"
								size="20" maxlength="20">
						</td>
					</tr>
					<tr>
						<td height="26">
							<div align="right">密码: </div>
						</td>
						<td>
								<input name="password" type="password" class="text1"
									id="password" size="20" maxlength="20">
						</td>
					</tr>
					<tr>
						<td height="26">
							<div align="right">联系电话: </div>
						</td>
						<td>
							<input name="contactTel" type="text" class="text1"
								id="contactTel" size="20" maxlength="20">
						</td>
					</tr>
					<tr>
						<td height="26">
							<div align="right">email: </div>
						</td>
						<td>
							<input name="email" type="text" class="text1" id="email"
								size="20" maxlength="20">
						</td>
					</tr>
				</table>
				<div align="center">
					<input name="btnAdd" class="button1" type="button" id="btnAdd"
						value="添加" onClick="addUser()">
				</div>
			</div>
		</form>
	</body>
</html>

struts-config.xml:

         配置ActionForm, ActionBean,异常的转向,国际化资源文件的位置,插件(便于和Spring集成)等

<?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="loginactionform" type="userloginpackage.loginactionform"></form-bean>  
    </form-beans>  
    <action-mappings>  
        <action path="/Login"   
                type="userloginpackage.loginaction"  
                name="loginactionform"  
                scope="request"
                parameter="command"
        >  
            <forward name="success" path="/Addsuccess.jsp"></forward>  
            <forward name="error" path="/loginerror.jsp"></forward>  
            <forward name="LoginToAdd" path="/user_input.jsp"></forward>
        </action>  
    </action-mappings>  
</struts-config>  

UserManager类:

       与数据库打交道,实现增删改查操作。

package userloginpackage;
public class UserManager {
	public User Login(User user){
		return user;
	}
	public String Add(User user ) {
		return ("UserManager.Add");
	}
}

LoginAction类:

        执行具体业务操作,接收ActionForm对象,接收表单属性参数,一个Action相当于Servlet,从ActionForm中取得相关用户输入参数后,保存在request范围中,使用ActionMappting中的findForward方法进行跳转。

package userloginpackage;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

public class loginaction extends DispatchAction {

	public ActionForward Login(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		loginactionform fo=(loginactionform)form;
		UserManager userManager=new UserManager();
		User user=new User();
		user.setUserName(fo.getUsername());
		user.setPassword(fo.getPassword());
		User Flag=userManager.Login(user);
		if(fo.getUsername().equals(Flag.getUserName()) && fo.getPassword().equals(Flag.getPassword())){
			return mapping.findForward("LoginToAdd");
		}else{
			return mapping.findForward("error");
		}
	}
	
	public ActionForward Add(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		loginactionform fo=(loginactionform)form;
		String flag="";
		UserManager userManager=new UserManager();
		User user=new User();
		loginactionform laf=(loginactionform)form;
		BeanUtils.copyProperties(user, laf);
		flag=userManager.Add(user);
		if("UserManager.Add".equals(flag)){
			return mapping.findForward("success");
		}else{
			return mapping.findForward("error");
		}
	}

}

loginactionform类:

        封装属性参数与表单中的参数一致,提供getter、setter方法,进行业务验证等。

package userloginpackage;

import org.apache.struts.action.ActionForm;

public class loginactionform extends ActionForm {
	private String username;
	private String password;
	private Integer userId;
	private String contactTel;
	private String email;
	
	public String getUsername() {
		return username;
	}
	public Integer getUserId() {
		return userId;
	}
	public void setUserId(Integer userId) {
		this.userId = userId;
	}
	public String getContactTel() {
		return contactTel;
	}
	public void setContactTel(String contactTel) {
		this.contactTel = contactTel;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}		
}

web.xml:

      程序启动首先读取的xml,是web程序入口,定义struts-config.xml。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name> 
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list> 
  
  
  <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>
       另外再加一个User实体类,这样,就完成了一 个利用Struts框架,完成了功能实现。虽然如此,Struts框架与原始MVC模式有什么区别,Struts框架下,整个运行过程又是如何的,我们应该如何理解Struts的实现理念,看下一篇博客吧。。。。。。







        

你可能感兴趣的:(【SSH之旅】一步步学习Struts1框架(二):Struts实例)