《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的左值的量.右值可以是常量.变量或 ...
随机推荐
- 十天冲刺---Day1
站立式会议 由于第一天冲刺,所以有些没有昨天完成项和遇到的问题. 站立式会议内容总结: git上Issues内容: 燃尽图(做错了,将每天的燃尽图误以为是每天添加任务然后到一天结束后生成燃尽图(?)) ...
- C#-面向对象的三大特性——继承
继承 注意事项: 继承语法: 类名:父类名 父类也称之为 基类 ,子类也可以成为 xxx的派生类 或 超类. 父类可以有无限个子类,子类只能有一个父类(亲爹),可以有无限个接口(干爹) 子类并不是 ...
- camerc文件播放
下载CamtasiaStudio 5中文版,打开CamtasiaStudio.exe在左边有生成选项,点左边工具框内添加/导入媒体,则选择下面的批量生成.弹出添加文件的菜单点添加文件,加入你要转换的c ...
- ng-学习笔记1
1.ng-model绑定输入域的数据到控制器的属性.修改输入域的值,属性的值也将修改(双向绑定) 2.ng-repeat可用于创建表格,使用 <td>{{ $index + 1 }}< ...
- 【BZOJ-1670】Building the Moat护城河的挖掘 Graham扫描法 + 凸包
1670: [Usaco2006 Oct]Building the Moat护城河的挖掘 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 464 Solv ...
- 【BZOJ-4127】Abs 树链剖分 + 线段树 (有趣的姿势)
4127: Abs Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 381 Solved: 132[Submit][Status][Discuss] ...
- 【BZOJ-2251】外星联络 后缀数组 + 暴力
2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 670 Solved: 392[Submit][ ...
- CVE-2014-0050: Exploit with Boundaries, Loops without Boundaries、Apache Commons FileUpload and Apache Tomcat DoS
catalog . Description . Analysis . POC . Solution 1. Description MultipartStream.java in Apache Comm ...
- List<List<String>>
package list; import java.util.ArrayList; import java.util.List; public class MyList { public static ...
- scala中集合的交集、并集、差集
scala中有一些api设计的很人性化,集合的这几个操作是个代表: 交集: scala> Set(1,2,3) & Set(2,4) // &方法等同于interset方法 sc ...