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>

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

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

除了基本的Action 之外, Struts 还提供了几个其他类型的Action ,这些Action 大大 丰富了Struts 的功能。下面介绍如下儿个常用的Action 。 • DispatchAc...
  • qq_27550755
  • qq_27550755
  • 2015年11月19日 12:37
  • 442

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

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

【java】快速搭配SSH框架HelloWord(无废话)

【java】快速搭配SSH框架HelloWord 1、准备工作 工具:Myeclipse2014 工程文件:点我下载 2、SSH整合步骤 1、创建一个web工程 2、引入jar包 3、编写相关配置...
  • ChenLuLiang
  • ChenLuLiang
  • 2016年09月14日 20:45
  • 1150

SSH框架Action中JSON操作及struct.xml配置

页面向action中发送AJAX、json请求前面已经讲过了,这里不再重复,今天主要讲一下后台如何处理并返回json数据。 方式不唯一,会用其中一种就可以,我用的是Map 首先action中创建m...
  • Kiss_Fly
  • Kiss_Fly
  • 2016年02月17日 17:03
  • 1945

以一个简单的登录的例子来演示如何搭建struts1环境

本例先讲解struts1的工作流程,然后举一个用户登录的例子做演示。 struts1的工作流程: struts1是MVC模型的经典应用,以前对MVC的模型理解有错,一直以为C,也就是Con...
  • hackerain
  • hackerain
  • 2011年10月21日 02:44
  • 4942

struts学习之HelloWorld

下载struts: 点击打开链接 http://struts.apache.org/download.cgi
  • u010637291
  • u010637291
  • 2016年03月23日 16:32
  • 136

SSH:Struts1框架(简介)

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

mybatis的helloworld版

项目的目录结构: 一、添加mybatis.jar以及mysql的驱动包 二、创建数据的表 三、编写与表对应的实体类 四、编写连接数据库的配置文件configuration.xml 五、编写Perso...
  • zl544434558
  • zl544434558
  • 2013年10月11日 17:40
  • 1289

Struts1框架轻易入门,经典示例

Struts1框架轻易入门,经典示例 一枚菜鸟的学习笔记,请多指教。Struts工作原理及流程 登录验证示例 Struts1 工作原理及流程 这是本人整理的一点材料,原...
  • jdjdndhj
  • jdjdndhj
  • 2016年08月17日 23:31
  • 9956

跟我学习SSH框架中的国际化如何实现

国际化的基本使用国际化:简称i18n 简单的说,让代码自动适应不同的使用的环境的语言。另外,对于开发来说,还能解耦合配置。国际化文件,扩展名必须叫.properties,名字无所谓,但有规则。 建...
  • HeadingAlong
  • HeadingAlong
  • 2017年02月08日 17:32
  • 638
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SSH:Struts1框架(创建HelloWorld应用)
举报原因:
原因补充:

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