记忆中的Struts2使用

1.1 Struts2接收用户输入数据的三种方式

第一种:使用领域对象(域模型)

1.在UserInfoAction.java中定义私有对象user,并get,set
2.在ModiUserInfo.jsp的页面中,所有的控件name都编写user.loginid(user.XX),即对象.属性

第二种:使用ModelDriven action(驱动模型)
1public class UserInfoAction extends ActionSupport implements ModelDriven<UserInfo>{
===============通过驱动模型方式接受数据 先私有new一个对象 不需要get set需要实现ModelDriven<UserInfo>接口 以及需要接受的类型<UserInfo>
	private UserInfo user=new UserInfo();	
===============还要重写接口的getModel方法==================
	public UserInfo getModel() {
		return user;
	} 
2.在ModiUserInfo.jsp的页面中,所有的控件name都编写为loginid(直接属性名)

第三种:使用action属性接收用户输入

1.在UserInfoAction.java中定义私有变量,并get,set
2.在ModiUserInfo.jsp的页面中,所有的控件name都编写为上面的变量名

注:其实只要set方法就可以接受参数,get是为了能够向页面发送参数

1.2 Struts2在Action中访问request,session,application(即ServletContext)对象的两种方式

第一种(解耦方式)
解耦方式1,直接获取map对象:
ActionContext context=ActionContext.getContext();//获取action上下文
context.put("req", "req对象");//将值保存到request请求域
Map session = context.getSession();// 获取session的map对象
session.put("ses", "ses对象");//将值保存到session请求域
Map application =context.getApplication();//获取application的map对象
application.put("app", "app对象");//将值保存到application请求域

jsp页面获取

<body>
${applicationScope.app}<br/>
${sessionScope.ses}<br/>
${requestScope.req}或者<%=request.getAttribute(“req”)%>
</body>
解耦方式2,通过实现接口获取map对象

实现RequestAware,SessionAware,ApplicationAware三个接口,重写三个方法从中获取Map对象,之后可以通过put的方式赋值

xxAction implements RequestAware,SessionAware{
private Map request;
private Map  session;
@Override
	public void setRequest(Map<String, Object> request) {
		this.request = request;
	}
	@Override
	public void setSession(Map<String, Object> session) {
		this.session = session;
		
	}
	public String xxMethod(){
		request.put("req","req对象");
		return SUCCESS;
	}
}

第二种(耦合方式)
耦合方式1:直接获取对象
HttpServletRequest request=ServletActionContext.getRequest();
HttpServletResponse reponse=ServletActionContext.getResponse();
ServletContext application=ServletActionContext.getServletContext();
HttpSession session=request.getSession();
耦合方式2:通过接口获取对象

步骤:实现ServletRequestAware,ServletResponseAware, ServletContextAware三个接口,重写三个方法。并且在方法里面给HttpServletRequest,HttpServletResponse,ServletContext赋值,那么之后就可以操作这三个对象了

public class HelloWorldAction implements ServletRequestAware, ServletResponseAware, ServletContextAware{
	private HttpServletRequest request;
	private ServletContext servletContext;
	private HttpServletResponse response;
	public void setServletRequest(HttpServletRequest req) {
		this.request=req;
	}
	public void setServletResponse(HttpServletResponse res) {
		this.response=res;
	}
	public void setServletContext(ServletContext ser) {
		this.servletContext=ser;
	}
}

1.3 通配符使用

1
记忆中的Struts2使用
记忆中的Struts2使用

2
记忆中的Struts2使用
记忆中的Struts2使用

1.4 配置文件

1.4.1 配置文件概览

记忆中的Struts2使用

1.4.2 Struts2在web.xml中的配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">    
<filter>       
		 <filter-name>struts2</filter-name>       
		 <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>   
</filter>    
<filter-mapping>        
		<filter-name>struts2</filter-name>        
		<url-pattern>/*</url-pattern> <!--过滤了所有请求,可以只过滤action后缀的请求:<url-pattern>*.action</url-pattern> -->  
</filter-mapping>   
           
</web-app>

说明: 准确的说,web.xml并不是Struts2框架特有的文件。作为部署描述符文件,web.xml是所有Java Web应用程序都需要的核心配置文件。
struts2框架需要你在web.xml文件中配置一个前端控制器-----FilterDispatcher ,用于对struts2框架进行初始化,以及处理所有的请求。

1.4.3 struts2.0框架有两核心的配置文件:struts.xml和struts.properties

struts.xml文件主要负责管理应用中的action映射,以及该Action中包含的result定义等
struts.properties通常放在WEB应用下的WEB-INF/classes路径下。
其实,struts.properties的内容均可在struts.xml中以加载

struts.properties:

记忆中的Struts2使用
记忆中的Struts2使用
记忆中的Struts2使用
记忆中的Struts2使用
记忆中的Struts2使用
记忆中的Struts2使用