Struts程序设计之HelloWord实战入门篇

使用Intellij IDEA通过Maven搭建struts2的HelloWord(超详细图文教程) 在JavaWeb中,随着Intellij IDEA的广泛使用,所用的Maven插件在以后的JavaEE中开发也将是个趋势,通过Maven仓库,我们可以不用下载所关联的Jar包就可以进行引用,还是很方便整个工程管理的。 这次练习的是Javaweb开发中的有名的MVC开发框架:struts2 struts2(百科): Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个serv... 阅读详情
[目标]

实现一个最简单的Struts程序。程序包括一个输入页和输出页,输入页。

对于学习程序设计,我们已习惯于从Hello程序开始,实践证明,这是一个最有效的入门方法。下面就着手设计我们的第一个Struts程序----Hello程序。Hello程序的目标是实现从一个输入JSP页面中的输入框输入一个“Hello”单词,在另一个输出JSP页面中显示“Hello”一词。根据Struts框架的要求,这个Hello程序将包含输入JSP文件、输出JSP文件、Action文件、FormAction文件及配置文件。也就是说,这个Hello程序是一个完整的Struts程序,它可直接在Tomact、Resin等服务器上运行。

[背景知识]

以前使用servlet开发应用系统的人深深感受到在java代码中嵌入大量html代码是一件非常痛苦的事,于是sun推出了JSP,解决了java代码中嵌入html代码的问题。但是很快程序员们就知道,用JSP“在html代码中嵌入大量java代码”跟“在java代码中嵌入大量html代码”是一样的非常痛。JSP是这样,ASP也是这样。于是,Craig R. McClanahan借用MVC的思想,把Java web应用程序的java和html分离开放在不同的文件中,分成了三部分,也就是struts;后来,微软也学会了这种分离方法,但微软懒一些,只分成了两部分,也就是ASP.NET。

Struts (org.apache.struts)是一个开放源代码的Web应用框架,基于MVC设计模式,使用servlet和JSP API建立,可以用来构建复杂的Web应用。它允许我们分解一个应用程序的商业逻辑、控制逻辑和表现逻辑的代码,使它的重用性和维护性更好。Struts框架是Jakarta工程的一部分,由Apache软件基金会管理。Struts可以从http://jakarta.apache.org/ struts站点下载。

Struts框架提供以下服务。

作为MVC结构中的controller的servlet.

JSP里用于bean管理、HTML和javascript生成、模板处理和流程控制的JSP标签库。

用于国际化消息的框架。国际化你的Web应用,意味着你的Web应用在使用时可以让用户以喜爱的语言显示。这意味着你需要创建一个应用资源文件,包含每种语言的信息。

一个JDBC的实现来定义数据源和数据库连接池。

一个通用的的错误和异常处理机制,包括从一个应用程序资源文件读取错误信息。

XML语法分析。

文件上载工具。

注册机制。

一个基于Struts的应用程序的表示层(view)使用Struts标签库(taglibs)构建。来自客户的请求被传递给叫ActionServlet的servlet,它作为controller.使用了Struts的应用程序,所有需要通过框架的请求都通过ActionServlet传递。这个ActionServlet把数据从请求传递到ActionForm JavaBean。

ActionForm是代表从一个表单View组件输入数据的JavaBean。这些表单由JSP用Struts html标签库产生。这个beam由 ActionServlet生成,带request参数,它还请求ActionForm来验证用户提交数据的合法性。

ActionServlet通过定义一组ActionMapping来配置。一个ActionMapping是一个对象,它将请求中的URL映射到由应用程序开发者提供的处理请求的组件。ActionServlet和ActionMapping的配置在XML配置文件中完成。

专用的应用程序用于处理请求的组件叫Action类。在MVC结构中,它们代表模型。它们可能用于验证用户输入的合法性,假如在信息处理过程中出现了应用程序错误,Action类可以创建一个error对象的实例,然后保存庆HTTP request对象中。如果在Action类中的逻辑成功地被招待类给Controller传递一个ActionForward对象,代表所需的描绘响应的JSP。ActionForward有两种:专门转发给特定的Action类或全局转发(任何一个Action类可以把这些ActionForwards转给Controller)。

[步骤]

1、打开Visual Struts开发环境:

(1)把文件拷贝到本地硬盘的一个目录下,例如

   F:/JavaWebStudio/

(2) 运行BIN目录下的JavaWebStudio.exe文件(同时自动在桌面建立一个快捷方式,第二次启动时,只需点击桌面的快捷方式即可),出现如下启动界面:


另外,第一次运行JavaWebStudio,会提示是否要自动配置环境变量,建议选择自动配置。

2、建立一个“空的Struts普通模板”应用程序:

选择菜单“文件”—“新建”—“新建项目”,弹出新建项目对话框。

在对话框中选择“空的Struts普通用模板”,在项目名称中输入“Simple”,package (包名)和位置(项目的路径)采用默认的值就行,当然也可以根据需要改变。最后点击“确定”按钮完成新项目的建立。


从文件管理器中可看出Simple项目的文件结构如下:


Simple

+------config

+------lib

+------src

+------web

-------build.xml

-------hello.prj

在Simple项目根目录下包含四个子目录和两个文件,这是JSPStudio项目的标准结构,最好不要改变它们默认的名称,否则会出现问题。



3、利用Struts文件向导建立新的应用:

在JSPStudio文件管理器内点击鼠标右键,在弹出的菜单中选择“Struts文件向导”进入Struts文件向导对话框,也可以选择菜单“文件”—“新建”—“ Struts文件向导”进入Struts文件向导对话框。

在Struts文件向导对话框JSP文件标签下的文件名输入栏中输入“HellWord”文件名,其它文件采用默认的设置,点击“确定”按钮完成在Struts文件向导。

刷新JSPStudio文件管理器,这时发现web目录下自动生成了两个文件,分别是HellWord.jsp和HellWord.jsp,前者是输入JSP文件,后者是输出JSP文件;src/emptyprj目录下自动生成了两个文件,分别是HellWord Action.java和HellWord Form.java,前者是Action文件,后者FormAction文件。



4、编译、启动服务器:


点击工具条上的编译按钮或选择菜单“生成”—“编译”开始项目的编译。编译过程和结果在输出栏中显示出来,内容如下:

C:/Documents and Settings/Administrator/桌面>F:

F:/>cd F:/JavaWebStudio/JavaWebStudioWorkDir/Simple

F:/JavaWebStudio/JavaWebStudioWorkDir/Simple>ant -buildfile build.xml

Buildfile: build.xml

prepare:

[mkdir] Created dir: F:/JavaWebStudio/jakarta-tomcat-5.0.24/webapps/Simple

[copy] Copying 2 files to F:/JavaWebStudio/jakarta-tomcat-5.0.24/webapps/Simple

[mkdir] Created dir: F:/JavaWebStudio/jakarta-tomcat-5.0.24/webapps/Simple/WEB-INF

[copy] Copying 6 files to F:/JavaWebStudio/jakarta-tomcat-5.0.24/webapps/Simple/WEB-INF

[mkdir] Created dir: F:/JavaWebStudio/jakarta-tomcat-5.0.24/webapps/Simple/WEB-INF/classes

[copy] Copying 5 files to F:/JavaWebStudio/jakarta-tomcat-5.0.24/webapps/Simple/WEB-INF/classes

[mkdir] Created dir: F:/JavaWebStudio/jakarta-tomcat-5.0.24/webapps/Simple/WEB-INF/lib

[copy] Copying 18 files to F:/JavaWebStudio/jakarta-tomcat-5.0.24/webapps/Simple/WEB-INF/lib

[mkdir] Created dir: F:/JavaWebStudio/JavaWebStudioWorkDir/wars

compile:

[javac] Compiling 3 source files to

F:/JavaWebStudio/jakarta-tomcat-5.0.24/webapps/Simple/WEB-INF/classes

dist:

[jar] Building jar: F:/JavaWebStudio/JavaWebStudioWorkDir/wars/Simple.war

BUILD SUCCESSFUL

Total time: 5 seconds

上述输出表明利用ant 编译build.xml所设置的项目已成功。把编译结果拷贝到tomcat服务器webapps目录下,并生成打包文件Simple.war。



5、启动服务器:

点击工具条上的启动服务器按钮或选择菜单“运行”—“ 启动服务器”启动服务器jakarta-tomcat服务器。


6、运行:

展开文件管理器Simple项目下web目录,可见到HelloWord.jap和HelloWordOut.jsp文件,通过双击打开HelloWord.jap文件,如图所示。编辑窗口分上下两部分,上部分是源程序编辑,下部分是可视化编辑,与Dreamweaver MX编辑窗口相似。


点击工具条上的运行按钮或选择菜单“运行”—“ 运行(web浏览)”这时打开显示出HelloWord.jsp的运行结果。在运行结果页面中的输入框中输入“Hello Word”,点击“提交”按钮,这时转发到HelloWordOut.jsp文件,HelloWordOut.jsp页面中输出“Hello Word”一词。


生成的源代码如下:

<html><head><title></title>

<META http-equiv=Content-Type content="text/html; charset=gb2312">

</head>

<body bgColor=white>

<base href="http://localhost:8080/Simple/HelloWord.jsp"> <form name="HelloWordForm" method="post" action="/Simple/HelloWordAction.do;jsessionid=CFFAC422C4A779419348832D588CA5BE">

<input type="text" name="mybeanvariable1" value=""> <input type="submit" value="提交"> <input type="reset" value="重写">

</form>

</body>

</html>


生成的源代码如下:

<html><head><title></title>

<base href="http://localhost:8080/Simple/HelloWordOut.jsp">

</head>

<body bgcolor="white">

Hello Word

</body>

</html>



[项目文件结构]


config目录下包含了所有的配置文件和Struts标签的描述文件,例如web.xml、struts-config.xml、struts-bean.tld、struts-html.tld、struts-logic.tld和struts-template.tld等文件。

lib包含了Struts库文件和带用其它库文件,例如struts.jar、struts-legacy.jar、commons-lang.jar和xerces.jar等文件。

src目录下包含了java原文件和资源文件,例如ApplicationResources.properties和ApplicationResources_ch.properties资源文件,前者是英语资源文件,后者是中文资源文件。新建时这个目录里还有一个子目录“emptyprj”,这个名称与建立项目时输入的package名称是一至的。Emptyprj目录下有“filters”、“jdbc”两个子目录,前者是过滤器目录,是中文解决方案,详细分析请看后面的有关滤器程序设计、中文解决方案章节,后者是数据库连接池文件,详细分析请看后面的Struts数据库应用程序设计章节。

web目录下包含了JSP、Html等web文件和Web文件用到的图片文件。新建时这个目录是空的。

build.xml文件是编译是所需的配置文件,由于JSPStudio采用的是ANT编译器,所以这个文件是JSPStudio项目中必不可少的,它是ANT标准的配置文件,所有的项目目录结构也符合ANT编译器的要求,可见JSPStudio项目与ANT具有非常好的兼容性,这也是JSPStudio的优点之一。

hello.prj文件是项目文件,XML结构,内容如下:

<projectname>Simple</projectname>

<projecttype>struts</projecttype>

<title>这是一个建立空的Struts普通模板</title>

<package>emptyprj</package>

<typepath>/Jave Web 项目/空的Struts普通模板</typepath>

<projectpath>F:/JavaWebStudio/JavaWebStudioWorkDir/Simple</projectpath>

<projectname>标签内是项目名称;<projecttype>标签内是项目的类型,这个标签的内容最好不要改变;<title>标签内是项目的简单说明,可根据需要填写;<package>标签内是默认的package名称;<typepath>标签内是项目模板的相对路径;<projectpath>标签内是项目保存的绝对路径。


[关键技术]


Struts使用MVC结构;图2.1所示的逻辑图描述了框架的高层结构。

我们现在讨论图中的每个元素。

一个基于Struts的应用程序的表示层(view)使用Struts标签库(taglibs)构建。来自客户的请求被传递给叫ActionServlet的servlet,它作为controller.使用了Struts的应用程序,所有需要通过框架的请求都通过ActionServlet传递。这个ActionServlet把数据从请求传递到ActionForm JavaBean。

ActionMapping

ActionForm (模型的数据)

Action (模型的业逻辑)

发送

ActionServlet (controller)

JSP (view)

taglib (view)

使用

实例化

调用

使用

使用


ActionForm是代表从一个表单View组件输入数据的JavaBean。这些表单由JSP用Struts html标签库产生。这个beam由 ActionServlet生成,带request参数,它还请求ActionForm来验证用户提交数据的合法性。

ActionServlet通过定义一组ActionMapping来配置。一个ActionMapping是一个对象,它将请求中的URL映射到由应用程序开发者提供的处理请求的组件。ActionServlet和ActionMapping的配置在XML配置文件中完成。

专用的应用程序用于处理请求的组件叫Action类。在MVC结构中,它们代表模型。它们可能用于验证用户输入的合法性,假如在信息处理过程中出现了应用程序错误,Action类可以创建一个error对象的实例,然后保存庆HTTP request对象中。如果在Action类中的逻辑成功地被招待类给Controller传递一个ActionForward对象,代表所需的描绘响应的JSP。ActionForward有两种:专门转发给特定的Action类或全局转发(任何一个Action类可以把这些ActionForwards转给Controller)。


本例主要文件之间的关系:

输入页面:

HelloWord.jsp

ActionForm (模型的数据)

HelloWordForm.java

ActionServlet (controller)



通过struts-config.xml配置实现



ActionMapping



输入页面:

HelloWordOut.jsp

Action (模型的业逻辑)

HelloWordAction.java



[关键源代码分析]

4.3.1 输入JSP页面文件

输入JSP页面文件名是hello.jsp,主要实现一个带有文本框的表单,文件代码如下:

<%@ page contentType="text/html;charset=GB2312" language="java" %>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>

<html:html>

<head>

<title></title>

<html:base/>

</head>

<body bgcolor="white">

<html:form action="/helloAction.do" method="post">

<html:text property="mybeanvariable1" />

<html:submit value="提交" />

<html:reset value="重写" />

</html:form>

</body>

</html:html>



首先是把本页定义为支持中文显示,中文编码采用GB2312格式,程序语言为Java:

<%@ page contentType="text/html;charset=GB2312" language="java" %>

接着定义支持四种Struts标签bean、html、logic和template,在该文件中没用到的标签可以去掉相应的定义,如果在文件中还需要用到自定义标签,也需要在这里加入相应的定义:

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>

<html:html>就不用说了。<html:base/>标签对应HTML的<BASE>标签,用来设定测览器中文件的绝对路径,然后在文件中只需写下文件的相对位置,在测览器中测览的时候这些位置会自动附在绝对路径后面,成为完整的路径。在文档中所有相对地址形式的URL是相对于这里定义的UTRL而言的。一篇文档中的<BASE>标记不能多于一个,必须放于<head>标签内,并且应该在任何包含URL地址的语句之前定义。<html:form>这里用了黑体字,表示是要重点讲解的地方。

<html:form action="/helloAction.do" method="post">

<html:text property="mybeanvariable1" />

<html:submit value="提交" />

<html:reset value="重写" />

</html:form>

<html:form>标签定义了一个表单,提交时的目标URL是“/helloAction.do”,方法是“post”,Post方法是将用户在表单中填写的数据包含在表单的主体中,一起传送到服务器上的处理程序中,该万法没有字符的限制,它包含了ISO10646的字符集,是一种邮寄的万式,在测览器的地址栏不显示提交的信息,这种万式传送的数据是没有限制。当然也可以选择Get方法,Get方法是将表单内容附加在URL地址后面,所以对提交信息的长度进行了限制,最多不可以超过8192个字符,如果信息大长,将被截去,从而导致意想不到的结果,而且不能传送非ASCII码的字符。表单内包含一个文本输入框<html:text>,它的值与Bean中属性为"mybeanvariable1"的变量相对应,如果结mybeanvariable1付了初值,则在启动这个页面时文本框中就显示默认的mybeanvariable1初值。另外表单内还包含了两个最常见的提交按钮<html:submit value="提交" />和重写按钮<html:reset value="重写" />。



4.3.2 输出JSP页面文件

输出JSP页面文件名是helloOut.jsp,主要实现输入文件提交的文本框的值,文件代码如下:

<%@ page contentType="text/html;charset=GB2312" language="java" %>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<html:html>

<head>

<title></title>

<html:base/>

</head>

<body bgcolor="white">

<html:html>

<head>

<title></title>

<html:base/>

</head>

<body bgcolor="white">

<bean:write name="helloForm" property="mybeanvariable1" />

</body>

</html:html>

</body>

</html:html>

输出文件与前面输入文件唯一不同的是把<html:form>标签变成了<bean:write>标签:

<bean:write name="helloForm" property="mybeanvariable1" />

<bean:write>标签实现Bean属性值的输出,其中name保存Bean名,这里是“helloForm”,从后面的配置文件可以看出,它对应的类是helloForm类;property保存属性名,这里是“mybeanvariable1”,与输入文件的文本框取的属性名一至。



4.3.3 ActionForm Bean文件

Hello程序的ActionForm Bean文件实现只包含一个变量的Bean,文件名是helloForm.java,文件代码如下:

package emptyprj;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionError;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionMapping;

public final class HelloWordForm extends ActionForm

{

private String mybeanvariable1;

public String getMybeanvariable1()

{

return (this.mybeanvariable1);

}

public void setMybeanvariable1(String mybeanvariable1)

{

this.mybeanvariable1=mybeanvariable1;

}

}

首先是定义package名:

package emptyprj;

这是选用了JSPStudio默认的package名emptyprj,需注意的是package名要与目录名对应。接着引入了ActionForm Bean设计中常用的五个类HttpServletRequest、ActionError、ActionErrors、ActionForm和ActionMapping,这是JSPStudio自动加入的,实际上helloForm类只用于ActionForm类,其它部分可以删除,但这里保留它以方便以后扩展程序时用。

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionError;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionMapping;

接下来就是定义了helloForm、一个参数mybeanvariable1和它对应的get()、set()函数,这与普通Bean定义的方法一模一样。



4.3.4 Action文件

Hello程序的Action文件实现对输入文件提交的表单的处理,文件名是helloAction.java,文件代码如下:

package emptyprj;

import java.lang.reflect.InvocationTargetException;

import java.util.Locale;

import javax.servlet.ServletException;

import javax.servlet.http.HttpSession;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.PropertyUtils;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionError;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.action.ActionServlet;

import org.apache.struts.util.ModuleException;

import org.apache.struts.util.MessageResources;



public final class HelloWordAction extends Action

{

// 变量定义:

private Log log = LogFactory.getLog("org.apache.struts.webapp.Example");

//函数定义:

public ActionForward execute(ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response)

throws Exception

{

// Extract attributes and parameters we will need

Locale locale = getLocale(request);

MessageResources messages = getResources(request);

HttpSession session = request.getSession();

HelloWordForm myform = (HelloWordForm) form;

String variable1= myform.getMybeanvariable1();

try

{

if(variable1.trim().equals(""))

{

return new ActionForward(mapping.getInput());

}

//其它代码

return (mapping.findForward("success"));

}

catch (Exception e)

{

//log.error("出错", e);

//log.trace("出错");

throw new RuntimeException(e.getMessage());

}

}

}

首先定义处理函数execute(),可以理解为当Hello输入文件表单提交到服务器的ActionServlet,由ActionServlet调用Action的execute()函数实现商业逻辑处理,处理完成后把结果转发到输出文件中。execute()函数定义一个helloForm实例“myform”,并从提交的输入ActionForm对象实例form中读取数据,把mybeanvariable1变量的值赋给新的字符串变量variable1:

helloForm myform = (helloForm) form;

String variable1= myform.getMybeanvariable1();

接下来是出错处理,try语句用于组合一个引起异常的代码块,它使我们告诉Java要注意有可能出现异常的代码段;catch:一旦掷出一个异常,需要捕获住这个异常,catch语句使程序员定义一个捕获;finally:在try/catch块结尾,程序可能需要确保一个代码块不管是否掷出了异常,总是被执行,例如不管发生什么,我们可能都需要确保关闭特定的文件; Exceptlon:一种用于存放在代码中发现的关于一个"exception"或"error"的信息的类;throws:当某些事需要关注时,我们"掷出"一个异常。这个异常被我们创建的一段处理异常的特殊代码"抓住"。涣句话说,通过掷出一个异常,我们告诉代码:出错啦,需要调用一些特殊的逻辑去处理问题。下面完它的完整结束:

try

{

//正常代码

}

catch (Exception e)

{

//出错处理代码

throw new RuntimeException(e.getMessage());

}

finally

{

//最后都必需进行的处理代码

}



在try块中我们进行的变量variable1是否为空的判断,如果为空就转发到输入页,否则转发到定义为success的输出页:

if(variable1.trim().equals(""))

{

return new ActionForward(mapping.getInput());

}

//其它代码

return (mapping.findForward("success"));

mapping.getInput()函数用于获取输入页的URL值,这个值与配置文件struts-config.xml中<action>项的input属性值相对应。



4.3.5 Struts程序配置

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"

"http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">

<struts-config>

<form-beans>

<form-bean name="HelloWordForm"

type="emptyprj.HelloWordForm" />

</form-beans>

<action-mappings>

<action path="/HelloWordAction"

type="emptyprj.HelloWordAction"
name="HelloWordForm"

scope="session"

input="/HelloWord.jsp">

<forward name="success" path="/HelloWordOut.jsp" />

</action>

</action-mappings>

</struts-config>

 
struts2 helloworld struts2框架最基本的代码。如果你想看看struts2最基本的样子,你个应该是你不错的选择。但前提是你得学过jsp/servlet 立即下载

相关推荐

structs编程设计

编写一个Struts处理表单的程序 实现一个客户端以表单方式向服务器提交数据的程序

Struts2入门第一个程序HelloWorld

struts2入门教程

zhaoliang092011的专栏 1万+

debian mirrors 镜像源 riscv 64 赛昉 星光 starfive vf2 InRelease‘ doesn‘t support architecture ‘riscv64‘

debian mirrors 镜像 riscv 64 赛昉 星光2 starfive vf2 InRelease' doesn't support architecture 'riscv64'

qq_29758759的博客 1259

struts2的简单的编程步骤

1.导入jar包   a.struts2-core-2.1.8.1.jar-Struts2核心包,是Struts框架的“外衣。 b.xwork-core-2.1.6.jar-Struts2核心包,是WebWork内核。 c.ognl-2.7.3.jar-用来支持ognl表达式的,类似于EL表达式,功能比EL表达式强大的多。 d.freemarker-2.3.15.jar-freemark

烟雨青山 999

【文章阅读+代码复现】Point-GNN

Brief 在3D点云语义分割方法中,GNN已经做了很多可用的方案,但是在目标检测上依旧是采用比较传统的CNN和稀疏卷积的组合,这一篇文章是研究了图卷积在3D检测的中的用法。来自卡内基梅隆大学。已经被CVPR2020接收. 这里是 paper 这里是 code Abstruct 一个采用GNN设计的3D目标检测框架 过程是先将点云场景编码成图结构,随后设计了一个叫point-GNN的网络结构,在...

有所为,有所成长 1万+

TP4054芯片实战:手把手教你设计USB锂电充电电路(附PCB散热优化技巧)

本文以TP4054芯片为核心,手把手教你设计稳定可靠的USB锂电池充电电路。文章详细解析了芯片的恒流恒压工作模式、关键外围元件选型计算,并重点分享了PCB布局与散热优化的实战技巧,帮助工程师从“能工作”提升到“工作得好”,确保充电效率与系统稳定性。

1a2s3d4f5g的博客 468

String s = "Hello world!"解释

小贝520 2716

【Shader】Unity批量更换Shader

在Unity开发中,因为渲染管线问题,经常会遇到需要大量更改shader的问题,本篇文章讲述批量更换Shader的工具。

憨辰 1468

struts2入门helloword

这一是入门级别helloword 1、添加struts必须的一些的jar包 asm-3.3.jar asm-commons-3.3.jar asm-tree-3.3.jar commons-fileupload-1.3.1.jar commons-io-2.2.jar commons-lang3-3.2.jar freemarker-2.3.22.jar javassist-3.11.0.GA.jar log4j-api-2.2.jar log4j-core-2.2.jar ognl-3.0.6.jar s

微笑一号的博客 328

Dev-C++使用技巧2(亲测)(更改字体和颜色、自动保存、快捷键选项、一键排版)

更改字体和颜色 顶部菜单栏->工具->编辑器选项。 更改字体 当前选项卡->显示,字体word有的基本都有,华文楷体、宋体,幼圆之类。西文字体默认字体Consloas就不错,中文的话幼圆、新宋体都挺不错。 幼圆效果: 新宋体效果: 更改颜色 当前选项卡->语法,分别单击图中的部分,然后在左边修改前景颜色就可以了。需要直接显示的修改前景颜色,背景颜色设为白色;需要选中显示的修改背景颜色,前景设为白色。 自动保存 我们有时候忘记保存或者电脑突然关机,可能会丢失代码。

魔神之云的博客 2万+

【本地部署实战】LM Studio深度使用指南:从环境搭建到模型调优

LM Studio通过极简的操作流程和强大的生态兼容性,让本地部署大模型成为可能。随着M4芯片的发布和CUDA 12.0的优化,未来本地化AI开发将迎来新的爆发点。建议开发者关注官方Discord社区(https://discord.gg/lmstudio)获取最新模型支持信息。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 8755

Struts2之Helloword

代码 package com.helloworld.struts.action; import com.opensymphony.xwork2.ActionSupport; public class HelloAction extends ActionSupport{ private String userName;//保存请求参数用户姓名 private String reslutSt

myserverthepeople的专栏 583

时间门控拉曼进展

拉曼光谱就像是用光给分子拍“指纹照”,通过激光照射样品,散射光会揭示样品的分子结构。但问题来了,样品有时会发荧光,就像拍照时闪光灯太亮,把指纹照模糊了。时间门控拉曼光谱技术就像加了个“快门”,只在拉曼信号出现的那一瞬间开门,把慢吞吞的荧光挡在门外,这样就能拍到清晰的“指纹”。

qq_53529450的博客 538

struts2环境搭建helloword

1.建立一个动态web项目 2.在WEBINF-lib下粘贴对应必须的jar包 3.配置web.xml:         struts2                                                                                                                       //随意,开心就好

yyw14叶筱薇17的博客 410

1、JMP脚本编程全面指南:从基础到高级应用

本博客全面介绍了JMP脚本编程的各个方面,从JMP基础和JSL入门,到数据类型、数据结构、编程方法、数据表操作、图形与三维场景脚本,再到应用程序创建与扩展功能。内容涵盖脚本工具使用、常见任务实现、兼容性说明及未来发展趋势,旨在帮助用户掌握JMP脚本语言的强大功能,提升数据分析的自动化与定制化能力。适合从初学者到高级用户的深入学习与实践参考。

flink9streamer的博客 267

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Struts2之HelloWord

Struts2HelloWord 在web.xml中添加struts2的核心过滤器 <filter> <filter-name>struts2</filter-name> <filterclass>org.apache.struts2.dispatcher.ng.filter.Struts PrepareAndExecuteFilter</fi

goodidea1029的博客 247

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Struts2:HelloWord笔记

在 struts.xml 配置文件中:   <!-- package: 包。struts2 用它来组织模块。      name 属性:必须,用于其他的包引用当前的包.      extends 属性:当前包继承哪个包。继承,即可以继承其中的所有的配置。通常情况下继承struts-default ,这个包在struts-default.xml 文件中定义。    ...

dgk96672的博客 206

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Intellij IDEA 配置Struts2 运行Helloword

Intellij IDEA 配置Struts2 准备工作: 下载官网的Struts2的jar包 确保以前的Tomcat是可以使用的 下载jar包 官网:http://struts.apache.org/download.cgi#struts2510 第一个是完整jar包,不过很大,初学不太适合,后面这个是min版,有最核心的8个包。 下载的是.zip,解压到自己能找到的路径: 准备阶段完成 加下来创建工程: 第三步的意义是:选择Struts库,第一项是用自己下载的包,第二项是自动下载,到这里时我们已

颜 1443

Struts1.x HelloWord

<br />目录结构<br /><br /> <br /> <br /> <br />web.xml文件<br /><?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com

eebbk110的专栏 770

struts2 的 HelloWord

(1)在struts2中使用包来管理Action,与java中的包类似,通常用来管理业务功能相关的action. (2)配置包时必须要指定name属性,name属性值可以任意取名,且唯一。 (3)namespace属性用来定义命名空间,可以不配置,默认为空字符串,作为访问action路径的一部分。(4)每个包都应该继承struts-default包,因为许多核心功能由拦截器实现。 (5)包还可以通

qq_37332969的博客 393

Struts2入门(二 )_struts2_helloword实例

struts2_helloword实例 本文结构: struts2开发环境配置 web-project 结构 全部文件代码及内部说明 总结 struts2环境配置 新建一个web-project工程sturts2_3 下载最新版本struts2包 struts-2.3.20-all.zip 解压缩 把app/struts2-blank.war解压缩(这里使用的是一个空白的struts2框架) 把

apria 1057

struts2下的第一个HelloWord

第一步       首先是进入官网( http://struts.apache.org)下载shtruts2,然后解压。 第二步 打开eclipse,新建一个Dynamic Web Project,取名为struts2 第三步 开始配置文件 首先打开解压后的struts2文件夹,找到apps,再找到struts2-blank.war将其解压。 这是一个空的项目,可以根

ZY63675918的专栏 501

Struts2学习1-使用struts2写一个helloword

使用struts2的准备 Struts2jar包 下载地址:https://struts.apache.org/download.cgi#struts2520 使用struts2的步骤 新建一个web工程 在WEB-INF/lib中导入相关jar包 不能够导入lib下的全部jar包,可以在下载好的struts.2.x.x.zip中的apps文件夹内解压一个wa...

u012777599的博客 291

struts 2 之 helloword

1、把struts 2.3.4.1任意apps的lib中所有jar复制到项目中的相同位置。 注:如果没有,请点击这里下载:http://download.youkuaiyun.com/detail/xz2001/4795059   2、修改web.xml成如下: http://java.sun.com/xml/ns/j2ee"  xmlns:xsi="http://www.w3.org/2001

图钉的笔记 579

struts2 helloword

官方网站上面用Maven挺方便的, 问题是太方便了, 有些细节都不太清楚, 还是用Eclipse自己配一个玩玩。1. 首先新建一个叫struts2的Dynamic Web Project工程2.在Java Resources:src下面新建一个tutorial的包,并且在此包中建一个HelloWorld.java类(此类的内容见最后附文)。3.在Java Resources:src下面新建两个XM

东的学习天地 869
上一篇: 值得一看的Struts入门教程
下一篇: 原版的分页存储过程
JavaProgramers
博客等级 码龄22年 660粉丝 304原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值