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

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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值