Struts1基于Servlet实现 Servlet线程不安全 & Struts2基于Filter实现 Servlet线程安全 基于webwork
下载Struts2
直接把struts-2.3.24-all\struts-2.3.24\lib拷贝太过于冗余
①解压struts-2.3.24-all.zip
②进入struts-2.3.24-all\struts-2.3.24\apps\
③解压struts2-blank.war(无法解压把文件后缀改为zip)
④进入WEB-INF\lib\下 拷贝此目录所有jar包
Hibernate笔记有详细记录eclipse断网xml提示功能
struts2实例
创建TestAction类
public class TestAction {
public String test() {
System.out.println("Test Struts2");
return "success";
}
}
在项目src下创建名为struts.xml文件
<?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>
<!-- i18n:国际化 解决post提交乱码 -->
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<!--
指定访问action时的后缀名
http://localhost:8080/Test/one/TestAction.do
-->
<constant name="struts.action.extension" value="do"></constant>
<!--
指定struts2是否以开发模式运行
热加载主配置(不需重启即可生效) 提供更多错误信息输出 方便开发时的调试
-->
<constant name="struts.devMode" value="true"></constant>
<!-- package:将Action配置封装 就是可以在Package中配置很多action
name属性:给包起个名字 起到标识作用 随便起 不能其他包名重复
namespace属性:给action的访问路径中定义一个命名空间
extends属性:继承一个 指定包
abstract属性:包是否为抽象的 标识性属性 标识该包不能独立运行 专门被继承
-->
<package name="one" namespace="/one" extends="struts-default" >
<!-- action元素:配置action类
name属性:决定了Action访问资源名
class属性:action的完整类名
method属性:指定调用Action中的哪个方法来处理请求
-->
<action name="TestAction" class="com.java.TestAction" method="test" >
<!-- result元素:结果配置
name属性:标识结果处理的名称 与action方法的返回值对应
type属性:指定调用哪一个result类来处理结果 默认使用转发
标签体:填写页面的相对路径
-->
<result name="success" type="dispatcher" >/index.jsp</result>
</action>
</package>
<!-- 引入其他struts配置文件 -->
<include file="com/java/struts.xml"></include>
</struts>
在项目WebContent下创建index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>Success</p>
</body>
</html>
struts基于Filter 需要配置web.xml
<!-- struts2核心过滤器 -->
<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>
浏览器访问 http://localhost:8080/Test/one/testAction.do
Console打印 "Test Struts2" 浏览器显示 "Success" 说明测试成功
struts架构
Filter在Servlet执行之前执行 Interceptor在Action执行前执行