欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在Java的Struts框架下進(jìn)行web編程的入門(mén)教程

 更新時(shí)間:2015年11月26日 15:02:51   投稿:goldensun  
這篇文章主要介紹了在Java的Struts框架下進(jìn)行web編程的入門(mén)教程,需要的朋友可以參考下

當(dāng)點(diǎn)擊一個(gè)超鏈接或提交一個(gè)HTML表單在Struts2 的 Web應(yīng)用程序,輸入所收集被發(fā)送到一個(gè)Java類(lèi)稱(chēng)為操作控制器。當(dāng)動(dòng)作執(zhí)行后,結(jié)果選擇了一個(gè)資源來(lái)呈現(xiàn)響應(yīng)。資源通常是一個(gè)JSP,但它也可以是一個(gè)PDF文件,Excel電子表格,或一個(gè)Java applet 窗口。

假設(shè)已經(jīng)建立開(kāi)發(fā)環(huán)境。現(xiàn)在讓我們繼續(xù)為第一個(gè) “Hello World” 的 struts2 項(xiàng)目構(gòu)建。這個(gè)項(xiàng)目的目的是建立一個(gè)Web應(yīng)用程序,它收集用戶(hù)的姓名,并顯示“Hello World” 用戶(hù)名。我們將創(chuàng)建任何Struts2項(xiàng)目的四個(gè)組成部分:

20151126145124406.png (580×351)

我打算使用Eclipse IDE,所以所有必需的組件將創(chuàng)建一個(gè)動(dòng)態(tài)Web項(xiàng)目下。所以,讓我們開(kāi)始創(chuàng)建動(dòng)態(tài)Web項(xiàng)目。

創(chuàng)建動(dòng)態(tài)Web項(xiàng)目:
啟動(dòng)Eclipse,然后再 File > New > Dynamic Web Project 輸入工程名稱(chēng)為 HelloWorldStruts2 并設(shè)置屏幕中給出其余的選項(xiàng):

20151126145339690.jpg (555×559)

選擇在接下來(lái)的畫(huà)面中的所有默認(rèn)選項(xiàng)和最后檢查 Generate Web.xml deployment descriptor 選項(xiàng). 這將創(chuàng)建一個(gè)動(dòng)態(tài)Web項(xiàng)目在Eclipse。現(xiàn)在去 Windows > Show View > Project Explorer, 會(huì)看到項(xiàng)目窗口的東西如下:

20151126145402078.jpg (560×400)

現(xiàn)在復(fù)制下列文件從struts 2 lib 文件夾 C:struts-2.2.3lib 到工程 WEB-INFlib 文件夾,要做到這一點(diǎn),你可以簡(jiǎn)單地將以下的所有文件拖放復(fù)制到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

創(chuàng)建動(dòng)作類(lèi):
Action類(lèi)是 Struts2 應(yīng)用程序的關(guān)鍵,我們實(shí)現(xiàn)的大部分動(dòng)作類(lèi)中的業(yè)務(wù)邏輯。因此,讓我們創(chuàng)建一個(gè)Java文件HelloWorldAction.java Java Resources > src 在下面給出的內(nèi)容包名 com.yiibai.struts2 。

Action類(lèi)響應(yīng)用戶(hù)操作,當(dāng)用戶(hù)點(diǎn)擊一個(gè)URL。 Action類(lèi)中的方法中的一個(gè)或多個(gè)被執(zhí)行并返回一個(gè)字符串結(jié)果。基于結(jié)果的值,一個(gè)特定的JSP頁(yè)面的呈現(xiàn)方式。

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;
 }
}

這是一個(gè)非常簡(jiǎn)單的類(lèi),一個(gè)名為“name”屬性。我們有標(biāo)準(zhǔn)的“name”屬性的getter和setter方法​​,并返回字符串“success”的執(zhí)行方法。

Struts2框架將創(chuàng)建一個(gè)對(duì)象HelloWorldAction類(lèi)并調(diào)用執(zhí)行方法在響應(yīng)用戶(hù)的動(dòng)作。把業(yè)務(wù)邏輯里面的execute方法,最后返回的字符串常量。簡(jiǎn)單地說(shuō)為每個(gè)網(wǎng)址,必須執(zhí)行一個(gè)動(dòng)作類(lèi),要么就可以直接使用這個(gè)類(lèi)的名稱(chēng)作為操作名,也可以使用struts.xml文件如下所示映射到一些其他的名字。

創(chuàng)建視圖
我們需要一個(gè)JSP提交最后的消息,這個(gè)頁(yè)面會(huì)被稱(chēng)為Struts2框架一個(gè)預(yù)定義的動(dòng)作時(shí),會(huì)發(fā)生這種映射將被定義在struts.xml文件。因此,讓我們一起創(chuàng)造在Eclipse項(xiàng)目在WebContent文件夾下面的jsp文件helloWorld.jsp。要做到這一點(diǎn),右鍵單擊WebContent文件夾在項(xiàng)目資源管理器,選擇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容器,這個(gè)頁(yè)面將使用Struts 2的標(biāo)簽,這些標(biāo)簽將之前由s。 s:property標(biāo)簽顯示動(dòng)作類(lèi)屬性"name> HelloWorldAction類(lèi)的getName()方法返回的值。

創(chuàng)建主頁(yè):
我們還需要在WebContent文件夾中創(chuàng)建的index.jsp。該文件將作為初始動(dòng)作URL,用戶(hù)可以在其中點(diǎn)擊告訴Struts 2框架調(diào)用 HelloWorldAction類(lèi)定義的方法呈現(xiàn) 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://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hello World</title>
</head>
<body>
 <h1>Hello World From Struts2</h1>
 <form action="hello">
  <label for="name">Please enter your name</label><br/>
  <input type="text" name="name"/>
  <input type="submit" value="Say Hello"/>
 </form>
</body>
</html>

Hello 動(dòng)作定義在上面的視圖文件將被映射到HelloWorldAction類(lèi)和其執(zhí)行方法使用struts.xml文件。當(dāng)用戶(hù)點(diǎn)擊“提交”按鈕,將導(dǎo)致Struts2框架運(yùn)行的執(zhí)行方法定義的在其中,HelloWorldAction類(lèi)根據(jù)返回值的方法,將相應(yīng)的視圖選擇和渲染作為響應(yīng)。

配置文件
我們需要一個(gè)映射,以配合網(wǎng)址,HelloWorldAction類(lèi)(模型),和的helloWorld.jsp的(視圖)。映射講述了Struts 2框架類(lèi)將響應(yīng)用戶(hù)的操作(URL),這個(gè)類(lèi)的方法將被執(zhí)行,查看渲染基于字符串結(jié)果,該方法返回。

因此,讓我們創(chuàng)建一個(gè)名為struts.xml中。由于Struts2 要求struts.xml中存在類(lèi)“文件夾中。因此,創(chuàng)建struts.xml文件的WebContent/ WEB-INF/classes文件夾下。 Eclipse不創(chuàng)建“classes”文件夾,所以需要自己做。要做到這一點(diǎn),在項(xiàng)目資源管理器的WEB-INF文件夾上點(diǎn)擊右鍵并選擇New > Folder。struts.xml中應(yīng)該像這樣:

<?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>
<constant name="struts.devMode" value="true" />
 <package name="helloworld" extends="struts-default">
  
  <action name="hello" 
   class="com.yiibai.struts2.HelloWorldAction" 
   method="execute">
   <result name="success">/HelloWorld.jsp</result>
  </action>
 </package>
</struts>

上面的配置文件的幾句話(huà)。在這里,我們?cè)O(shè)置為 true常量struts.devMode,因?yàn)槲覀冋诔绦蜷_(kāi)發(fā)環(huán)境,我們需要看到一些有用的日志消息。然后,我們定義了一個(gè)名為HelloWorld 包。創(chuàng)建一個(gè)包是有用的,當(dāng)想一起進(jìn)行分組動(dòng)作。在我們的例子中,我們將我們的行動(dòng)命名為“hello”,這是相應(yīng)的URL /hello.action 和備份HelloWorldAction.class。執(zhí)行HelloWorldAction.class方法是運(yùn)行時(shí)URL /hello.action 調(diào)用的方法。如果執(zhí)行方法的結(jié)果返回“success”,然后我們把用戶(hù)到 helloWorld.jsp。

下一步是創(chuàng)建一個(gè)web.xml文件,這是一個(gè)Struts2的任何請(qǐng)求的入口點(diǎn)。Struts2應(yīng)用程序的入口點(diǎn),將是一個(gè)部署描述符(web.xml)中定義的過(guò)濾器。因此,我們將定義在web.xml中條目oforg.apache.struts2.dispatcher.FilterDispatcher類(lèi)。 web.xml文件中需要?jiǎng)?chuàng)建的WEB-INF文件夾下的WebContent下。已經(jīng)建立的Eclipse的web.xml文件時(shí)為創(chuàng)建項(xiàng)目。所以,讓我們只需要修改如下:

<?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.FilterDispatcher
  </filter-class>
 </filter>

 <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
</web-app>

我們已經(jīng)指定index.jsp的歡迎文件。然后,我們已經(jīng)配置Struts2的過(guò)濾器上運(yùn)行的所有URL(即任何URL匹配模式/ *)

啟用詳細(xì)日志:
可以啟用完整的日志記錄功能,而Struts 2的WEB-INF/classes下文件夾創(chuàng)建logging.properties文件。保持在屬性文件中的以下兩行:

 

org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = 
        java.util.logging.ConsoleHandler

默認(rèn)logging.properties指定ConsoleHandler的路由記錄到stdout,也是一個(gè)文件處理器。處理程序的日志級(jí)別閾值可以設(shè)置使用 SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST 或 ALL.

就是這樣。我們已經(jīng)準(zhǔn)備好使用Struts 2框架來(lái)運(yùn)行我們的Hello World應(yīng)用程序。

執(zhí)行應(yīng)用程序
右鍵點(diǎn)擊項(xiàng)目名稱(chēng),并單擊 Export > WAR File文件創(chuàng)建一個(gè)WAR文件。然后部署在Tomcat 的 webapps目錄下這個(gè)WAR。最后,啟動(dòng)Tomcat 服務(wù)器和嘗試訪(fǎng)問(wèn)URL http://localhost:8080/HelloWorldStruts2/index.jsp。這會(huì)給出以下畫(huà)面:

20151126150422009.jpg (560×288)

輸入一個(gè)值“Struts2”,并提交頁(yè)面。應(yīng)該看到頁(yè)面如下:

20151126150006982.jpg (559×248)

注意,可以定義索引struts.xml文件中的動(dòng)作,在這種情況下,可以調(diào)用索引頁(yè)http://localhost:8080/HelloWorldStruts2/index.action。下面檢查如何定義指數(shù)作為一個(gè)動(dòng)作:

<?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>
<constant name="struts.devMode" value="true" />
 <package name="helloworld" extends="struts-default">

  <action name="index">
   <result >/index.jsp</result>
  </action>

  <action name="hello" 
   class="com.yiibai.struts2.HelloWorldAction" 
   method="execute">
   <result name="success">/HelloWorld.jsp</result>
  </action>

 </package>
</struts>

一個(gè)實(shí)例演示struts:學(xué)生學(xué)籍查詢(xún)(模糊查詢(xún))

需求分析:查詢(xún)學(xué)生學(xué)籍,要涉及到數(shù)據(jù)庫(kù)的操作,要涉及到頁(yè)面的表單操作。
輸入學(xué)生名字,點(diǎn)擊模糊查詢(xún)。會(huì)返回查詢(xún)結(jié)果。
這里目的只是顯示struts的知識(shí)點(diǎn)。頁(yè)面操作等詳細(xì)細(xì)節(jié)不做過(guò)多要求。
在以上的基礎(chǔ)上,在temp包下新建QueryForm.java和QueryAction.java 在src下新建兩個(gè)包,一個(gè)是bean文件的,一個(gè)操作數(shù)據(jù)庫(kù)的,分別是com.bean和com.dao。com.bean下新建StudentBean.java文件com.dao下新建StudentDao.java文件
WebRoot新建queryform.jsp文件和result.jsp文件index.jsp可以做導(dǎo)航頁(yè)面(新建工程時(shí)既有)。
 
各個(gè)文件的內(nèi)容如下:
StudentBean.java文件:

package com.bean;
 
//封裝一個(gè)學(xué)生的資料
public class StudentBean {
 
private String stuId;
private String stuName;
private String stuSex;
private String stuBir;
private String stuAdd;
 
public String getStuId() {
return stuId;
}
 
public void setStuId(String stuId) {
this.stuId = stuId;
}
 
public String getStuName() {
return stuName;
}
 
public void setStuName(String stuName) {
this.stuName = stuName;
}
 
public String getStuSex() {
return stuSex;
}
 
public void setStuSex(String stuSex) {
this.stuSex = stuSex;
}
 
public String getStuBir() {
return stuBir;
}
 
public void setStuBir(String stuBir) {
this.stuBir = stuBir;
}
 
public String getStuAdd() {
return stuAdd;
}
 
public void setStuAdd(String stuAdd) {
this.stuAdd = stuAdd;
}
 
}
StudentDao.java文件:
package com.dao;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
 
import com.bean.StudentBean;
 
public class StudentDao {
 
private Connection conn = null;
 
public void initConnection() {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager
.getConnection("jdbc:sqlserver://localhost:1433;"
+ " DatabaseName=學(xué)生學(xué)籍信息", "sa", "sa");
} catch (Exception e) {
 
}
}
 
public ArrayList queryStuByName(String sname) {
ArrayList stus = new ArrayList();
 
String sql = "select 學(xué)號(hào),姓名,性別,出生年月," + "家庭住址 from 學(xué)籍表 where 姓名 like '%"
+ sname + "%'";
//System.out.println("StudentDao.java中queryStuByName函數(shù)sname="+sname);
try {
this.initConnection();
ResultSet rs = conn.createStatement().executeQuery(sql);
 
while (rs.next()) {
StudentBean stu = new StudentBean();
stu.setStuId(rs.getString("學(xué)號(hào)"));
stu.setStuName(rs.getString("姓名"));
stu.setStuSex(rs.getString("性別"));
stu.setStuBir(rs.getString("出生年月"));
stu.setStuAdd(rs.getString("家庭住址"));
stus.add(stu);
}
 
} catch (SQLException e) {
e.printStackTrace();
} finally {
this.closeConnection();
}
 
return stus;
}
 
public void closeConnection() {
try {
 
if (conn != null) {
conn.close();
conn = null;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

index.jsp文件:

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <base href="<%=basePath%>">
 
 <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0"> 
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
 </head>
 
 <body>
 This is my JSP page. <br>
 <a href="queryform.jsp">學(xué)生學(xué)籍查詢(xún)</a>
 </body>
</html>

 
queryform.jsp文件:

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <base href="<%=basePath%>">
 
 <title>My JSP 'queryform.jsp' starting page</title>
 
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0"> 
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
 
 </head>
 
 <body>
  查詢(xún)表單 <br>
  <form action="/Project02/query.do" method="post">
  請(qǐng)您輸入學(xué)生姓名:<input name="sname">
  <input type="submit" value="模糊查詢(xún)">
  </form>
 </body>
</html>

 
result.jsp文件:

<%@page import="com.bean.StudentBean"%>
<%@page import="com.dao.StudentDao"%>
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
 
<title>My JSP 'queryform.jsp' starting page</title>
 
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
 
</head>
 
<body> 

返回結(jié)果頁(yè)面  

<br>
<%ArrayList stus =(ArrayList)request.getAttribute("stus"); %>
<table>
<tr>
<td>
學(xué)號(hào)
</td>
<td>
姓名
</td>
<td>
性別 
</td>
<td>
出生年月
</td>
<td>
家庭住址
</td>
</tr>
 
<%
for(int i=0;i<stus.size();i++){
StudentBean stu=(StudentBean)stus.get(i);
%>
<tr>
<td>
<%=stu.getStuId() %> 
</td>
<td>
<%=stu.getStuName() %> 
</td>
<td>
<%=stu.getStuSex() %> 
</td>
<td>
<%=stu.getStuBir() %> 
</td>
<td>
<%=stu.getStuAdd() %> 
</td>
</tr>
<%} %>
</table>
</body>
</html>

 
QueryForm.jsp文件:

package project02;
 
import org.apache.struts.action.ActionForm;
 
//這是ActionForm為了容納表單的值
//規(guī)范:
//1-必須繼承org.apache.struts.action.ActionForm
//2-必須編寫(xiě)和表單元素重名的元素屬性
//3-必須在Struts配置文件中注冊(cè)
@SuppressWarnings("serial")
public class QueryForm extends ActionForm{
 
public QueryForm(){
System.out.println("QueryForm.java構(gòu)造函數(shù)運(yùn)行");
}
private String sname;
 
public String getSname() {
System.out.println("QueryForm.java中g(shù)etSname函數(shù)運(yùn)行");
return sname;
}
 
public void setSname(String sname) {
this.sname = sname;
System.out.println("QueryForm.java中setSname函數(shù)運(yùn)行");
}
}
 
queryAction.java文件:
package project02;
 
import java.util.ArrayList;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
 
import com.dao.StudentDao;
 
//QueryAction負(fù)責(zé)接收ActionForm的數(shù)據(jù),然后進(jìn)行處理
//規(guī)則:
//1-必須繼承org.apache.struts.action.Action
//2-重寫(xiě)excute方法業(yè)務(wù)邏輯
//3-將這個(gè)類(lèi)在配置文件中注冊(cè)
public class QueryAction extends Action{
 
public QueryAction(){
System.out.println("QueryAction.java構(gòu)造函數(shù)運(yùn)行");
}
 
 
@Override
public 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函數(shù)運(yùn)行");
// 跳轉(zhuǎn)
ActionForward af=new ActionForward("/result.jsp");
//設(shè)置了配置文件可以用以下方式跳轉(zhuǎn)
// ActionForward af = mapping.findForward("RESULT");
//以上方式出現(xiàn)異常警告:警告: Unable to find 'RESULT' forward.
return af;
}
}

 
編寫(xiě)了以上的文件還未能實(shí)現(xiàn)struts的功能,要對(duì)各個(gè)文件之間的關(guān)系在struts-config.xml文件進(jìn)行配置。
配置如下:

<?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 />
 
 <!-- 在此注冊(cè)ActionForm --> 
 <form-beans>
 <!-- name:名稱(chēng) type:類(lèi)的路徑 -->
 <form-bean name="queryForm" type="project02.QueryForm"></form-bean>
 </form-beans>
 
 <global-exceptions />
 <!-- 設(shè)置URL的邏輯名稱(chēng) 全局性的,所以的Action都可以識(shí)別到-->
 <global-forwards>
 <forward name="RESULT" path="/result.jsp"></forward>
 </global-forwards>
 
 <!-- 這里注冊(cè)Action -->
 <action-mappings>
 <!-- name:Actionform的名稱(chēng) type:類(lèi)的路徑 path:客戶(hù)端提交給服務(wù)器臨時(shí)指定的路徑 -->
 <action name="queryForm" path="/query" type="project02.QueryAction"></action>
 </action-mappings>
 
 <message-resources parameter="project02.ApplicationResources" />
</struts-config>

 
最后,對(duì)工程文件進(jìn)行發(fā)布,啟動(dòng)tomcat,用瀏覽器測(cè)試。
 
 
現(xiàn)在,來(lái)梳理清楚。根據(jù)需求建立功能。根據(jù)要求建立form和action文件。最后對(duì)struts-config.xml文件進(jìn)行配置。
 
測(cè)試操作步驟:
1-進(jìn)入index.jsp導(dǎo)航頁(yè)面,點(diǎn)擊學(xué)生學(xué)籍查詢(xún)進(jìn)入了queryform.jsp頁(yè)面
2-進(jìn)入了queryform.jsp頁(yè)面,在文本框輸入學(xué)生名中的一個(gè)或兩個(gè)字進(jìn)行模糊查詢(xún)。點(diǎn)擊模糊查詢(xún)。
<form action="/Project02/query.do" method="post">
     請(qǐng)您輸入學(xué)生姓名:<input name="sname">
<input type="submit" value="模糊查詢(xún)">
</form>
Action:指定了action要執(zhí)行的路徑 method:提交的方式--post不顯示信息,get顯示信息
3-進(jìn)入了/Project02/query.do  到了QueryAction.java執(zhí)行。這里為什么是到QueryAction.java文件下執(zhí)行的呢?

 <!-- 在此注冊(cè)ActionForm --> 
 <form-beans>
 <!-- name:名稱(chēng) type:類(lèi)的路徑 -->
 <form-bean name="queryForm" type="project02.QueryForm"></form-bean>
 </form-beans>
 
 <!-- 這里注冊(cè)Action -->
 <action-mappings>
 <!-- name:Actionform的名稱(chēng) type:類(lèi)的路徑 path:客戶(hù)端提交給服務(wù)器臨時(shí)指定的路徑 -->
 <action name="queryForm" path="/query" type="project02.QueryAction"></action>
 </action-mappings>

因?yàn)榕渲梦募呀?jīng)完成了配置。注冊(cè)Action中的path=”/query”就是query.do只是沒(méi)有了.do后綴。這里已經(jīng)指定了type類(lèi)的路徑為:project02.QueryAction 所以執(zhí)行QueryAction.java文件。
4-接下來(lái)的就是java文件了,大都能看懂。

相關(guān)文章

  • Java判斷變量是否為空問(wèn)題的方法總結(jié)

    Java判斷變量是否為空問(wèn)題的方法總結(jié)

    項(xiàng)目中經(jīng)常遇到對(duì)象判空,下面這篇文章主要給大家介紹了關(guān)于Java判斷變量是否為空問(wèn)題的方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 基于java開(kāi)發(fā)之系統(tǒng)托盤(pán)的應(yīng)用

    基于java開(kāi)發(fā)之系統(tǒng)托盤(pán)的應(yīng)用

    本篇文章介紹了,基于java開(kāi)發(fā)之系統(tǒng)托盤(pán)的應(yīng)用。需要的朋友參考下
    2013-05-05
  • Java使用ArrayList實(shí)現(xiàn)撲克牌的示例代碼

    Java使用ArrayList實(shí)現(xiàn)撲克牌的示例代碼

    學(xué)習(xí)了關(guān)于集合類(lèi)的知識(shí),我們可以做一個(gè)小項(xiàng)目來(lái)加深對(duì)集合類(lèi)知識(shí)的學(xué)習(xí)!本文就來(lái)利用ArrayList實(shí)現(xiàn)撲克牌發(fā)牌洗牌效果,需要的可以參考一下
    2022-10-10
  • 解決SpringCloud?Feign異步調(diào)用傳參問(wèn)題

    解決SpringCloud?Feign異步調(diào)用傳參問(wèn)題

    這篇文章主要介紹了SpringCloud?Feign異步調(diào)用傳參問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • Java實(shí)現(xiàn)二叉樹(shù)的示例代碼(遞歸&迭代)

    Java實(shí)現(xiàn)二叉樹(shù)的示例代碼(遞歸&迭代)

    二叉樹(shù)(Binary?tree)是樹(shù)形結(jié)構(gòu)的一個(gè)重要類(lèi)型。本文將利用Java語(yǔ)言實(shí)現(xiàn)二叉樹(shù),文中的示例代碼講解詳細(xì),需要的同學(xué)可以參考一下
    2022-03-03
  • 使用spring stream發(fā)送消息代碼實(shí)例

    使用spring stream發(fā)送消息代碼實(shí)例

    這篇文章主要介紹了使用spring stream發(fā)送消息代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java多線(xiàn)程案例之定時(shí)器詳解

    Java多線(xiàn)程案例之定時(shí)器詳解

    定時(shí)器是一種實(shí)際開(kāi)發(fā)中非常常用的組件,?類(lèi)似于一個(gè)?“鬧鐘”,?達(dá)到一個(gè)設(shè)定的時(shí)間之后,?就執(zhí)行某個(gè)指定好的代碼。本文主要來(lái)和大家聊聊定時(shí)器的原理與使用,需要的可以參考一下
    2023-01-01
  • 利用Java+Selenium+OpenCV模擬實(shí)現(xiàn)網(wǎng)頁(yè)滑動(dòng)驗(yàn)證

    利用Java+Selenium+OpenCV模擬實(shí)現(xiàn)網(wǎng)頁(yè)滑動(dòng)驗(yàn)證

    目前很多網(wǎng)頁(yè)都有滑動(dòng)驗(yàn)證,目的就是防止不良爬蟲(chóng)扒他們網(wǎng)站的數(shù)據(jù)。本文將介紹通過(guò)Java Selenium OpenCV解決網(wǎng)頁(yè)滑塊驗(yàn)證,需要的可以參考一下
    2022-01-01
  • Java中transient關(guān)鍵字的詳細(xì)總結(jié)

    Java中transient關(guān)鍵字的詳細(xì)總結(jié)

    本文要介紹的是Java中的transient關(guān)鍵字,transient是短暫的意思。對(duì)于transient 修飾的成員變量,在類(lèi)的實(shí)例對(duì)象的序列化處理過(guò)程中會(huì)被忽略,感興趣的朋友可以參考閱讀
    2023-04-04
  • 在Java Web項(xiàng)目中添加定時(shí)任務(wù)的方法

    在Java Web項(xiàng)目中添加定時(shí)任務(wù)的方法

    在Java Web程序中加入定時(shí)任務(wù),這里介紹兩種方式使用監(jiān)聽(tīng)器注入,使用Spring注解@Scheduled注入,需要的朋友可以參考下
    2018-01-01

最新評(píng)論