Struts2的初步介绍

Struts2是apache项目下的一个web 框架,普遍应用于阿里巴巴、京东等互联网、政府、企业门户网站。虽然之前存在了很大的安全漏洞,在2013年让苹果、中国移动、中国联通、百度、腾讯、

淘宝、京东、Sohu、民生银行等大型企业的网站均遭毒手。但这也恰恰说明struts2框架在当前应用的优越性,那么到底什么是struts2呢?

Struts2 是目前较为普及和成熟的基于MVC设计模式的web应用程序框架,它不仅仅是Struts1 的升级版本,更是一个全新的Struts架构。最初,是以WebWork框架和Struts框架为基础,通过提供

增强和改进的Struts框架,进而实现简化web技术人员开发工作的目标。不久之后,Webwork框架和Struts社区联合创造了现在流行的Struts2框架。

如果有同学想了解更多的内容的话,推荐大家查看https://www.w3cschool.cn/struts_2/,这里,我们直接进入主题:

1.在搭建struts2之前,首先我们要确保struts2的运行环境正确无误。这里就不多说了,本项目用到的运行环境为:

  • JDK 1.8
  • Eclipes(IDE)
  • Tomcat 7.0

2.如果第一步的运行环境搭建好了,最好能下载最新版本的Struts2 二进制文件,下载地址为http://struts.apache.org/download.cgi ,在编写本博客时我下载的是 struts-2.5.13-all.zip,当然如果大家害怕后续出现运行时异常,也可以下载这一版本。下载完毕后将压缩包解压。

3.创建一个动态Web项目,启动你的Eclipse,然后打开“File”>“New”>“Dynamic Web Project”,输入的项目名称,比如struts2-test2

4.从解压好的Struts2文件下的lib文件夹中拷贝以下文件到项目 WEB-INF\lib 文件夹。

  • commons-fileupload-1.3.3.jar
  • commons-io-2.5.jar
  • commons-lang-2.5.jar
  • commons-lang3-2.5.jar
  • commons-logging-1.1.3.jar
  • freemarker-2.3.26-incubating.jar
  • javassist-3.20.0-GA.jar
  • log4j-api-2.8.2.jar
  • ognl-3.1.15.jar
  • struts2-core-2.5.14.jar

(如果大家没有选择下载和我一样的Struts2版本,那么就找到对应的版本号的jar包)

5.按照如图所示,创建相应的文件

1).UserAction.java

 package com.nine;

 public class UserAction {

     private String name;

     public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String execute() throws Exception {
return "success";
}
}

UserAction.java 的execute方法返回的结果,要对应struts2.xml<result name="  ">中name映射的结果。

2).struts2.xml

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="helloworld" extends="struts-default"> <action name="hello"
class="com.nine.UserAction"
method="execute">
<result name="success">/hello.jsp</result>
</action>
</package>
</struts>

struts2配置文件要注意的是:

1. <action name="hello ">中的内容要与index.jsp的  <form action="hello" >相一致。

2.<action method="execute">中的内容对应了 UserAction中的方法 execute。

3.<package name="helloworld"> 为package的唯一标识,可以随便填写,只要保证它的唯一性 。

4.<action class="com.nine.UserAction">为jsp表单映射对应的Java文件。

3).web.xml

 <?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"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0"> <display-name>Struts 2</display-name>
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list> <filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
<filter-class></filter-class>中的内容是部署描述符(web.xml)中,Struts2 应用程序的接入点会定义为一个过滤器为 org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
*并非所有的struts过滤器都是通过上述过滤器完成的,如果有同学在运行时发现找不到这个.class 就查一下对应版本的struts中对应得过滤器是如何定义的

4).index.jsp

 <%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hello</title>
</head>
<body>
<h1>Hello World From Struts2</h1>
<form action="hello" method="post">
<label for="name">Please enter your name</label><br/>
<input type="text" name="name"/>
<input type="submit" value="Say Hello"/>
</form>
</body>
</html>

5).hello.jsp

 <%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
Hello World, <s:property value="name"/>
</body>
</html>

6.右键点击项目名称,接着点击“Export”>“WAR File”创建WAR文件,然后将WAR部署到Tomcat的webapps目录中。最后,启动Tomcat服务器并尝试访问URL http://localhost:8080/struts2-test2/index.jsp

输入任意内容,比如  “大圣”

不知道大家完成的怎么样了,如果出现问题,可以在下面进行留言,我会为大家进行解答.

基于MVC设计模式的Web应用框架:struts2的简单搭建(一)的更多相关文章

  1. Struts2是一个基于MVC设计模式的Web应用框架

    Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互. Struts ...

  2. 基于MVC和Bootstrap的权限框架解决方案 一.搭建HTML

    因为某些原因,因为需要,最新要做一套客户管理系统,但是不满足于仅有的框架. 看了很多大牛写的框架,强大是强大,代码也太TM多了,乱七八糟话不多说,开始吧 随便在网上找到一套好看的HTML,看起来还不错 ...

  3. 1.0、Struts2的简单搭建方法

    一.Struts2:是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet:用于jsp页面与Java代码之间的交互. 1.核心:Filter拦截器,对所有的请求进行拦截. 2.工作 ...

  4. 【原创翻译】认识MVC设计模式:web应用开发的基础(实际编码篇)

    原文地址:http://www.larryullman.com/2009/10/15/understanding-mvc-part-3/ 全系列INDEX [原创翻译]认识MVC设计模式:web应用开 ...

  5. 试读《基于MVC的JavaScript Web富应用开发》— 不一样的JavaScript

    前言 <基于MVC的JavaScript Web富应用开发>是ItEye在7月份发起试读的书.下载了试读的章节,发现只有全本的开始到第二章,第一章很简洁明了地讲述了JavaScript的历 ...

  6. iOS 基于MVC设计模式的基类设计

    iOS 基于MVC设计模式的基类设计 https://www.jianshu.com/p/3b580ffdae00

  7. 基于Selenium+Python的web自动化测试框架

    一.什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.S ...

  8. 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理

    服务器文档下载zip格式   刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...

  9. JavaWeb:基于MVC设计模式的一个小案例(一)

    (未经允许,请勿转载,谢谢.) 本案例的处理过程: 客户端发送一个请求给服务器,服务器把这个请求给Servlet,Servlet 获取请求信息,根据请求信息的情况去调用 model (在这里是一个普通 ...

随机推荐

  1. 上传代码 CodePlex

    博客园作为博客备份,博客会更新一份在博客园 CodePlex是微软开源项目网站,有很多人都在上面传代码,我们也可以上传自己的代码 注册 我们可以用微软账号注册,填写用户名.密码,很快就好. 新建项目 ...

  2. uva 10118,记忆化搜索

    这个题debug了长达3个小时,acm我不能放弃,我又回来了的第一题! 一开始思路正确,写法不行,结果越改越乱 看了网上某神的代码,学习了一下 coding+debug:4小时左右,记忆化搜索+dp类 ...

  3. redis3.2新功能--GEO地理位置命令介绍

    概述 redis3.2发布rc版本已经有一段时间了,估计RedisConf 2016左右,3.2版本就能release了.3.2版本中增加的最大功能就是对GEO(地理位置)的支持.说起redis的GE ...

  4. 【转】嵌入式C语言调试开关

    在调试程序时,经常会用到assert和printf之类的函数,我最近做的这个工程里就有几百个assert,在你自认为程序已经没有bug的时候,就要除去这些调试代码,应为系统在正常运行时这些用于调试的信 ...

  5. Windows搭建wnmp

    1. 下载安装nginx: nginx官网下载地址:http://nginx.org/en/download.html 下载任一版本(我下载的是stable1.12.1版本)解压到D:\wnmp\ng ...

  6. 走进 Xamarin Test Recorder for Xamarin.Forms

    此篇是承接之前 走进 UITest for Xamarin.Forms 的,所以如果没有看过之前的可以先看下之前的 UITest 比起上一篇纯敲代码只适合程序员的 UITest ,这一篇不管是程序员还 ...

  7. 关于docker使用的几个小问题(二)

    很久没写博客了,集中写几个比较有意思的小问题. 一.CentOS容器没有service命令 这是因为我们从docker官方镜像仓库中pull的最新CentOS镜像都是centos7.4 Redhat- ...

  8. AsposeCell特定格式表格

    效果图: Workbook workbook = new Workbook(); Worksheet sheet = (Worksheet)workbook.Worksheets[0]; Cells ...

  9. iOS 之 UITextField

    UITextField 相关细节处理: 1.  设置leftView , rightView let leftView = UIView() // 设置leftView/rightView之后,勿忘设 ...

  10. 愚蠢的遗留BUG

    二次开发本来就是很恶心的事,我竟然是三次开发. 今天遇到一个BUG,上传图片的时候报错了,操作过程很简答,点击上传按钮,选择图片,确定上传,如图: 报错信息很直白,也很奇怪: (为了写博客,把代码回滚 ...