1.struts2的简介和作用
struts2是基于MVC框架的web框架,用在三层架构中的web层。
1.1 优点:
strut2是基于filter实现的,在高并发访问时,可以避免线程不安全问题(servlet的线程不安全问题没有解决方法,只能通过避免定义类变量来防止)。可以自动封装参数,参数检查,页面结果的处理(转发或重定向),国际化处理,表单的防止重复提交
1.2 struts2与servlet的区别:
1>.strust2 是基于mvc模式对servlet的一种封装,servlet是java基于j2ee的是一种实现技术。
2>.Servlet是单实例多线程的,而Action是多实例多线程的。因为多实例,所以每个请求会产生不同的Action和ActionContext对象,因此线程是安全的。同时因为Action是多实例的,所以Action中可以有成员变量,因为多实例不会公用。而Servlet是单实例多线程,所以一般情况下不会定义成员变量,因为共用同一个成员变量可能出现线程安全的问题。
2. struts2的简单搭建
2.1导包
2.2 编写action类
/**
*struts2的创建方式:
* 1.编写一个普通类
* 2.类继承ActionSupport(推荐使用,此类实现了Action接口,并提供了许多的默认方法)
* 3.实现Action接口
*/
public class Demo1 extends ActionSupport {
public String test1() {
System.out.println("hello world!!!");
return "success";
}
/**
* 方法的返回值:
* success 代表成功
* none 代表页面不跳转
* error 代表跳转到错误页面
* input 数据校验时跳转到路径
* login 跳转到登录页面
*/
}
2.3 在src目录下编写struts.xml文件(struts2的主配置文件) 。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="demo" namespace="/demo" extends = "struts-default">
<action name="demoAction" class="com.dsx.day1.test.Demo1" method="test1">
<result name="success">/day1/hello.jsp</result>
</action>
</package>
</struts>
2.4 在web.xml中 配置struts2的核心过滤器
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>strutsDemo</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
<!--
根据struts2的版本进行配置,否则会出现bug,在我的另一篇博客中有介绍
<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>
</filter-mapping> -->
2.5测试结果,访问http://localhost:8080/strutsDemo/demo/demoAction,控制台打印hello world!!!并页面跳转到hello.jsp.说明测试代码编写成功。。
简单入门的回顾,继续struts2的进阶。。。