`
胡笨笨
  • 浏览: 162371 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

struts2学习笔记之搭建一个简单的Struts2应用

阅读更多

      学习的最好方法就是从helloWorld开始,一步一步从简入繁。参考书籍和网络上的资源搭建自己的一个struts2应用,然后将后续的学习成果都整合进去.

 

搭建步骤:

1、引入Struts 2工程所需运行库文件。

2、创建并配置web.xml文件

3、创建一个Action类

4、创建并配置struts.xml文件

5、编写视图资源

6、发布工程

 

1、引入Struts 2工程所需运行库文件

把用到的几个运行库文件复制到工程的WEB-INF下的lib文件夹中,如果使用的是Myeclipse集成开发工具,也可以直接选择struts2的核心库,比较省事,我这里就采用后者。

 



 如果是自己导入jar的话,有以下几个Jar包就OK.




 
 

2、创建并配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
   <display-name>Struts2 test</display-name> 
   <filter> 
     <filter-name>struts2</filter-name> 
       <!-- FilterDispatcher是struts2中的核心过滤器,它将过滤出所有符合要求的请求,然后进行struts2的内部处理 --> 
      <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 
 </filter> 
     <filter-mapping> 
               <filter-name>struts2</filter-name> 
               <url-pattern>/*</url-pattern> </filter-mapping>
     <welcome-file-list>
      <welcome-file>login.jsp</welcome-file> 
     </welcome-file-list> 
</web-app> 

 

1)Struts2的核心控制器FilterDispatcher被设计成了过滤器,通过<filter></filter>标签引入。

2)<url-pattern>/*</url-pattern>说明所有客户端请求都经由FilterDispatcher处理,并把过滤后的请求交给Struts2进行处理。

 

3、创建一个Action类

Action有以下特点:

  • Struts2框架中Action是一个POJO,没有被代码污染。
  • Struts2中的Action的execute方法不依赖于servlet API,改善了Struts1中耦合过于紧密,极大方便了单元测试。
  • Struts2的Action无须用ActionForm封装请求参数。
  • 相对Struts1框架而言,Struts2的逻辑视图不再是ActionForward对象,而是一个普通的字符串,利于分离和复用。
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {  
    private static final long serialVersionUID = 1030294046920869257L;  
    private String username;  
    private String password;  
  
    // 处理用户请求的execute方法 
    public String execute() throws Exception {  
		  if (isInvalid(getUsername()))  
		      return INPUT;  
		
		      if (isInvalid(getPassword()))  
		          return INPUT;  
		
		        // 只有用户名为001,密码为123456方可成功登陆  
		       if (username.equals("001") && password.equals("123456")) {  
		                 return "success";  
		        } else {  
		                 return "error";  
		        }  

	  } 
	  	        
	    private boolean isInvalid(String value) {  
	        return (value == null || value.length() == 0);  
	    }  
	  
	    public String add() {  
	        return SUCCESS;  
	    }  
	  
	    public String show() {  
	        return SUCCESS;  
	    }  
	  
	    public String qurey() {  
	        return SUCCESS;  
	    }  
	  
	    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;  
	    }  
	}  

 

1)Struts2直接使用Action来封装HTTP请求参数,因此Action类应该包含与请求相对应的属性,并为该属性提供对应的setter和getter方法。

 

2)为Action类里增加一个execute方法,因为Struts2框架默认会执行这个方法。这个方法本身并不做业务逻辑处理,而是调用其他业务逻辑组件完成这部分工作。

 

3)Action类返回一个标准的字符串,该字符串是一个逻辑视图名,该视图名对应实际的物理视图。

 

    我们现在要实现的是一个用户登录验证,因此Action中提供用户名和密码两个属性。如果正确返回success否则返回error

4、创建并配置struts.xml文件

 

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <!-- 指定Web应用的默认编码集,相当于调用HttpServletRequest的setCharacterEncoding方法 --> <constant name="struts.i18n.encoding" value="UTF-8" /> <include file="struts-default.xml"></include> <package name="login" extends="struts-default" namespace="/login"> <action name="loginAction" class="com.company.login.LoginAction" > <result name="input">/login.jsp</result> <result name="error">/view/login/error.jsp</result> <result name="success">/view/login/welcome.jsp</result> </action> </package> </struts>


  • 该文件发布的时候必须放置在WEB-INF/classes路径下,当程序运行的时候会自动在该目录下搜索struts.xml,我在做的时候,放到了专门建的放配置文件的文件夹config下,build path时指定输出文件到WEB-INF/classes,所以可以检索到。
  • 在action标签中定义了name和class。name属性对应的是用户URL请求中的action名,比如在本应用中,用户请求为http://localhost:8080/MyProject/login.action,那么name属性就应该为login。class属性是处理请求的实现类(注意:要包含完整路径)。
  • result标签定义逻辑视图和物理视图之间的映射,在我们的Action中,如果返回的字符串是"success”则由对应的welcome.jsp页面进行处理;如果返回的字符串是"error”则由error.jsp页面进行处理。
  •  

     

     

    5、编写视图资源

     

        登陆页面login.jsp

     

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <%
    	String path = request.getContextPath();
    	String basePath = request.getScheme() + "://"
    		+ request.getServerName() + ":" + request.getServerPort()
    			+ path + "/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    	<head>
    		<base href="<%=basePath%>">
    
    		<title><s:text name="login.jsp" />
    		</title>
    	</head>
    	<body>
       <s:form action="loginAction" namespace="/login">
    	  <s:textfield name="username" label="用户名"></s:textfield>  
                    <s:password name="password"  label="密  码"></s:password>  
                    <s:submit value="确定"/>  
                    <s:reset value="重置"/>  
       </s:form>
    </body>
    </html>
    

      

     

      登陆失败页面 error.jsp

       

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>fail.jsp</title>
        
      </head>
      
      <body>
       <s:text name="failTip" />  
    	     <p />  
       <s:a href="/MyProject/login.jsp">return</s:a>  
       
      </body>
    </html>
    

      

       登陆成功页面welcome.jsp

     

     

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>welcome.jsp</title>
        
    	<meta http-equiv="pragma" content="no-cache">
    	<meta http-equiv="cache-control" content="no-cache">
    	<meta http-equiv="expires" content="0">    
    	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    	<meta http-equiv="description" content="This is my page">
    	<!--
    	<link rel="stylesheet" type="text/css" href="styles.css">
    	-->
      </head>
      
      <body>
       <s:text name="succTip" />  
    	        <br />  
       <p align="center">登陆成功!!!您的用户名是<s:property value="username"></s:property></p> 
    
      </body>
    </html>
    

     

     

     整个工程的结构如下:



     

     注意,classpath中,struts 2 core libraries 和lib下的jar包只能取其一,否则会冲突报错。

     

    6、发布工程(weblogic,tomcat任选)

    注意,发布到weblogic时,要在工程下添加一个文件weblogic.xml,指定访问的工程:

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd"> 
    <weblogic-web-app> 
        <weblogic-version>10.0</weblogic-version> 
        <context-root>MyProject</context-root> 
    </weblogic-web-app> 
    
    

     

     

    在浏览器中输入http://localhost:8080/MyProject/即可访问登陆页面

    • 大小: 6.7 KB
    • 大小: 10.9 KB
    • 大小: 3.4 KB
    • 大小: 3.4 KB
    1
    1
    分享到:
    评论

    相关推荐

      Struts2学习笔记

      根据给定的文件信息,以下是对Struts2学习笔记中涉及的关键知识点的详细解析: ### Struts2框架概览 #### MVC模式的理解与演进 Struts2是基于MVC(Model-View-Controller)模式设计的一种Java Web开发框架。在MVC...

      struts2 学习重点笔记

      Struts2 是一个功能强大且灵活的 Web 开发框架,它不仅能够帮助开发者快速搭建 Web 应用,还能通过其丰富的特性和扩展性满足复杂应用的需求。掌握 Struts2 的核心概念和技术要点,对于 Web 开发者来说至关重要。

      struts2学习笔记.doc

      ### Struts2学习笔记知识点概览 #### 一、环境搭建 **1.1 Struts2简介** - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序...

      struts2学习笔记

      Struts2是一个强大的Java web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用。本笔记主要涵盖了以下几个核心知识点: 一、Struts2环境搭建 在开始开发Struts2应用之前,首要任务是搭建环境。这包括在...

      Struts2学习笔记(一) 环境的搭建与HelloWorld程序

      在本篇学习笔记中,我们将聚焦于环境搭建和创建第一个"Hello, World!"程序。 首先,要开始学习Struts2,你需要确保你的开发环境中已经安装了以下基本组件: 1. **Java Development Kit (JDK)**:Struts2依赖于Java...

      struts2综合笔记

      ### Struts2 综合知识点...综上所述,Struts2 是一个功能强大且灵活的 MVC 框架,适用于构建复杂的 Web 应用程序。通过深入理解其核心概念和技术细节,开发者能够充分利用 Struts2 的优势来提升开发效率和应用性能。

      struts2框架学习笔记整理

      ### Struts2框架学习笔记整理 #### 一、Struts2框架概述 ##### 1.1 Struts2框架定义 Struts2是一个基于MVC(Model-View-Controller)架构模式的开源Java web应用框架,它能够帮助开发者构建可扩展且易于维护的...

      Struts2超详细学习笔记分享(献给自学新人)

      Struts2是一个面向MVC(模型-视图-控制器)设计模式的轻量级Web应用框架,它在Java EE环境中广泛使用,旨在简化Web应用程序的开发。本篇超详细学习笔记将带你逐步深入理解Struts2的核心概念和运作机制。 首先,让...

      Struts2 学习笔记.doc

      Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发中,为开发者提供了构建可维护性和可扩展性高的Web应用程序的工具。以下是对Struts2核心概念和特性的详细说明: 一、Struts2的作用:...

      传智播客struts2全程学习笔记

      ### 传智播客Struts2全程学习笔记 #### Struts2的优点 1. **无侵入式设计**:与Struts1相比,Struts2的设计更为先进,它不依赖于Servlet API或Struts API,这使得Struts2更加灵活且易于集成到其他环境中。在代码...

      Struts2.1学习笔记

      Struts2是Apache组织开发的一个开源Web框架,它继承了Struts1的优良特性,同时在很多方面进行了改进,使其更加轻量级、灵活、强大。Struts2.1版本相较于之前版本,主要在性能、易用性和稳定性上有所提升。 **搭建...

      struts2.0学习笔记

      **二、搭建Struts2的运行环境** 要开始使用Struts2,首先需要在项目中引入Struts2的依赖库,这通常包括Struts2的核心库、核心插件和其他必要的JAR包。然后,需要配置web.xml文件,设置FilterDispatcher作为过滤器,...

      Struts2学习笔记2011(详细图解)

      以上就是Struts2学习笔记中的主要内容,通过这些知识点的学习,开发者能够熟练地搭建和使用Struts2框架,构建高效、稳定的Web应用。同时,理解并掌握这些概念有助于进一步探索Struts2的高级特性,如拦截器、插件系统...

    Global site tag (gtag.js) - Google Analytics