博客信息

struts2入门

发布时间:『 2019-02-25 22:17』  博客类别:SSH  阅读(679)

1.1、 环境搭建

  1.1 jar

  1.2 web.xml

  1.3 struts.xml

      struts.xml(核心配置文件)

     

目录结构:

小李飞刀_struts

 

Struts.xml

<include file="struts-default.xml"></include>

<include file="struts-base.xml"></include>

<include file="struts-sy.xml"></include>

 

Struts.base.xml

<constant name="struts.i18n.encoding" value="UTF-8" />

<constant name="struts.devMode" value="true" />

<constant name="struts.configuration.xml.reload" value="true" />

<constant name="struts.i18n.reload" value="true" />

<constant name="struts.enable.DynamicMethodInvocation" value="true" />

 

<package name="base" extends="struts-default" abstract="true">

<global-allowed-methods>regex:.*</global-allowed-methods>

</package>

 

Struts.sy.xml

<package name="sy" extends="base" namespace="/sy">

<action name="helloAction" class="com.javaxl.base.HelloAction">

<result name="hello">/hello.jsp</result>

</action>

</package>

 

1.2Action

不需要指定父类(ActionSupport)

业务方法的定义

          public String xxx();//execute

Action是多例模式(注:在spring中的配置中一定要注意)

          Action用来接收参数

 

小李飞刀_struts

1.3、参数赋值

Action中定义属性,并提供get/set方法

          userName, getUserName/setUserName

 

ModelDriven

          返回实体,不能为null,不需要提供get/set方法

      

ModelDriven返回实体和Action中属性重名,ModelDriven中优先级更高

          注:ognlActionContext学完就知道了

 

案例:

Action代码(user1不提供setget方法):

private String uname;

private User user1 = new User();

private User user2;

 

public String execute() {

System.out.println("uname:"+uname);

System.out.println("user1:"+user1);

System.out.println("user2:"+user2);

return "hello";

}

 

浏览器输入:http://localhost:8080/Y2_struts_ognl/sy/helloAction?uname=zs

结果:

小李飞刀_struts

小李飞刀_struts

之后

小李飞刀_struts


说明modeldriven接口拦截了uname赋值

 

浏览器输入:http://localhost:8080/Y2_struts_ognl/sy/helloAction?user2.uname=zs

结果:

 小李飞刀_struts

说明struts支持对象导航

 

1.4、 与J2EE容器交互

非注入

     耦合(ServletActionContext

              

     解耦(建立使用解耦模式(ActionContext

              

 

注入

      耦合(XxxAware

              

      解耦

 

1.5 核心文件配置

include 包含文件

      file

      

package

      name 包名

      extends 继承

      namespace 虚拟路径

      abstract 通常用来被继承

  

action 子控制器

      namehelloAction,helloAction_*

      class 全限定名

      methodexecute,{1}

 

result 结果码处理

      Name 结果码配置

      typedispatcher|redirect

 

1.6、动态方法调用

<!-- 动态方法调用 -->

<action name="calAction_*" class="com.javaxl.base.CalAction" method="{1}">

<result name="rs">/rs.jsp</result>

</action>

 

1:动态方法调用,新版本中已禁用,可自行开启或关闭

2:子控制器的访问路径:名称空间+"/"+子控制器名字_xxx+".action"


相关html代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
	function doSubmit(num){
		if(num == 1)
			calForm.action = "${pageContext.request.contextPath}/sy/calAction_add.action";
		else if(num == 2)
			calForm.action = "${pageContext.request.contextPath}/sy/calAction_min.action";
		else if(num == 3)
			calForm.action = "${pageContext.request.contextPath}/sy/calAction_mul.action";
		else if(num == 4)
			calForm.action = "${pageContext.request.contextPath}/sy/calAction_div.action";
		calForm.submit();
	}
</script>
</head>
<body>
	<h1>struts的入门execute方法调用</h1>
	<a href="${pageContext.request.contextPath}/sy/helloAction.action">测试1</a>
	<h1>动态调用</h1>
	<form action="" id="calForm" name="calForm">
		Num1:<input type="text" name="num1">
		Num2:<input type="text" name="num2">
		<button value="+" onclick="doSubmit(1)">+</button>
		<button value="-" onclick="doSubmit(2)">-</button>
		<button value="*" onclick="doSubmit(3)">*</button>
		<button value="/" onclick="doSubmit(4)">/</button>
	</form>
	<h1>浏览器向后台传值的问题</h1>
	<a href="${pageContext.request.contextPath}/sy/paramAction.action?uid=120&uname=15&user2.uid=220&user2.uname=25">测试2</a>
	
	<h1>struts上下文的问题</h1>
	<a href="${pageContext.request.contextPath}/sy/demo7Action.action">测试2</a>
	
	<h1>讲解property标签(注意与c标签的区别)</h1>
	<a href="${pageContext.request.contextPath}/sy/tagAction.action?result=zs">测试3</a>
	<h1>讲解set标签(值并没有放到valuestack中)</h1>
	<a href="${pageContext.request.contextPath}/sy/tagAction.action?user2.uname=zs&user2.uid=1">测试4</a>
	<h1>讲解action标签(凡是jsp页面每出现一个action标签,那么页面会发一次请求)</h1>
	<a href="${pageContext.request.contextPath}/sy/tagAction.action?user2.uname=zs&user2.uid=1">测试5</a>
	
	<form action="${pageContext.request.contextPath}/sy/fileAction_upload.action" method="post" enctype="multipart/form-data">
		<input type="file" name="file">
		<input type="submit">
	</form>
</body>
</html>


关键字:     struts  

备案号:湘ICP备19000029号

Copyright © 2018-2019 javaxl晓码阁 版权所有