struts入门
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>
显示:
成功;