SSH中struts2的使用

第一个struts程序

创建web.xml

<?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_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>ch01_01_struts2_hello</display-name>
  
  <!-- 启动struts2的程序 -->
  <filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
  
  
  <welcome-file-list>
    
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

创建structs2.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" 
"http://struts.apache.org/dtds/struts-2.5.dtd"> 
<struts>
	<package name="base" extends="struts-default" namespace="/"> 
		<action name="hello" class="cn.sm1234.action.HelloAction" method="hello">
			<result name="success">/succ.jsp</result> 
		</action> 
	</package> 
</struts>

创建启动类 HelloAction.java

package cn.sm1234.action;


public class HelloAction {
	
	public String hello(){
		System.out.println("进入struts2的Action类");
		return "success";
	}
}

引入log4j2.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">

	<Appenders>
		<Console name="Console" target="SYSTEM_OUT">
			<PatternLayout pattern="%d{ABSOLUTE} %5p %c{1}:%L - %m%n" />
		</Console>

		<File name="LogFile" filename="c:/mylog.log">
			<PatternLayout pattern="%d{ABSOLUTE} %5p %c{1}:%L - %m%n" />
		</File>

	</Appenders>
	<Loggers>
		<Root level="info">
			<AppenderRef ref="Console" />
			<!-- <AppenderRef ref="LogFile" /> -->
		</Root>
	</Loggers>
</Configuration>

导入相关structs的jar包

可以在struts官网找jar包

struts运行流程

在这里插入图片描述

action 动作类的三种写法

不实现接口和继承类

上面的例子就是不实现接口和继承

实现 Action 接口

好处:
1)提供默认的execute方法,让Action类更加标准
2)提供5个开发中常用的视图常量

Demo2Action.java

package cn.sm1234.action;

import com.opensymphony.xwork2.Action;

public class Demo2Action implements Action{

	//execute:是struts2的Action类的默认方法
	@Override
	public String execute() throws Exception {
		System.out.println("Action第二种写法:实现Action接口");
		return SUCCESS;
	}

}

然后修改 struts2.xml
action中不需要写 method

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
	
<struts>

		<package name="base" extends="struts-default" namespace="/">
			<action name="demo1" class="cn.sm1234.action.Demo1Action" method="hello">
				<result name="success">/succ.jsp</result>
			</action>
			<action name="demo2" class="cn.sm1234.action.Demo2Action">
				<result name="success">/succ.jsp</result>
			</action>
			<action name="demo3" class="cn.sm1234.action.Demo3Action">
				<result name="success">/succ.jsp</result>
			</action>
		</package>
	
</struts>

继承 ActionSupport 类(推荐使用)

好处:
1)有了 Action 接口的所有好处
2) 还拥有其他功能接口,例如国际化,表单验证等

package cn.sm1234.action;

import com.opensymphony.xwork2.ActionSupport;

public class Demo3Action extends ActionSupport{

	@Override
	public String execute() throws Exception {
		System.out.println("第三种写法:继承ActionSupport类");
		return SUCCESS;
	}
}

struts.xml的配置同上

Action 动作类的三种访问方式

传统的访问方式

struts文件的一个action对应java文件的一个方法

特点:
1)可读性强
2)配置繁琐

struts.xml

<package name="demo1" extends="struts-default" namespace="/demo1">
			<action name="save" class="cn.sm1234.action.Demo1Action" method="save">
				<result>/succ.jsp</result>
			</action>
			<action name="update" class="cn.sm1234.action.Demo1Action" method="update">
				<result>/succ.jsp</result>
			</action>
</package>

demo1action.java

package cn.sm1234.action;

import com.opensymphony.xwork2.ActionSupport;

public class Demo1Action extends ActionSupport{

	public String save(){
		System.out.println("Demo1Action的save方法");
		return SUCCESS;
	}
	
	
	public String update(){
		System.out.println("Demo1Action的update方法");
		return SUCCESS;
	}
}

通配符的访问方式

特点:
1)可读性差
2)配置比较简单
struts.xml

<package name="demo2" extends="struts-default" namespace="/demo2">
			<!-- 用户访问的路径:
			   /demo2/demo2_save.action    
			   /demo2/demo2_update.action    
			 -->
			<action name="demo2_*" class="cn.sm1234.action.Demo2Action" method="{1}">
				<result>/succ.jsp</result>
			</action>
</package>

demo2action.java

package cn.sm1234.action;

import com.opensymphony.xwork2.ActionSupport;

public class Demo2Action extends ActionSupport{

	public String save(){
		System.out.println("Demo2Action的save方法");
		return SUCCESS;
	}
	
	
	public String delete(){
		System.out.println("Demo2Action的delete方法");
		return SUCCESS;
	}
}

动态方法调用的访问方式

动态方法调用机制默认关闭的!
如果需要使用的时候,要通过常量进行开启:

<package name="demo3" extends="struts-default" namespace="/demo3">
			<!-- 用户访问的路径:
				demo3/demo3!save.action
				demo3/demo3!delete.action
			 -->
			<action name="demo3" class="cn.sm1234.action.Demo3Action">
				<result>/succ.jsp</result>
			</action>
</package>

常用的视图类型

dispathcer: 转发到页面,默认值
redirect: 重定向到页面
redirectAction:重定向到 Action

struts2 中使用 Servlet 的 API

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值