《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的左值的量.右值可以是常量.变量或 ...
随机推荐
- 【python】 [基础] 数据类型,字符串和编码
python笔记,写在前面:python区分大小写1.科学计数法,把10用e代替,1.23x10·9就是 1.23e9 或者 0.00012就是1 ...
- eclipse下package的命名规范
Java的包名都有小写单词组成,类名首字母大写:包的路径符合所开发的 系统模块的 定义,比如生产对生产,物资对物资,基础类对基础类.以便看了包名就明白是哪个模块,从而直接到对应包里找相应的实现. 由于 ...
- 【转】JSP使用上传文件,并生产高清缩略图示例
原文地址:http://blog.csdn.net/yakson/article/details/9875731 前言 刚开始本来只想来测试一下Thumbnails生成缩略图的效果的,顺便来学一下js ...
- ActiveMQ_Topic队列(三)
一.本文章包含的内容 1.列举了ActiveMQ中通过Topic方式发送.消费队列的代码(监听者有两个,分别是topicMessageListener1.topicMessageListener2) ...
- oracle 知识
sqlplus / as sysdba; 使用操作系统登录oracle数据库 conn panie/panie; 使用普通用户连接数据库 --开启归档模式shutdown immediate;s ...
- Android Studio构建系统基础
基础知识 项目创建成功后会自动下载Gradle,这个过程特别慢,建议FQ.下载的Gradle在Windows平台会默认在 C:\Documents and Settings\<用户名>.g ...
- Vim快捷键操作命令
Vim是一个超牛的编辑器,命令功能十分强大 .而且这些命令大都可以进行组合 ,比如,9yy命令表示复制9行内容,9表示要复制的行数,同样100dd表示删除100行,当数字和命令合作的时候,就比单纯的命 ...
- Java反序列化测试
前言:有没有想过,如何将对象进行“加密”后写入磁盘?序列化帮你实现! 1.概念 序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写 ...
- 【BZOJ-4310】跳蚤 后缀数组 + ST表 + 二分
4310: 跳蚤 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 180 Solved: 83[Submit][Status][Discuss] De ...
- uva11426 gcd、欧拉函数
题意:给出N,求所有满足i<j<=N的gcd(i,j)之和 这题去年做过一次... 设f(n)=gcd(1,n)+gcd(2,n)+......+gcd(n-1,n),那么answer=S ...