马士兵struts2视频笔记--第一天

1、开发准备  
2、第一个案例—Hello World 
      2.1.新建web project项目   
      2.2.配置项目  
            2.2.1 将开发库导入lib文件夹下 
            2.2.2 在src包下新建struts.xml配置文件    
            2.2.3 修改struts.xml  
            2.2.4 修改web.xml文件为  
            2.2.5 访问    
      2.3.原理    
3、namespace 
4、action    
5、path  
      5.1 path.jsp  
      5.2 index.jsp 
6、ActionMethod_DMI_动态方法调用   
      6.1 index.jsp页面   
      6.2 struts.xml文件  
      6.3 UserAction.java   

1、开发准备

jdk(http://www.oracle.com/technetwork/java/javase/downloads/index.html)
myeclipse
tomcat(http://tomcat.apache.org/)
struts2(http://struts.apache.org/download.cgi)
Struts2开发文档(http://struts.apache.org/docs/getting-started.html)

2、第一个案例—Hello World

2.1.新建web project项目

File-new-web project,输入项目名,如sturts2_001

马士兵struts2视频笔记--第一天_第1张图片
2-1 新建项目.png

2.2.配置项目

2.2.1 将开发库导入lib文件夹下

下载链接

2.2.2 在src包下新建struts.xml配置文件




    
    

2.2.3 修改struts.xml

在 下面添加:


     
        
            
                /Hello.jsp
            
        
 

说明:

开发模式
②action name:访问的名称
③package:类似于java中的包,解决重名问题

2.2.4 修改web.xml文件为



     
    Hello.jsp
  
  
  
        struts2
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    

    
        struts2
        /*
    

2.2.5 访问

新建Hello.jsp文件,然后部署项目,访问localhost:8080/struts2/hello即可访问到Hello.jsp页面

马士兵struts2视频笔记--第一天_第2张图片
图2-2 项目结构.png

2.3.原理

马士兵struts2视频笔记--第一天_第3张图片
图3-1 struts2 核心原理.png

3、namespace


        
        
            
                HelloWorld
                /example
            
        
    

namespace决定了action的访问路径,默认为"",可以接收所有路径的action
namespace可以写为’/’,或者’/xxx’,或者’/xxx/yyy’,对应的action访问路径为’/index.action’‘/xxx/index.action’,或者’/xxx/yyy/index.action’。
namespace最好也用模块来进行命名

4、action

马士兵struts2视频笔记--第一天_第4张图片
图4-1 执行过程.png

action不一定是servlet,可以是一个普通类。

马士兵struts2视频笔记--第一天_第5张图片
图4-2 程序结构.png


“class”是类的路径。当class属性没有配置时,默认访问ActionSupport类。
action的三种实现方法

①普通类,手写execute方法。缺点:容易出错。

public class IndexAction1 {
    public String execute() {
        return "success";
    }
}

②实现Action类,重载execute方法。

public class IndexAction2 implements Action {
    @Override
    public String execute() {
        return "success";
    }
}

③继承已经实现好的类,有很多可以直接用方法。推荐使用

public class IndexAction3 extends ActionSupport {
    @Override
    public String execute() {
        return "success";
    }
}

5、path

struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。
虽然可以用redirect方式解决,但redirect方式并非必要。
解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径)
或者使用myeclipse经常用的,指定basePath。

马士兵struts2视频笔记--第一天_第6张图片
图5-1 程序结构.png

5.1 path.jsp


<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>





Insert title here


struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。
index.jsp
虽然可以用redirect方式解决,但redirect方式并非必要。
解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径)
或者使用myeclipse经常用的,指定basePath

注:前面设置好了标签,就可以使用绝对路径了。

5.2 index.jsp


<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>

<%--
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
//在head中指定basePath
--%>





Insert title here


    路径问题说明


6、ActionMethod_DMI_动态方法调用.

Action执行的时候并不一定要执行execute方法,也可以访问其他方法。
访问方法有两种:
①在配置文件中配置Action的时候用method=“”来指定执行指定方法
②url地址中动态指定(动态方法调用DMI)(推荐)

6.1 index.jsp页面


<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>

<% String context = request.getContextPath(); %>





Insert title here


Action执行的时候并不一定要执行execute方法
可以在配置文件中配置Action的时候用method=来指定执行哪个方法 也可以在url地址中动态指定(动态方法调用DMI)(推荐)
添加用户
添加用户
前者会产生太多的action,所以不推荐使用

说明:第一个超链接是普通方法,对应struts.xml中第一个action,需要配置method属性。
第二个超链接是动态方法调用,struts.xml文件不需要改动,推荐使用。

6.2 struts.xml文件





    
    
        
            /user_add_success.jsp
        
        
        
            /user_add_success.jsp
        
    

6.3 UserAction.java

package com.bjsxt.struts2.user.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {
    public String add() {
        return SUCCESS;
    }
}

马士兵struts2视频笔记--第一天
马士兵struts2视频笔记--第二天
马士兵struts2视频笔记--第三天

你可能感兴趣的:(马士兵struts2视频笔记--第一天)