在Java的Struts框架下进行web编程的入门教程

时间:2021-05-19

当点击一个超链接或提交一个HTML表单在Struts2 的 Web应用程序,输入所收集被发送到一个Java类称为操作控制器。当动作执行后,结果选择了一个资源来呈现响应。资源通常是一个JSP,但它也可以是一个PDF文件,Excel电子表格,或一个Java applet 窗口。

假设已经建立开发环境。现在让我们继续为第一个 “Hello World” 的 struts2 项目构建。这个项目的目的是建立一个Web应用程序,它收集用户的姓名,并显示“Hello World” 用户名。我们将创建任何Struts2项目的四个组成部分:

我打算使用Eclipse IDE,所以所有必需的组件将创建一个动态Web项目下。所以,让我们开始创建动态Web项目。

创建动态Web项目:
启动Eclipse,然后再 File > New > Dynamic Web Project 输入工程名称为 HelloWorldStruts2 并设置屏幕中给出其余的选项:

选择在接下来的画面中的所有默认选项和最后检查 Generate Web.xml deployment descriptor 选项. 这将创建一个动态Web项目在Eclipse。现在去 Windows > Show View > Project Explorer, 会看到项目窗口的东西如下:

现在复制下列文件从struts 2 lib 文件夹 C:struts-2.2.3lib 到工程 WEB-INFlib 文件夹,要做到这一点,你可以简单地将以下的所有文件拖放复制到WEB-INF lib文件夹。

  • commons-fileupload-x.y.z.jar
  • commons-io-x.y.z.jar
  • commons-lang-x.y.jar
  • commons-logging-x.y.z.jar
  • commons-logging-api-x.y.jar
  • freemarker-x.y.z.jar
  • javassist-.xy.z.GA
  • ognl-x.y.z.jar
  • struts2-core-x.y.z.jar
  • xwork-core.x.y.z.jar

创建动作类:
Action类是 Struts2 应用程序的关键,我们实现的大部分动作类中的业务逻辑。因此,让我们创建一个Java文件HelloWorldAction.java Java Resources > src 在下面给出的内容包名 com.yiibai.struts2 。

Action类响应用户操作,当用户点击一个URL。 Action类中的方法中的一个或多个被执行并返回一个字符串结果。基于结果的值,一个特定的JSP页面的呈现方式。

package com.yiibai.struts2;public class HelloWorldAction{ private String name; public String execute() throws Exception { return "success"; } public String getName() { return name; } public void setName(String name) { this.name = name; }}

这是一个非常简单的类,一个名为“name”属性。我们有标准的“name”属性的getter和setter方法​​,并返回字符串“success”的执行方法。

Struts2框架将创建一个对象HelloWorldAction类并调用执行方法在响应用户的动作。把业务逻辑里面的execute方法,最后返回的字符串常量。简单地说为每个网址,必须执行一个动作类,要么就可以直接使用这个类的名称作为操作名,也可以使用struts.xml文件如下所示映射到一些其他的名字。

创建视图
我们需要一个JSP提交最后的消息,这个页面会被称为Struts2框架一个预定义的动作时,会发生这种映射将被定义在struts.xml文件。因此,让我们一起创造在Eclipse项目在WebContent文件夹下面的jsp文件helloWorld.jsp。要做到这一点,右键单击WebContent文件夹在项目资源管理器,选择New >JSP File。 .

<%@ 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>

taglib指令告诉Servlet容器,这个页面将使用Struts 2的标签,这些标签将之前由s。 s:property标签显示动作类属性"name> HelloWorldAction类的getName()方法返回的值。

创建主页:
我们还需要在WebContent文件夹中创建的index.jsp。该文件将作为初始动作URL,用户可以在其中点击告诉Struts 2框架调用 HelloWorldAction类定义的方法呈现 helloWorld.jsp 视图。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://.dao.StudentDao; //QueryAction负责接收ActionForm的数据,然后进行处理//规则://1-必须继承org.apache.struts.action.Action//2-重写excute方法业务逻辑//3-将这个类在配置文件中注册public class QueryAction extends Action{ public QueryAction(){System.out.println("QueryAction.java构造函数运行");} @Overridepublic ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {QueryForm queryForm=(QueryForm)form;String sname=queryForm.getSname();sname=new String(sname.getBytes("iso-8859-1"),"gb2312");StudentDao studentDao=new StudentDao();ArrayList stus=studentDao.queryStuByName(sname);request.setAttribute("stus", stus);System.out.println("QueryAction.java中execute函数运行");// 跳转ActionForward af=new ActionForward("/result.jsp");//设置了配置文件可以用以下方式跳转// ActionForward af = mapping.findForward("RESULT");//以上方式出现异常警告:警告: Unable to find 'RESULT' forward.return af;}}


编写了以上的文件还未能实现struts的功能,要对各个文件之间的关系在struts-config.xml文件进行配置。
配置如下:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <data-sources /> <!-- 在此注册ActionForm --> <form-beans> <!-- name:名称 type:类的路径 --> <form-bean name="queryForm" type="project02.QueryForm"></form-bean> </form-beans> <global-exceptions /> <!-- 设置URL的逻辑名称 全局性的,所以的Action都可以识别到--> <global-forwards> <forward name="RESULT" path="/result.jsp"></forward> </global-forwards> <!-- 这里注册Action --> <action-mappings> <!-- name:Actionform的名称 type:类的路径 path:客户端提交给服务器临时指定的路径 --> <action name="queryForm" path="/query" type="project02.QueryAction"></action> </action-mappings> <message-resources parameter="project02.ApplicationResources" /></struts-config>


最后,对工程文件进行发布,启动tomcat,用浏览器测试。


现在,来梳理清楚。根据需求建立功能。根据要求建立form和action文件。最后对struts-config.xml文件进行配置。

测试操作步骤:
1-进入index.jsp导航页面,点击学生学籍查询进入了queryform.jsp页面
2-进入了queryform.jsp页面,在文本框输入学生名中的一个或两个字进行模糊查询。点击模糊查询。
<form action="/Project02/query.do" method="post">
请您输入学生姓名:<input name="sname">
<input type="submit" value="模糊查询">
</form>
Action:指定了action要执行的路径 method:提交的方式--post不显示信息,get显示信息
3-进入了/Project02/query.do 到了QueryAction.java执行。这里为什么是到QueryAction.java文件下执行的呢?

<!-- 在此注册ActionForm --> <form-beans> <!-- name:名称 type:类的路径 --> <form-bean name="queryForm" type="project02.QueryForm"></form-bean> </form-beans> <!-- 这里注册Action --> <action-mappings> <!-- name:Actionform的名称 type:类的路径 path:客户端提交给服务器临时指定的路径 --> <action name="queryForm" path="/query" type="project02.QueryAction"></action> </action-mappings>

因为配置文件已经完成了配置。注册Action中的path=”/query”就是query.do只是没有了.do后缀。这里已经指定了type类的路径为:project02.QueryAction 所以执行QueryAction.java文件。
4-接下来的就是java文件了,大都能看懂。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章