SSH:Struts1框架(创建HelloWorld应用)

原创 2015年11月19日 11:15:06

1、配置struts
* 拷贝struts lib下的所有jar到WEB-INF/lib下,如下所示:


* 修改web.xml文件,配置ActionServlet,引入struts的配置文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>Struts1</display-name>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	<span style="color:#ff0000;"><servlet>
		<servlet-name>action</servlet-name>
		<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
		<!-- Default -->
		<init-param>
			<param-name>config</param-name>
			<param-value>/WEB-INF/struts-config.xml</param-value>
		</init-param>
		<load-on-startup>0</load-on-startup>
	</servlet></span>
	<!-- Standard Action Servlet Mapping -->
	<span style="color:#ff0000;"><servlet-mapping>
		<servlet-name>action</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
</span>
</web-app>
* 提供struts-config.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
        "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
	<form-beans>
		<form-bean name="LoginForm"
			type="com.songshan.form.LoginForm">
		</form-bean>
	</form-beans>
	<global-forwards>
		<forward name="baidu"
			path="/http://www.baidu.com"></forward>
	</global-forwards>
	<action-mappings>
		<action path="/login"
			type="com.songshan.action.LoginAction"
			name="LoginForm" validate="true"
			input="/index.jsp">
			<forward name="success"
				path="/welcome.jsp"></forward>
			<forward name="error"
				path="/login.jsp"></forward>
		</action>
	</action-mappings>
</struts-config>
<action>标签中的属性含义描述如下:

attribute: 
这个属性用来指定ActionForm保存到指定上下文时所使用的属性名。如果不指定attribute属性的值,将使用name属性的值作为保存时的属 性名。也就是说,attribute属性的默认值就是name属性的值。

className: 
指定自定义的配置对象。这个配置对象必须是ActionMapping的子类。如果不对这个属性进行指定,那么将使用默认值org.apache.struts.action.ActionMapping。通过自定义的ActionMapping类,可以在Action的配置中增加自定义属性。 
forward: 
设 置处理用户请求的servlet或者其他的资源,例如jsp。如果指定了这个属性,那么type属性所指定的Action类就将会失去作用。严格的说,在 每个<action>元素中,forward,include,type属性应该使用且只使用其中一个。 
input:  

表示如果客户端提交的数据未通过简单验证后要跳转到的页面,也就是在SimpleValidationForm类的validate方法中返回的ActionErrors对象中含有错误描述信息。Struts会自动跳转到input属性所指的JSP页面。<action>标签中的子标签<forward>定义了可以在动作类(在本例中就是SimpleValidationAction类)中读取的forward页的URL。

name: 
指定表单Bean(ActionForm)的名称。 
path: 
指定此Action所响应的用户请求的路径,这个属性是与模块相关的,并且以“/”为起始字符。另外,需要注意的是在这里不需要增加扩展名,如:.do。 
parameter: 
这是一个保留的配置参数,可以利用这个参数传递一些特殊的信息。但对于某些特殊的Action类已经为这个属性指定了明确的含义。 
prefix: 
用于指定需要向ActionForm赋值的用户参数的前缀。这个参数只有在name属性不为空的时候才可以设置。 
roles: 
以逗号分隔的用户角色名列表。在Action中可以通过ActionMapping对象的实例来得到这里设置的角色信息。用于在系统中实现权限校验功能。 
scope: 
用于指定保存ActionForm的上下文范围。其取值为request或session。 这个属性值只能取request和session。默认值是session。
如果scope的值为request,表示将SimpleValidationForm类的对象实例以simpleValidationForm作为键值保存到了request的属性中。如果scope的值为session,表示不将SimpleValidationForm类的对象实例保存到request的属性中。但不管scope的值是request还是session。Struts都会将SimpleValidtionForm类的对象实例保存到session的属性中。
suffix: 
用于指定需要向ActionForm赋值的用户参数的后缀。这个参数只有在name属性不为空的时候才可以设置。 
type: 
用于指定处理用户请求的Action(org.apache.struts.action)之类的全路径名。如果指定了forward或者include属性,那么这个属性将不起作用。 
unknow: 
用于设置当前这个Action是否为当前模块的默认Action。当一个用户请求没有匹配的Action时,将会交给默认的Action去处理。在一个模块中,只能设置一个Action为默认的Action。 
validate: 
用于设置是否调用ActionForm中的validate()方法来进行数据合法性的校验。

2、创建登录项目
* 创建jsp页面(index.jsp,welcome;.jsp,error.jsp) 

index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@taglib prefix="html" uri="/WEB-INF/tld/struts-html.tld"%>
<%@taglib prefix="logic" uri="/WEB-INF/tld/struts-logic.tld"%>
<%@taglib prefix="bean" uri="/WEB-INF/tld/struts-bean.tld"%>
<%@taglib prefix="nested" uri="/WEB-INF/tld/struts-nested.tld"%>
<title>首页</title>
</head>
<body>
	<h1>我是登录页面,请登录</h1>
	<html:img page="/images/banner.png" alt="我是打酱油的" />
	<html:link page="www.baidu.com">百度</html:link>
	<form action="<%=request.getContextPath()%>/login.do" method="post">
		<ol>
			<li>请输入用户名:</li>
			<input name="username" type="text"></input>
			<li>请输入密码:</li>
			<input name="password" type="password"></input>
			<li>请输入密码:</li>
			<input type="submit"></input>
		</ol>
	</form>
</body>
</html>

welcome.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@taglib prefix="html" uri="/WEB-INF/tld/struts-html.tld"%>
<%@taglib prefix="logic" uri="/WEB-INF/tld/struts-logic.tld"%>
<%@taglib prefix="bean" uri="/WEB-INF/tld/struts-bean.tld"%>
<%@taglib prefix="nested" uri="/WEB-INF/tld/struts-nested.tld"%>
<html>
<head>
<title>成功页面</title>
</head>
<body>
	<h1>登录成功页面</h1>
	<>欢迎您的登陆,您这次的登陆时间为:
	<bean:write name="date" format="yyyy/MM/dd/hh/mm/ss" />
	<logic:iterate id="userlist" name="user" indexId="index" offset="1"
		length="2"> 
 <bean:write name="userlist" property="username" />
		<br>
	</logic:iterate>
	<logic:empty name="user">
		<logic:redirect href="http://www.baidu.com" />
	</logic:empty>
</body>
</html>

error.jsp:

<%@ page language="java" contentType="text/html; charset=GBK"%>
<html>
<head>
<title>錯誤页面</title>
</head>
<body>
<h1>我是錯誤頁面</h1>
<!-- 提交请求参数的表单 -->
</body>
</html>

* 创建LoginForm.java

package com.songshan.form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

public class LoginForm extends ActionForm {

	/**
	 * 
	 */
	private static final long serialVersionUID = -5391232602883739778L;
	private String username;
	private String password;
	private String configpsw;

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

	public String getConfigpsw() {
		return configpsw;
	}

	public void setConfigpsw(String configpsw) {
		this.configpsw = configpsw;
	}

	@Override
	public String toString() {
		return "LoginForm [username=" + username + ", password=" + password
				+ ", configpsw=" + configpsw + "]";
	}

	@Override
	public ActionErrors validate(ActionMapping mapping,
			HttpServletRequest request) {
		ActionErrors actionErrors = new ActionErrors();
		ActionMessage actionMessage = new ActionMessage("您输入的用户名有问题");
		if (username.endsWith("4")) {
			actionErrors.add("error", actionMessage);
		}
		return actionErrors;
	}
}

* 创建LoginAction.java

package com.songshan.action;

import java.util.ArrayList;
import java.util.Date;

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 antlr.collections.List;

import com.songshan.form.LoginForm;

public class LoginAction extends Action {
	private Integer count = 0;

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		// TODO 自动生成的方法存根
		synchronized (count) {
			count += 1;
		}
		request.getSession().setAttribute("num", count);
		LoginForm loginForm = (LoginForm) form;
		if (loginForm.getUsername().equals("123")
				&& loginForm.getPassword().equals("123")) {
			Date date = new Date();
			ArrayList<LoginForm> list = new ArrayList<LoginForm>();

			for (int i = 0; i < 10; i++) {
				list.add(loginForm);
			}
			request.getSession().setAttribute("user", list);
			request.getSession().setAttribute("date", date);
			request.getRequestDispatcher("www.baidu.com");
			return mapping.findForward("success");
		} else {
			return mapping.findForward("baidu");

		}
	}
}

* 配置struts-config.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
        "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
	<form-beans>
		<form-bean name="LoginForm"
			type="com.songshan.form.LoginForm">
		</form-bean>
	</form-beans>
	<global-forwards>
		<forward name="baidu"
			path="/http://www.baidu.com"></forward>
	</global-forwards>
	<action-mappings>
		<action path="/login"
			type="com.songshan.action.LoginAction"
			name="LoginForm" validate="true"
			input="/index.jsp">
			<forward name="success"
				path="/welcome.jsp"></forward>
			<forward name="error"
				path="/error.jsp"></forward>
		</action>
	</action-mappings>
</struts-config>

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Struts1学习笔记(2)-----第一个应用程序HelloWorld

似乎大多数程序的第一个入门程序都是以HelloWorld拉开序幕,本人学习也不例外,因此也以HelloWorld开始。但是本人并不打算在这一篇里讲叙原理,只是将第一个程序给调试出来了,在此过程中,你可...

SSH:Struts1框架(动态ActionForm)

使用ActionForm可以给开发者在处理HTML表单时带来极大的帮助,它简化了代码的编写,并提供了自动的数据验证。但是,ActionForm也存在几个非常明显的缺点。  首先,如果ActionFo...

SSH:Struts1框架(简介)

Struts最早是作为Apache Jakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServer Pages 、Servlet、标签库以及面向对象的技术水准。S...

SSH:Struts1框架(ActionForm注册类型自动转换)

测试ActionForm注册类型自动转换  * 一般的数据类型都可以自动进行转换; * boolean:yes,1,on,true都会转换成True类型,而且忽略大小写,其他清空转换成false ...

SSH:Struts1框架(几种常用的Action)

除了基本的Action 之外, Struts 还提供了几个其他类型的Action ,这些Action 大大 丰富了Struts 的功能。下面介绍如下儿个常用的Action 。 • DispatchAc...

SSH:Struts1框架(标签的使用)

1. Struts视图组件 Struts框架的视图负责为客户提供动态网页内容。Struts视图主要由Jsp页面构成。此外,Struts视图组件还提供了Struts标签,这些组件提供对国际化、接收用户输...

自学SSH框架之---struts(三):源码分析struts1如何实现Action单例模式

      今天想说的是struts1和struts2的一个区别,就是Struts1 Action是单例模式并且必须是线程安全的,而Struts2 Action对象为每一个请求产生一个实例,因此没有线...

自学SSH框架之---struts(四):struts1数据验证方面简介

如题,本节主要记录了一下自己学习数据验证(Validator)方面的内容1 先说下利用struts的插件 Validator plugin来进行验证利用插件的话,得需要在struts-config.x...

深入浅出学习Struts1框架(十一)-利用ActionMapping来创建ActionForm

今天主要是讲解ActionServlet中的一个方法processActionForm,当我们在截取字符串,再根据字符串取得ActionMapping(这是前两篇文章中介绍的)之后,我们就要用利用Ac...
  • lfsf802
  • lfsf802
  • 2012年05月03日 10:02
  • 9054

easyui与ssh(struts1)的整合实现增删改查、分页

整理了下easyui与ssh(struts1)的整合实现增删改查、分页,现在将部分源码附上,struts、hibernate、spring配置及实现省略。 1.页面部分 Row ...
  • zjx88
  • zjx88
  • 2013年10月02日 14:33
  • 3107
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SSH:Struts1框架(创建HelloWorld应用)
举报原因:
原因补充:

(最多只允许输入30个字)