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>