Struts2环境配置及第1个Struts程序

学习JAVA的人大部分都要知道Struts,Spring,Hibernate框架,Struts2框架是基于MVC模式的框架,而且也是目前最为流行的框架之一。

对于Struts2我只是了解一点,今天开始一点点的深入,以防以后忘记

先了解一下流程:

login.jsp里的<form action="login">

login是没有后缀名,其默认的后缀名是.action。由于struts.xml中的url-pattern是/*,也就是涵盖了所有的action都到这里来处理,所以首先是那么对于以action结尾的请求是首先被

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

过滤其接收到,接下来到struts.xml中寻找action,找到login的action,并由对应的class来处理,即org.hualang.struts2.LoginAction

在LoginAction.java中,LoginAction.java其实就是个JavaBean,通过里面的get得到用户输入的信息,然后用set方法放入到request作用域当中,然后执行

execute()方法,返回success字符串,寻找到struts.xml文件的

<result name="success">/result.jsp</result>

然后转到了result.jsp文件,通过el表达式将request作用域中的信息取得,然后显示到界面上

第一步:

首先到http://struts.apache.org/网站上下载struts 2.2.1.1,这是目前最新的版本,选择full的.zip的release版本。该版本和struts 2.1有一些区别,一会会介绍。另外struts2和struts1是两个完全不一样的框架,应为struts2是从webwork框架与struts框架结合的,而struts1中的基本都是使用的webwork的东西。

下载完成后,大约有74.71M

第二步:

解压struts-2.2.1.1-all.zip ,会看到里面的目录结构如下

 apps目录里边是5个.war包的源程序,是自带的并且能够完成运行的程序,可以将其解压后,放到tomcat的webapps目录下,就可以启动了

docs目录里是struts的API

lib目录里是很多的包,其中就有一会要用到的包

第三步:

myeclipse下创建一个javaweb 工程,工程名字为Struts2,然后将上面的lib目录下的如下的一些包copy到工程目录下的WebRoot/WEB-INF/lib目录下

第四步:

在WebRoot下创建一个login.jsp文件

Java代码 复制代码  收藏代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>   
  2.   
  3. <html>   
  4.   <head>   
  5.   </head>   
  6.      
  7.   <body>   
  8.     <form action="login">    
  9.         username:<input type="text" name="username" ><br>   
  10.         password:<input type="password" name="password"><br>   
  11.         <input type="submit" name="submit" value="submit">   
  12.     </form>   
  13.   </body>   
  14. </html>  

  再创建一个result.jsp,用于返回结果

 

Java代码 复制代码  收藏代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>   
  2. <%   
  3. String path = request.getContextPath();   
  4. String basePath = request.getScheme() "://" request.getServerName()":" request.getServerPort() path "/";   
  5. %>   
  6.   
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
  8. <html>   
  9.   <head>   
  10.     <base href="<%=basePath%>">   
  11.        
  12.     <title>My JSP 'result.jsp' starting page</title>   
  13.        
  14.     <meta http-equiv="pragma" content="no-cache">   
  15.     <meta http-equiv="cache-control" content="no-cache">   
  16.     <meta http-equiv="expires" content="0">       
  17.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">   
  18.     <meta http-equiv="description" content="This is my page">   
  19.     <!--   
  20.     <link rel="stylesheet" type="text/css" href="styles.css">   
  21.     -->   
  22.   
  23.   </head>   
  24.      
  25.   <body>   
  26.     username:${requestScope.username } <br>   
  27.     password:${requestScope.password }   
  28.   </body>   
  29. </html>  

第五步:

配置web.xml文件

Java代码 复制代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <web-app version="2.5"    
  3.     xmlns="http://java.sun.com/xml/ns/javaee"    
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">   
  7.   <welcome-file-list>   
  8.     <welcome-file>index.jsp</welcome-file>   
  9.   </welcome-file-list>   
  10.   <filter>   
  11.     <filter-name>struts2</filter-name>   
  12.     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>   
  13.   </filter>   
  14.   <filter-mapping>   
  15.     <filter-name>struts2</filter-name>   
  16.     <url-pattern>/*</url-pattern>   
  17.   </filter-mapping>   
  18. </web-app>  

 这里,org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter是必须的,并且要正确。

第六步:

在src目录下创建包org.hualang.struts2,并且在里面创建一个LoginAction.java文件

Java代码 复制代码  收藏代码
  1. package org.hualang.struts2;   
  2.   
  3. public class LoginAction {   
  4.     private String username;   
  5.     private String password;   
  6.     public String getUsername() {   
  7.         return username;   
  8.     }   
  9.     public void setUsername(String username) {   
  10.         this.username = username;   
  11.     }   
  12.     public String getPassword() {   
  13.         return password;   
  14.     }   
  15.     public void setPassword(String password) {   
  16.         this.password = password;   
  17.     }   
  18.     public String execute()   
  19.     {   
  20.         return "success";   
  21.     }   
  22. }  

注意,后边要写

public String execute()

{

return "success";

 

第七步:

在src目录下创建struts.xml文件,该文件很重要

 

Java代码 复制代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <!DOCTYPE struts PUBLIC   
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">   
  5. <struts>   
  6.     <package name="struts2" extends="struts-default">   
  7.         <action name="login" class="org.hualang.struts2.LoginAction">   
  8.             <result name="success">/result.jsp</result>   
  9.         </action>   
  10.     </package>   
  11. </struts>  

 注意,要加入dtd,另外,result标签里处理索引到result.jsp页面

第八步:

此时所有的代码都写完了,运行后发现报错了,但是如果用struts2.1的话,就不会报异常

 异常中说到少了个依赖,为什么呢?

下面是一则新闻,看了后就应该知道原因了

--------------------------------------------------------------------------------------------------------

昨日,Apache软件基金会发布了Struts 2.2.1 GA版。Struts 2.2.1包含了重要的安全修复。Apache建议开发者将现有的Struts2应用升级到Struts 2.2.1。

Struts 2.2.1的内部变化主要有:

  • XWork已经迁移到了Apache软件基金会,现在成为了Struts 2的一部分。新版XWork 2.2.0也随着Struts 2.2.1一同发布。未来,XWork将会迁移到Struts 2中。
  • XWork Maven artifact现在已位于<groupId>org.apache.struts.xwork</groupId>下。
  • XWork使用了最新版的OGNL 3.0,OGNL源代码仓库则位于Github上。
  • Javassist依赖被OGNL排除,要记得将其包含进来,除非在JBoss服务器上加载应用。
  • 解决了XWork一些突出的缺陷,感兴趣的读者可以参考CVE-2010-1870: Struts2/XWork remote command execution来了解详情。
  • 所有的示例应用(除了jboss-blank)都包含了Javassist依赖。
  • 新的jboss-blank示例应用使用了JBoss服务器,它没有将jboss-blank库包含进来,因为JBoss服务器已经提供了。
  • 增加了新的Freemarker缓存选项,这会提升标签的渲染速度,感兴趣的读者可以参考WW-3467并了解关于FreeMarker的更多信息。

Struts 2.2.1修复了之前版本的众多bug,主要修复列举如下:

  • <s:reset type="image">标签上缺少src属性
  • Struts2 showcase无法在JBoss 5.1上部署
  • struts-sitemesh-plugin 2.1.8中FreeMarkerPageFilter的失效问题
  • XWork FileManager不会解码URL
  • ConventionUnknownHandler与rest插件的协作问题
  • StrutsSpringTestCase的内存泄漏问题
  • css_xhtml主题无法应用在IE8上,在其他浏览器上也无法正常使用
  • javassist在JBoss 5.1上的问题

Struts 2.2.1的主要改进列举如下:

  • 升级至OGNL 2.7
  • 文件上传:可以对allowedTypes参数设置不同的File Content Type值
  • 完全集成了SiteMesh 2、Freemarker 2.4.2及Velocity 1.3
  • 将xwork核心迁移至Struts 2
  • 将FreeMarker升级至2.3.16
  • 将Velocity引擎升级至1.6.3

------------------------------------------------------------------------------------------------

那么,到哪里去找那个javassist依赖呢,要知道,在下载的包中的apps目录下的5个小项目都是可以运行的,也就是说明里面存在这个依赖,解压其中的一个war后,找到里面的lib目录,你会发现有个javassist-3.7.ga.jar文件,将其拷贝到工程的lib目录下,重启tomcat并发布后,就可以运行了


第九步:

终于结束了,看看运行结果吧

 上面tomcat启动后,会有那样的一条信息,是说:正在解析配置文件struts-default.xml文件,也就是我们刚才创建的struts.xml映射的E:\J2EE\tomcat6\webapps\Struts2\WEB-INF\classes\struts.xml文件



运行完之后出现

 java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils

导入common-lang3-3.1.jar    包后,可以正常启动


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数字乡村和智慧农业的数字化转型是当前农业发展的新趋势,旨在通过应用数字技术,实现农业全流程的再造和全生命周期的管理服务。中国政府高度重视这一领域的发展,提出“数字中国”和“乡村振兴”战略,以提升国家治理能力,推动城乡融合发展。 数字乡村的建设面临乡村治理、基础设施、产业链条和公共服务等方面的问题,需要分阶段实施《数字乡村发展战略纲要》来解决。农业数字化转型的需求包括满足市民对优质农产品的需求、解决产销对接问题、形成优质优价机制、提高农业劳动力素质、打破信息孤岛、提高农业政策服务的精准度和有效性,以及解决农业融资难的问题。 数字乡村建设的关键在于构建“1+3+4+1”工程,即以新技术、新要素、新商业、新农民、新文化、新农村为核心,推进数据融合,强化农业大数据的汇集功能。数字农业大数据解决方案以农业数字底图和数据资源为基础,通过可视化监管,实现区域农业的全面数字化管理。 数字农业大数据架构基于大数据、区块链、GIS和物联网技术,构建农业大数据中心、农业物联网平台和农村综合服务指挥决策平台三大基础平台。农业大数据中心汇聚各类涉农信息资源和业务数据,支持大数据应用。信息采集系统覆盖市、县、乡、村多级,形成高效的农业大数据信息采集体系。 农业物联网平台包括环境监测系统、视频监控系统、预警预报系统和智能控制系统,通过收集和监测数据,实现对农业环境和生产过程的智能化管理。综合服务指挥决策平台利用数据分析和GIS技术,为农业决策提供支持。 数字乡村建设包括三大服务平台:治理服务平台、民生服务平台和产业服务平台。治理服务平台通过大数据和AI技术,实现乡村治理的数字化;民生服务平台利用互联网技术,提供各类民生服务;产业服务平台融合政企关系,支持农业产业发展。 数字乡村的应用场景广泛,包括农业生产过程、农产品流通、农业管理和农村社会服务。农业生产管理系统利用AIoT技术,实现农业生产的标准化和智能化。农产品智慧流通管理系统和溯源管理系统提高流通效率和产品追溯能力。智慧农业管理通过互联网+农业,提升农业管理的科学性和效率。农村社会服务则通过数字化手段,提高农村地区的公共服务水平。 总体而言,数字乡村和智慧农业的建设,不仅能够提升农业生产效率和管理水平,还能够促进农村地区的社会经济发展,实现城乡融合发展,是推动中国农业现代化的重要途径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值