struts2框架学习笔记1:搭建测试

Servlet是线程不安全的,Struts1是基于Servlet的框架

而Struts2是基于Filter的框架,解决了线程安全问题

因此Struts1和Struts2基本没有关系,只是创造者取名问题

接下来搭建并测试

下载Struts2:https://struts.apache.org/

解压后目录如下:

apps中的是示例、docs是文档、lib是类库、src是源码

导包不需要导入lib中全部的包,导入这些即可

简单写一个Action类:

package hello;

public class HelloAction {

    public String hello(){
        System.out.println("hello world!");
        return "success";
    }

}

导入dtd约束,这里可以省略,只是在编写配置文件的时候没有提示,全凭手打易出错

配置文件: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>
    <package name="hello" namespace="/hello" extends="struts-default" >
        <action name="HelloAction" class="hello.HelloAction" method="hello" >
            <result name="success">/hello.jsp</result>
        </action>
    </package>
</struts>

下一步至关重要,配置web.xml:

由于Struts2是基于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>

一个jsp文件hello.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>
<h1>hello world!</h1>
</body>
</html>

到这里框架搭建完成!

部署到Tomcat服务器,本地测试:

并且在控制台打印hello world!

测试成功!!

流程分析:

1.浏览器中访问....../hello/HelloAction

2.请求交到web.xml的Struts2过滤器,匹配hello和HelloAction

3.过滤器去寻找核心配置文件,/hello匹配namespace属性成功,于是寻找HelloAction类

4.找到HelloAction类,创建出Action对象,调用类的hello方法,打印hello world,返回"success"

5.返回值找到result标签的name属性,匹配成功,转发到hello.jsp

6.最终前端页面显示如图

原文地址:https://www.cnblogs.com/xuyiqing/p/8455878.html

时间: 2024-08-03 03:08:44

struts2框架学习笔记1:搭建测试的相关文章

j2ee开发之struts2框架学习笔记

Struts2框架技术重点笔记 1.Struts2 是在webwork基础上发展而来. 2.Struts2 不依赖struts API和 servlet API 3.Struts2提供了拦截器,表现层技术:jsp +freeMarket+ velocity 4.Struts2可以对指定的方法进行校验,提供了全局范围,包范围和action范围的国际化资源文件的管理实现. 环境搭建:找到对应的jar包 编写struts的配置文件 <?xml version="1.0" encodin

struts2框架学习笔记2:配置详解

核心配置文件: <?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> <

struts2框架学习笔记3:获取servletAPI

Struts2存在一个对象ActionContext(本质是Map),可以获得原生的request,response,ServletContext 还可以获得四大域对象(Map),以及param参数(Map)等等 ActionContext生命周期:每次请求都会创建一个与请求对应的ActionContext对象 绑定当前线程(ThreadLocal),直接从ThreadLocal中获得即可 请求处理完后,ActionContext对象销毁 第一种获得方式: public String execu

struts2框架学习笔记4:获取参数

第一种参数获取方式: 编写一个前端页面,提交表单,做示例: <form action="${pageContext.request.contextPath}/Demo1Action"> 用户名:<input type="text" name="name" /><br> 年龄:<input type="text" name="age" /><br>

struts2框架学习笔记6:拦截器

拦截器是Struts2实现功能的核心部分 拦截器的创建: 第一种: package interceptor; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; //拦截器的第一种创建方式 //拦截器的生命周期:随项目启动创建,随项目关闭而销毁 public class MyInterceptor implements Intercepto

struts2框架学习笔记5:OGNL表达式

OGNL取值范围分两部分,root.Context两部分 可以放置任何对象作为ROOT,CONTEXT中必须是Map键值对 示例: 准备工作: public void fun1() throws Exception { // 准备ONGLContext // 准备Root User rootUser = new User("tom", 18); // 准备Context Map<String, User> context = new HashMap<String, U

SuperSocket框架学习笔记4-SuperWebSocket---使用SubCommandBase

首先下载所需要的 DLL http://download.csdn.net/detail/wai2dance123/7389285 或者参见第2章  到SuperSocket官网下载 http://www.cnblogs.com/xmcrew/p/3747354.html 1,新建一个 .NET4.0 控制台应用程序 命名为 DiyServers 添加以下引用 将默认的Program.cs改名为  DiyServers.cs 并添加以下命名空间 2,写自己的DSession和DServer继承自

j2ee开发之Spring2.5框架学习笔记

Spring 2.5框架学习笔记 1.是一个开源的控制反转IOC和面向切面AOP的容器框架 2.IOC控制反转 public class PersonServiceBean { private PersonDao personDao = new PersonDao(); publiv void save(Person person){ personDao.save(person); } } 控制反转:应用本身不负责依赖对象personDao的创建以及维护,依赖对象的创建以及维护是由外部容器负责的

windows下scrapy框架学习笔记—&#39;scrapy&#39; 不是内部或外部命令

最近几天在深入的学习scrapy框架,但是装完各种需要的基础包之后却发现scrapy命令在别的路径下都用不了,我一开始是把python安装在F:\Python路径下的,安装了scrapy后它默认都会安装在这个路径下,scrapy在路径F:\Python\Scripts路径下,我的scrapy命令只能在此路径下用,因此创建什么工程也都只能在此文件下. 想了一下它的工作原理:它在F:\Python\Scripts路径下,就会在Scripts文件下存在一个scrapy批处理文件,那么在DOS下想要命令