这两天从对Struts一窍不通到成功运行HelloWorld,在SSH这条路上迈出了第一步。

  下面我把我的第一个Struts程序放上来:

  一、新建web project,配置文件等准备工作

  1. 新建一个Web Project项目,这个不用多说了把。

  2. 在WebRoot -> WEB-INF -> lib下导入jar包

  

  3. 配置 web.xml、struts.xml、logging.properties文件

  (1) 在WEBRoot -> WEB-INF 下新建web.xml,代码如下:  

  

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>TestStruts2</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>

web.xml

  (2) 在 src 下新建struts.xml,代码如下:

  

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<constant name="struts.devMode" value="true"></constant>
<package name="helloworld" namespace="/helloworld" extends="struts-default">
<global-allowed-methods>regex:.*</global-allowed-methods>
<action name="hello" class="com.mike.struts.HelloWorldAction" method="execute">
<result name="success">/pages/HelloWorld.jsp</result>
</action>
</package>
</struts>

struts.xml

  (3) 在 src 下新建logging.properties,代码如下:

  

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

logging.properties

  二、 建立一个Action

  

  代码如下:

  

 package com.mike.struts;

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

HelloWorld.java

  三、jsp界面代码

  1. index.jsp

  

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
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">
</head> <body>
<form action="helloworld/hello">
<label for="name">Please enter your name:</label><br>
<input type="text" name="name"/>
<input type="submit" value="Say Hello!"/>
</form>
</body>
</html>

index.jsp

  2. 在 WebRoot -> WEB-INF 下,新建一个 pages 文件夹用来存放其它jsp文件,

   在 pages 文件夹下,新建HelloWorld,jsp,代码如下:

  

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
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 'HelloWorld.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">
</head> <body>
Hello World!
<s:property value="name"/>
</body>
</html>

HelloWorld.jsp

  四、整体预览

  

  五、运行结果

  1. 打开浏览器,输入url,http://localhost:8080/TestStruts2。

  

  2. 输入内容

  

  3. 点击提交

  

  六、在编写过程中遇到的和需要注意的问题

  1. Struts版本为2.5。

  2. web.xml的所在位置要注意一下,博主最开始建错地方了。

  3. 注意jsp页面上方别忘引入Struts2标签库 <%@ taglib prefix="s" uri="/struts-tags"%>。

  4. 对于Struts2.xml配置namespace的详解(引荐其它博主):http://www.cnblogs.com/hongten/archive/2011/07/29/2121450.html

  5. 编写完成后,运行出错。

  

  原因是 lib 中的 jar包有一个struts2-rest-plugin-2.5.10.1.jar,把这个jar包删掉就好了。

  

  七、心得体会

  在学习Struts2的过程,坐我旁边的同学给予了我很大的帮助,很感激。万事开头难,下定决定很重要,坚持去做更重要!落下多少,就要更加努力多少补回来。希望自己可以不偷懒不懈怠的坚持编程之路。

Stuts2学习——HelloWorld的更多相关文章

  1. Ext学习-HelloWorld以及基础环境搭建

    1.目的    在eclipse中搭建EXTJS的基础环境,学习如何按照从官方下载的代码中搭建新的Extjs工程 2.主要包含内容:   1.ExtJS文件下载以及目录说明   2.ExtJS开发环境 ...

  2. SpringBoot学习helloworld

    这几天开始学习springBoot记录一下(Hello World) pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0 ...

  3. [java]基础学习HELLOWORLD系列

    (一)手把手教你做JDK环境变量配置 步骤 1 : 首先看配置成功后的效果 点WIN键->运行(或者使用win+r) 输入cmd命令 输入java -version 注: -version是小写 ...

  4. Android Studio 学习 - HelloWorld

    今天是学习Android Studio的第2天,加油! 1. 首先要记录下使用Android Studio的一个代码自动完成的功能.平常基本上用Delphi,乍一换工具,各种不习惯,或者说不熟悉.按照 ...

  5. android-----JNI学习 helloworld

    (1)新建android工程 (2)添加NDK路径 (3)添加本地支持 给本地库起名 此时工程目录下会自动生成jni文件夹 此时Makefile也自动生成 LOCAL_PATH := $(call m ...

  6. springboot入门学习-helloworld实例

    今天学习了springboot,发现使用springboot创建项目确实非常方便,创建第一个springboot项目之前先看一下下面两个问题. 一.什么是springboot? Spring Boot ...

  7. Java基础学习-HelloWorld案例的编写和运行

    一.HelloWorld案例的流程:         第一步:编写一个.java的源文件.通过Windows自带的记事本文件就可以完成.         第二步:将.java的源文件通过编译器编译生成 ...

  8. Spring学习--HelloWorld

    Spring: Spring 是一个开源框架. Spring 是为简化企业级应用开发而生,使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能. Spring 是一 ...

  9. Java基础学习-HelloWorld案例常见问题

    注意:控制台曾经写过的命令,我们可以通过上下箭头进行选择,不需要重新进行输入,以节省时间,提高效率.   1.单词拼写问题     -class    不要写成Class     -String    ...

随机推荐

  1. HttpClient-01基本概念

    Http 协议应该是互联网中最重要的协议.持续增长的 web 服务.可联网的家用电器等都在继承并拓 展着 Http 协议,向着浏览器之外的方向发展. 虽然 jdk 中的 java.net 包中提供了一 ...

  2. TQ210--UBOOT移植笔记--添加自己的单板【学习笔记】

    在uboot的源码的根目录下的readme中有介绍如何在uboot中添加自己的单板: 一.在boards.cfg中添加自己的单板的信息,可以模仿smdkc100去添加自己的单板的信息 二.复制单板的配 ...

  3. [Codeforces 1058E] Vasya and Good Sequences

    [题目链接] https://codeforces.com/contest/1058/problem/E [算法] 显然 , 我们只需考虑序列中每个数的二进制表示下1的个数即可. 不妨令Ai表示第i个 ...

  4. nginx开发(四)调用ffmpeg,搭建rtmp直播流。

    1: 修改conf文件,配置rtmp直播 打开usr/local/nginx/conf/nginx.conf,添加红色内容: rtmp {#rtmp点播配置    server {        li ...

  5. Java中的经典算法之冒泡排序

    原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将 ...

  6. C#面向过程之冒泡排序

    //定义一个数组,准备冒泡排序 ,,-,,,,-,}; //定义一个中间变量 ; //n个数字比较需要进行n-1次比较 ; j < arr.Length - - i; j++) { //每一趟的 ...

  7. bzoj 1578: [Usaco2009 Feb]Stock Market 股票市场【背包】

    参考:https://blog.csdn.net/mars_ch/article/details/53011234 我背包真是好不熟练啊-- 第一天买了第三天卖相当于第一天买了第二天卖第二天再买第三天 ...

  8. 一个简陋的个人小项目,也是个人第一个真正意义上的独立项目——Graph

    由来 我最早接触到图这个概念是在大二的离散数学当中图论相关的内容,当时是以著名的哥尼斯堡七桥问题引出图论的概念,现在依然记忆犹新(不过只是记得这个名字,具体的解题思路我重新温习了一下才想起来),当时也 ...

  9. mybatis时间查询小技巧

     网上大多数使用mybatis查询的时候都是把时间转换成Date使用的,其实这里时可以直接使用String的,比如 <if test="startTime != null and st ...

  10. python自动化测试学习笔记-8单元测试unittest模块

    官方参考文档:http://docs.python.org/2.7/library/unittest.html unittest是一个python版本的junit,junit是java中的单元测试框架 ...