Struts2学习日志2

Action的方法访问:

1使用action标签中的 method 属性为这个name 指定一个方法(这个应该不用解释了)

2使用通配符的方法:


3.使用动态方法实现(不常用 而且麻烦 感兴趣自行百度)


 为应用指定多个配置文件:

         在<struts>中 加入<includefile=""/> 一般以模块来分开

         配置全局性的result  在某个包下创建<global-result>节点再在其中建result节点 其中去定义一些属性

  如果想要其他包也能访问到 可以继承该包,当然该包继承的是struts-defualt.  别的包继承了这个包 当然也继承了struts-defualt.和java的继承关系差不多.

 

常量配置:

         将struts.devMode的value设置为true。从而当更改struts.xml文件后不需要重新启动服务就可以进行程序调试

         <constantname="struts.devMode" value="true" />

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

当然还有很多常用的常量还有很多具体可以去百度下. 第二种配置常量的方法是在struts.properties 文件下去配置 感兴趣自行百度 但是不怎常用,因为第一种就够了。



Demo:

1.目录结构:



2.代码(代码中将所说到的都使用了):


1 struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"   
 "http://struts.apache.org/dtds/struts-2.0.dtd">
 <struts>
 <constant name="struts.devMode" value="true"></constant>
 
<package name="default" extends="struts-default">


 	<global-results>
 	<result name="error">/WEB-INF/public/error.jsp</result>
 	</global-results> 	
</package>
 <include file="student.xml"></include>
 </struts>


2 student.xml

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

<!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"   
 "http://struts.apache.org/dtds/struts-2.0.dtd">
 <struts>
  <package name="student" extends="default" namespace="/student">
   	 		
 	<action name="Question_*" class="com.lsy.Action.QuestionAction" method="{1}">
 	<!--修改name属性 不用通配符 使用method="getList"也行  -->
 	
 	<result name="success">/WEB-INF/student/questionJsp.jsp</result>
 	<!--因为默认是forward转发 所以从后台可以访问到WEB-INF中的jsp-->	
 	</action>
 	
 </package>
 </struts>

3 QuestionAction.java


package com.lsy.Action;

import java.util.ArrayList;
import java.util.List;
import com.lsy.bean.Question;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class QuestionAction extends ActionSupport {
	
	
	public String getList() throws Exception {		
		List<Question> qlist= new ArrayList<Question>();
		for(int i=1;i<4;i++)
		{
			Question q =new Question("第"+i+"个题目!!!!","简答题",i+"");
			qlist.add(q);			
			if(i==4){//用于一会测试全局result的配置
				ActionContext.getContext().put("errmsg", "i=4所以跳到这个错误页面!!!");
				return "error";
			}
		}	
		
		//往session域中添加试题集合
		 ActionContext.getContext().getSession().put("qlist",qlist);
				
		return this.SUCCESS;
//SUCCESS为action接口里的常量,ActionSupport实现了action接口,这个又继承了这个ActionSupport类,故可以访问到
	}

}


4 Question.java


package com.lsy.bean;

public class Question {

	private String qname;
	private String type;
	private String answer;
	
	
	public Question(String qname, String type, String answer) {
		super();
		this.qname = qname;
		this.type = type;
		this.answer = answer;
	}
	
	
	
	public Question() {
	}



	public String getQname() {
		return qname;
	}

	public void setQname(String qname) {
		this.qname = qname;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public String getAnswer() {
		return answer;
	}
	public void setAnswer(String answer) {
		this.answer = answer;
	}
		
}


5 jsp


<%@ page language="java" import="java.util.*" import="bean.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'questionJsp.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    


  </head>
  
  <body>
		<h3>试题信息!</h3>
		<c:forEach items="${qlist}" var="question" varStatus="count">
		第${count.index}道题:<br>
		题目:${question.qname}<br>	
		类型:${question.type}<br>
		答案:${question.answer}<br>		
		</c:forEach>


  </body>
</html>

总结:虽然用到的都是基础 但一切的累积都从最小的开始最后再附上测试结果




,error这个全局result就不测试了 测试只需要更改一下java代码其中的 i 的大小即可。















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值