实现目标

地址栏输入http://localhost:88/Struts2HelloWorld/helloworld.jsp

输入用户名,交由http://localhost:88/Struts2HelloWorld/hello.action 处理

返回到helloworld.jsp视图层,并显示刚才输入的值。

步骤

1、 新建工程

MyElipse下新建一个叫struts2hello的web工程;

2、 导入Jar包

将struts 2的jar包copy到WEB-INF/lib/目录下;

或者在工程的.classpath文件中加入:

<classpathentry kind="con" path="melibrary.com.genuitec.eclipse.struts2.MYECLIPSE_STRUTS21_CORE"/>

并刷新工程。

3、配置Filter

修改web.xml文件,配置Struts 2的核心Filter;

	<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>/*.action</url-pattern>
</filter-mapping>

4、配置struts.xml

在src 目录下增加struts.xml配置文件;

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<include file="struts-default.xml" />
<constant name="struts.i18n.encoding" value="utf-8" />
<package name="default" extends="struts-default">
<global-results>
<result name="login">login.jsp</result>
<result name="index">index.jsp</result>
</global-results>
<action name="UserAction" class="com.app.action.UserAction" />
</package>
</struts>

5、 实现控制器

package com.app.hello;

import com.opensymphony.xwork2.Action;
//POJO(Plain Object Java Object 低侵入式)
public class UserWorld implements Action{
//获取页面上的控件,只需要要在这里注入对应的属性,提供setter和getter方法即可。(名称要完全一样)
private User user;//action类德每个属性对应于页面中的某个控件属性
private UserDAO userDAO = new UserDAO(); // action默认执行方法
public String execute() {
if(!userDAO.login(user.getUsername(), user.getPassword())) {
ActionContext ac = ActionContext.getContext();
ac.put("msg", "登陆信息有误"); //request.setAttribute("", );
} else {
return "index"; //转发到逻辑视图对应的页面
}
return "login";
} public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
}
// http://localhost:8080/Struts2HelloWorld/hello!aliasAction.action
public String aliasAction() {
name = "";
return "success";
} }

6、 修改struts.xml文件

添加Action的映射和逻辑视图转向,在<struts></struts>中添加如下内容;

    <package name="default" extends="struts-default">
<action name="hello" class="com.app.hello.HelloWorld">
<result name="success">/helloworld.jsp</result>
</action>
</package>

7、 添加JSP视图层

取名helloworld.jsp

<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page isELIgnored="false" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Say Hello</title>
</head>
<body>
<h3>Say "Hello" to: </h3>
<s:property value="name"/> ${name}
<s:form action="hello">
Name: <s:textfield name="user.username" />
<s:submit />
</s:form>
</body>
</html>

【Struts2】新建一个Struts2工程,初步体验MVC的更多相关文章

  1. Intellij IDEA新建一个EJB工程(二)

    从博文:http://www.cnblogs.com/yangyquin/p/5328344.html 中可以知道如何利用Intellij IDEA建立一个EJB Module,还有新建一个测试Mod ...

  2. 新建一个express工程,node app无反应

    1.问题描述 新建一个express工程,node app以后无反应,浏览器输入localhost:3000,显示如下 2.解决方法 在app.js文件中加入如下代码 app.listen(3000, ...

  3. Java Learning 001 新建一个Java工程 HelloWorld程序

    Java Learning 001 新建一个Java工程 HelloWorld程序 Step 1 . 在Eclipse 软件里,点击: File -> New -> Java Projec ...

  4. Proteus 8使用 1新建一个Proteus工程

    新建一个Proteus工程 下一步 创建部分结束,可以看到两部分-->原理图与源代码. 首先按下F7或从“构建”菜单中选择“构建工程” 之后切换到原理图窗口 按下F12或点击窗口最左下角的“运行 ...

  5. idea如何新建一个springmvc 工程

    java 版本 1.8.0_261 idea 版本2020.1 Tomcat 9  maven 3.6 新建工程 File->new->project 默认会下载springframewo ...

  6. zynq学习01 新建一个Helloworld工程

    1,好早买了块FPGA板,zynq 7010 .终极目标是完成相机图像采集及处理.一个Window C++程序猿才开始学FPGA,一个小菜鸟,准备转行. 2,关于这块板,卖家的官方资料学起来没劲.推荐 ...

  7. Android中使用自身携带的Junit新建一个测试工程

    1.新建立一个Android工程 package com.shellway.junit; public class Service { public int divide(int a,int b){ ...

  8. Android问题-打开DelphiXE8与DelphiXE10新建一个空工程提示"out of memory"

    错误信息: [DCC Error] E2597 d:\XE8\Embarcadero\Studio\16.0\PlatformSDKs\android-ndk-r9c\toolchains\arm-l ...

  9. Jenkins(5)- 新建一个job并快速体验完整流程

    如果想从头学起Jenkins的话,可以看看这一系列的文章哦 https://www.cnblogs.com/poloyy/category/1645399.html 新建一个任务(job) 输入job ...

随机推荐

  1. Python进阶之路---1.4python数据类型-数字

    python入门基础 声明:以后python代码未注明情况下,默认使用python3.x版本 1.python代码基础:print     print('hello,python')   1.1pyt ...

  2. (转)Javascript 面向对象编程(一):封装(作者:阮一峰)

    Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类). 那么,如果 ...

  3. 开源项目Material Calendar View 学习记录 (一)

    开源项目Material Calendar View 学习记录 Github: https://github.com/prolificinteractive/material-calendarview ...

  4. Java性能漫谈-数组复制之System.arraycopy

    当我还年幼的时候,我很任性,复制数组也是,写一个for循环,来回倒腾,后来长大了,就发现了System.arraycopy的好处. 为了测试俩者的区别我写了一个简单赋值int[100000]的程序来对 ...

  5. Windows命令行(DOS命令)教程–2 (转载) http://arch.pconline.com.cn//pcedu/rookie/basic/10111/15325_1.html

    二.符号约定 为了便于说明格式,这里我们使用了一些符号约定,它们是通用的: C: 盘符 Path 路径 Filename 文件名 .ext 扩展名 Filespec 文件标识符 [ ] 方括号中的项目 ...

  6. 一致性哈希与java实现

    一致性哈希算法是分布式系统中常用的算法.比如,一个分布式的存储系统,要将数据存储到具体的节点上,如果采用普通的hash方法,将数据映射到具体的节点上,如key%N,key是数据的key,N是机器节点数 ...

  7. 加载gif图过渡效果

    加载gif图片,过渡效果: 调用: - (id)initWithGifView:(UIView *)view { self = [super initWithView:view]; if (self) ...

  8. Mysql学习(慕课学习笔记6)修改数据表(上)

    添加单列 Alter table tb1_name ADD[column] col_name column_definition [first | after col_name] 列名称       ...

  9. 【JAVA编码专题】UNICODE,GBK,UTF-8区别

    简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的,同一个汉字,那三个码值是完全不一样的.如"汉"的uncode值与g ...

  10. ueditor 百度编辑器 自定义图片上传路径和格式化上传文件名

    今天项目中需要自定义图片上传的保存路径,并且不需要按照日期自动创建存储文件夹和文件名,我的ueditor版本是1.3.6.下面记录一下我配置成功的方法,如果有什么不对的地方欢迎指出,共同学习: 1:我 ...