struts简介:
Struts是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-View-Controller(MVC)设计模式的应用框架,是MVC经典设计模式中的一个经典产品。
优缺点:
Struts的优点主要集中体现在两个方面,Taglib和页面导航。Taglib是Struts的标记库,灵活多用,能大大提高开发效率。
Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。它的目的是为了减少在运用MVC设计模型来开发Web应用的时间。你仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制。
Struts的漏洞处理机制常被诟病,一来OGNL的功能强大和请求处理机制极易产生远程执行问题,二来开发组对漏洞处理能力不足,要么修复后仍可以绕过,要么无法修复而长期闲置处理。
struts入门:
struts环境搭配
在昨天博客环境搭配中加入
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.13</version>
</dependency>
然后导入xml文件:
base.xml文件配置
写一个控制器 写上需要测试的方法
在struts-sy.xml中配置好
最后写一个jsp界面来测试
完成。
struts前台和后台参数的传递
jsp参数传递到后台有三种方式
1.implements modelDrivern接受参数值
2.类实例。属性名 接受参数值
3.set/get接受参数值
写好实体类
jsp界面
以上报错为假报错可忽略。
控制器接受值然后取出值
/**
* implements modelDrivern接受参处值
* @return
*/
public String accept1() {
System.out.println("cal1="+cal1);
}
/**
* 类实例。属性名 接受参处值
* @return
*/
public String accept2() {
System.out.println("cal2="+cal2);
return "rs";
}
/**
* set/get接受参处值
* @return
*/
public String accept3() {
System.out.println(sex);
return "rs";
}
后台传值到jsp界面
一是注入
二是非注入
public class HelloAction implements ModelDriven<Cal>,ServletRequestAware{
//注入耦合
private HttpServletRequest req;
private Cal cal1=new Cal();
private Cal cal2;
private String sex;
public Cal getCal2() {
return cal2;
}
public void setCal2(Cal cal2) {
this.cal2 = cal2;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String add() {
System.out.println("调用add方法。。。。");
return "rs";
}
public String del() {
System.out.println("调用del方法");
return "rs";
}
/**
* implements modelDrivern接受参处值
* @return
*/
public String accept1() {
System.out.println("cal1="+cal1);
// req.setAttribute("cal1", cal1);
//非注入耦合
HttpServletRequest request=ServletActionContext.getRequest();
request.setAttribute("cal1", cal1);
//非注入解耦
// ActionContext context=ActionContext.getContext();
// context,get("xxxxxxx");
return "rs";
}
/**
* 类实例。属性名 接受参处值
* @return
*/
public String accept2() {
System.out.println("cal2="+cal2);
return "rs";
}
/**
* set/get接受参处值
* @return
*/
public String accept3() {
System.out.println(sex);
return "rs";
}
@Override
public Cal getModel() {
// TODO Auto-generated method stub
return cal1;
}
@Override
public void setServletRequest(HttpServletRequest req) {
this.req=req;
}
}
在jsp界面测试
<%@ 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>
</head>
<body>
结果页
${cal1}
</body>
</html>
显示: