《Struts2.x权威指南》学习笔记1
第2章 Struts的hello world
在介绍hello world项目前,文中要求下载和安装Struts2,主要是下载lib库和文档,可用于通过命令行进行代码编译。由于公司采用IntelliJ进行java项目开发,我在学习中也想直接利用IntelliJ+Maven,因此不需下载,而是通过在pom.xml中加入struts包的形式,来完成对struts的依赖。
在IntelliJ+Maven+Struts环境新建项目,步骤如下,可参考链接:http://my.oschina.net/u/188924/blog/486614
在idea里搭建maven项目
看着网上大神发的各种博客,然后自己搭建出来一个最简单的maven-strtus2项目,供初学者学习
新建project

下一步 填写groupId、ArtifactId,项目名,finish

2.idea里的jar包管理都是通过pom.xml来实现的,下面就开始配置pom.xml文件,来给项目加上struts2的jar包
很多人会对pom.xml里的依赖配置迷惑,给大家推荐一个网站,里面有各种jar的依赖配置 http://maven.oschina.net/index.html#nexus-search;quick~struts

3.将依赖拷贝到pom.xml里保存,idea会自动下载jar文件到你本地安装的maven配置的库里(这里把jstl的包也添加一下)
注意!我一开始依照struts权威指南,除了struts2-core外,还加了跟spring有关的一些依赖,导致项目一直起不来,这里只要加struts2-core就可以。
另外,在<version>下面加一句
<packaging>war</packaging>

4.开始配置项目的服务器,添加web支持等


将服务器添加上后,在添加web支持
注意!我在添加Web的时候自己无聊把name改成了Webapp,导致tomcat起来了以后不能访问页面!!!所以不要瞎改啊。。。



5.接下来配置web.xml,struts.xml,并添加action包,以及action类,我这就直接贴代码
web.xml
<?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"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 支持动态调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<!-- 设置开发模式 -->
<constant name="struts.devMode" value="true"/>
<package name="front" namespace="/" extends="struts-default">
<action name="user" class="hello.HelloAction">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>
HelloAction.java
package hello;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;
import javax.servlet.http.HttpServletRequest;
/**
* Created by Yang on 14-3-27.
*/
public class HelloAction extends ActionSupport{
HttpServletRequest request = ServletActionContext.getRequest();
public String hello() {
request.setAttribute("hello", "hello world!");
return SUCCESS;
}
}
index.jsp
<%--
Created by IntelliJ IDEA.
User: Yang
Date: 14-3-27
Time: 下午5:16
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
this is a jsp page.
<br> ${hello}
</body>
</html>
下面是项目的目录树:

6.下面配置tomcat服务器

没有配置tomcat的需要先配置一个tomcat,配置方法就不发了,直接发布项目吧




ok,这样项目就配置到对应的服务器了,现在只需要启动服务器等待就可以了

7.在浏览器里输入http://localhost:8080/maven-struts/hello!hello
访问的结果如图:大功告成

《Struts2.x权威指南》学习笔记1的更多相关文章
- 《C++ primer》学习笔记整理
简介 本笔记目前已包含<C++ Primer>中的绝大部分内容,但尚有部分小节有所缺漏,如 19.1.19.2 节的笔记尚未整理,会持续更新. 本项目中的学习笔记是在学完一章内容后,对其要 ...
- C Primer Plus 学习笔记 -- 前六章
记录自己学习C Primer Plus的学习笔记 第一章 C语言高效在于C语言通常是汇编语言才具有的微调控能力设计的一系列内部指令 C不是面向对象编程 编译器把源代码转化成中间代码,链接器把中间代码和 ...
- 《C++ Primer》学习笔记 :命名空间的using声明
最近在学C++,在<C++ Primer>第五版的3.1节中说到使用using声明来使用命名空间中的成员,<C++ Primer>中这样写道: 有了using声明就无须专门的前 ...
- 《C++ Primer》学习笔记:迭代器介绍
<C++Primer>(第五版)中,3.4.1的例题中使用一个名为text的字符串向量存放文本文件中的数据,输出text中的内容,刚开始我这样写: #include <iostrea ...
- 《C++ Primer》学习笔记:3.3.3其他vector操作
<C++ Primer>(第五版)中计算vector对象中的索引这一小节中,举例要求计算各个分数段各有多少个成绩. 代码如下: #include <iostream> #inc ...
- 《C++ Primer》学习笔记:向vector对象添加元素蕴含的编程假定
练习<C++ Primer>中的3.14节时,当敲入: #include <iostream> #include <string> using namespace ...
- 《C++ Primer》学习笔记【第三部分 类设计者的工具】
第13章 拷贝控制 使用default:=defult只能修饰默认构造函数或拷贝控制成员,显式地要去编译器生成合成的版本. 使用delete:=delete通知编译器不希望定义这些成员,禁止试图使用它 ...
- 《C++ Primer》学习笔记【第二部分 C++标准库】
第8章 IO库 IO对象不能复制,即1.IO对象不能存储在vector或其他容器中 2.如果需要传递或返回IO对象,必须传递或返回指向该对象的指针或引用. 一般情况下,如果要传递IO对象以便对它进 ...
- 《C++ Primer》学习笔记【第一部分 C++基础】
第2章 整型的赋值:当我们试着把一个超出其范围的值赋给一个指定类型的对象时,结果如何?答案取决于类型是signed还是unsigned的.对于unsigned,编译器会将该值对unsigned类型的 ...
- C Primer Plus学习笔记(二)
1. C的左值用是指用于标志一个特定的数据对象的名字或表达式.“数据对象”是泛指数据存储的术语. 赋值运算符的左边应该是以个可以修改的左值. 右值是指可赋给可修gia的左值的量.右值可以是常量.变量或 ...
随机推荐
- 使用D3制作图表(1)--画布绘制
使用D3绘制图表可以使数据更加直观. 使用D3前要先加载D3库,这里有两种方式,一种是在线加载<script type="text/javascript" src=" ...
- java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 错误
你的ArrayList 是一个没有值的对象(不是null),也就是里面什么对象也没有存(即:arrayList.size()==0).但是,你有取它下标为0值的操作.所以,数组越界了!!比如array ...
- maven2打包不同jdk版本的包
通常在一些特别情况下,我们需要为单独某一个构件打包多个不同jdk版本的包,用来支持不同的jdk,基于maven我们就可以很方便的做到这点. 1.在项目的pom文件中加入如下配置 <project ...
- ASP.NET MVC 4 异步加载控制器
ASP.NET 4 Developer preview中的异步操纵器 在放弃了对.NET 3的支持之后, ASP.NET MVC 4 彻底拥抱了Task类库, 你不需求再蛋疼的给每个Action写两个 ...
- R语言之RCurl实现文件批量下载
前言: RCurl工具包的作者是由Duncan Temple Lang现任加州大学 U.C. Davis分校副教授.他曾致力于借助统计整合进行信息技术的探索.使用者通过RCurl可以轻易访问网页,进行 ...
- here 文档
#!/usr/bin/perl -w use strict; my $someURL = 'http://www.perl.com'; my $html = <<EOF; # EOF 可以 ...
- u Calculate e阶乘相加求和问题
问题: (n < 10)写个算法 回答: 方法一: #include<stdio.h> int main() { int f[10]={1,1,2,6,24,120,7 ...
- [vijos1907][NOIP2014]飞扬的小鸟
Description 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败. ...
- wpf数据绑定
前段: <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.c ...
- poj3502 恶心题
巨恶心的一个题::>_<:: 题意:给出航班航线和大陆,找航线上距离大陆最远的某一点距离大陆边缘的距离 标准算法:二分答案,从大陆边界向外扩展,扩展出来的面积会覆盖航线.找出航线上最后被覆 ...