1.简单应用示例

导入struts1的jar包,然后配置xml,写java和jsp

/struts/WebRoot/Login.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>My JSP 'index.jsp' starting page</title>
  13. <meta http-equiv="pragma" content="no-cache">
  14. <meta http-equiv="cache-control" content="no-cache">
  15. <meta http-equiv="expires" content="0">
  16. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  17. <meta http-equiv="description" content="This is my page">
  18. </head>
  19.  
  20. <body>
  21. <form action ="<%=request.getContextPath()%>/login.do">
  22. username : <input type='text' name ='username' />
  23. password : <input type='password' name ='password' />
  24. <input type="submit" value="login"/>
  25. </form>
  26. </body>
  27. </html>

/struts/WebRoot/LoginSuccess.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>My JSP 'index.jsp' starting page</title>
  13. <meta http-equiv="pragma" content="no-cache">
  14. <meta http-equiv="cache-control" content="no-cache">
  15. <meta http-equiv="expires" content="0">
  16. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  17. <meta http-equiv="description" content="This is my page">
  18. <!--
  19. <link rel="stylesheet" type="text/css" href="styles.css">
  20. -->
  21. </head>
  22.  
  23. <body>
  24. 登陆成功
  25. </body>
  26. </html>

/struts/WebRoot/LoginFailure.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11.  
  12. <title>My JSP 'index.jsp' starting page</title>
  13. <meta http-equiv="pragma" content="no-cache">
  14. <meta http-equiv="cache-control" content="no-cache">
  15. <meta http-equiv="expires" content="0">
  16. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  17. <meta http-equiv="description" content="This is my page">
  18. <!--
  19. <link rel="stylesheet" type="text/css" href="styles.css">
  20. -->
  21. </head>
  22.  
  23. <body>
  24. 登陆失败
  25. </body>
  26. </html>

/struts/WebRoot/WEB-INF/web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  7. <servlet>
  8. <servlet-name>action</servlet-name>
  9. <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  10. <init-param>
  11. <param-name>config</param-name>
  12. <param-value>
  13. /WEB-INF/struts-config.xml
  14. </param-value>
  15. </init-param>
  16. </servlet>
  17.  
  18. <servlet-mapping>
  19. <servlet-name>action</servlet-name>
  20. <url-pattern>*.do</url-pattern>
  21. </servlet-mapping>
  22. </web-app>

/struts/WebRoot/WEB-INF/struts-config.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
  3. <struts-config>
  4. <form-beans>
  5. <form-bean name="loginForm" type="cn.itcast.LoginForm"></form-bean>
  6. </form-beans>
  7. <action-mappings>
  8. <action path="/login" type="cn.itcast.LoginAction" name="loginForm">
  9. <forward name="success" path="/LoginSuccess.jsp"></forward>
  10. <forward name="failure" path="/LoginFailure.jsp"></forward>
  11. </action>
  12. </action-mappings>
  13. </struts-config>

/struts/src/cn/itcast/LoginAction.java

  1. package cn.itcast;
  2.  
  3. import javax.servlet.http.HttpServletRequest;
  4. import javax.servlet.http.HttpServletResponse;
  5.  
  6. import org.apache.struts.action.Action;
  7. import org.apache.struts.action.ActionForm;
  8. import org.apache.struts.action.ActionForward;
  9. import org.apache.struts.action.ActionMapping;
  10.  
  11. public class LoginAction extends Action {
  12.  
  13. public ActionForward execute(ActionMapping mapping, ActionForm form,
  14. HttpServletRequest request, HttpServletResponse response)
  15. throws Exception {
  16. // TODO Auto-generated method stub
  17. LoginForm loginForm= (LoginForm)form ;
  18. String username = loginForm.getUsername();
  19. if("itcast".equals(username)){
  20. return mapping.findForward("success");
  21. }else{
  22. return mapping.findForward("failure");
  23. }
  24. }
  25.  
  26. }

/struts/src/cn/itcast/LoginForm.java

  1. package cn.itcast;
  2.  
  3. import org.apache.struts.action.ActionForm;
  4.  
  5. public class LoginForm extends ActionForm {
  6. private String username = null;
  7. private String password = null;
  8.  
  9. public String getUsername() {
  10. return username;
  11. }
  12. public void setUsername(String username) {
  13. this.username = username;
  14. }
  15. public String getPassword() {
  16. return password;
  17. }
  18. public void setPassword(String password) {
  19. this.password = password;
  20. }
  21.  
  22. }

2.Action什么时候初始化?发出该Action请求,不是在读取配置文件时初始化。

3.每个Action只会初始化一次

4. Action是线程不安全的,因为所有的请求都共享一个action实例

5.怎样实现action的安全性编程?

1)注意不要用实例变量或者类变量共享只是针对某个请求的数据

2)注意资源操作的同步性

应用:统计一个action的访问次数

在调用时加1,注意用Sychronzied同步变量

6.ActionMapping类,可以获取ActionMapping里配置的信息

7.ActionForward

 redirect:false ---------requestDispather:forward(重定向)默认值

    true-----------httpServletResponse:sendRedirect(重新发出请求)

8.ActionForm

1)检查action的映射,确定action中已经配置了对ActionForm的映射

2)根据name属性,查找formbean的配置信息

3)检查action的formbean的使用范围,确定在此范围下(request、session),是否已经有此formbean的实例

4)假如已经存在就重用

5)否则就重新构造,并保存在一定的范围

9.Action

1)attribute:用来存取form的关键字,缺省值与name一样

2)validate:用来控制是否校验表单(校验开关),缺省ture--校验

3)input如果表单校验不通过则跳转到该值所代表的目标模块,一般结合validate:true来使用

10.全局跳转

<global-forwards>

  1. <forward name="error" path="/error.jsp"></forward>

</global-forwards>

11.ForwardAction不直接访问jsp,每次都访问action.do

<action path="/action" forward="/action.jsp"></action>

12.DispatchAction用一个action来分发请求,xml配置parameter参数

调用时加参数/risk.do?method=action中的方法名

<action path="/risk" type="org.springframework.web.struts.DelegatingActionProxy" parameter="method"></action>

struts1的更多相关文章

  1. struts1和struts2的区别

    1. 在Action实现类方面的对比:Struts 1要求Action类继承一个抽象基类:Struts 1的一个具体问题是使用抽象类编程而不是接口.Struts 2 Action类可以实现一个Acti ...

  2. struts1四:常用标签

    struts1支持的5种标签: HTML 标签: 用来创建能够和Struts 框架和其他相应的HTML 标签交互的HTML 输入表单 Bean 标签: 在访问JavaBeans 及其属性,以及定义一个 ...

  3. struts1二:基本环境搭建

    首先建立一个web项目 引入需要的jar包 建立包com.bjpowernode.struts创建LoginAction package com.bjpowernode.struts; import ...

  4. Struts2与Struts1的区别

    Struts2是基于WebWork的一个全新框架.不过有了Struts1的基础,学Struts2更方便.Struts2主要改进是取代了Struts1的Servlet和Action.Struts2的核心 ...

  5. Struts1.x 中的 Validate 框架

    转载于http://www.blogjava.net/nokiaguy/archive/2009/02/12/254421.html 一.Validator框架的优势       Validator框 ...

  6. Struts1.x有两个execute方法,不要重写错哦HttpServletRequest才是对的(转)

    Struts1.x 的 Action 有两个 execute 哦,小心搞错! by agate - Published: 2008-05-01 [9:42 下午] - Category: 程序编码 不 ...

  7. struts1拦截器

    Struts2已经发布一段时间了,这个版本较struts1.x版本有了很大变化,其中一个就是增加了拦截器功能.这是个非常有用的功能,可是struts1.x却没有.     其实,struts1.x可以 ...

  8. struts1的一些基本用法和操作

    入职两周了,项目是用struts1+ibatis框架搭建的,数据库是oracle,其他还行,关键是struts1之前没用用过,所以只好在网上狂查文档,最后大致整理了一些struts1的基本使用方法. ...

  9. jsp\struts1.2\struts2 中文件上传(转)

    jsp\struts1.2\struts2 中文件上传 a.在jsp中简单利用Commons-fileupload组件实现 b.在struts1.2中实现c.在sturts2中实现现在把Code与大家 ...

随机推荐

  1. 油田 Oil Deposits

    油田 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=84562#problem/L 题意: 输入一个m行n列的字符矩形,统计字符 ...

  2. load/get延迟加载和及时加载

    load和get方法的区别: Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象. 区别在于: 如果未能发现符合条件的记录,get方法返回nul ...

  3. DIV与CSS布局需知

    对于一个网页布局,我们需要知道一些关键点: 第一:什么是样式(CSS),什么是容器,怎么认识容器, 第二:样式的优先级和继承的关系,那些是不被继承的,那些元素是能被继承的 第三:文字的颜色,字体大小, ...

  4. javascript 与jquery为每个p标签增加onclick方法

    <script type="text/javascript"> window.onload=function(){ var items=document.getElem ...

  5. Android课程---final关键字

    final      在Java中声明属性.方法和类时,可使用关键字final来修饰.      final变量即为常量,只能赋值一次:      final方法不能被子类重写:      final ...

  6. request获取请求头和请求数据

    package cn.itcast.request; import java.io.IOException; import java.io.InputStream; import java.io.Pr ...

  7. Stream Processing for Everyone with SQL and Apache Flink

    Where did we come from? With the 0.9.0-milestone1 release, Apache Flink added an API to process rela ...

  8. Linux系统下安装MongoDB 指南

    1.首先连接到Linux系统. 2.到MongoDB官网下载合适的MongoDB安装压缩包. 下载页面:https://www.mongodb.org/downloads#production. 这里 ...

  9. Construct Binary Tree from Inorder and Postorder Traversal || LeetCode

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * s ...

  10. 在C#中获取如PHP函数time()一样的时间戳

    原文:在C#中获取如PHP函数time()一样的时间戳 c#中没有象PHP一样的time()时间戳函数,但有DateTime.Now.Ticks用来计算时间差. 此属性的值为自 0001 年 1 月 ...