实现目标

地址栏输入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文件中加入:

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

并刷新工程。

3、配置Filter

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

  1. <filter>
  2. <filter-name>struts2</filter-name>
  3. <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  4. </filter>
  5. <filter-mapping>
  6. <filter-name>struts2</filter-name>
  7. <url-pattern>/*.action</url-pattern>
  8. </filter-mapping>

4、配置struts.xml

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

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

5、 实现控制器

  1. package com.app.hello;
  2.  
  3. import com.opensymphony.xwork2.Action;
  4. //POJO(Plain Object Java Object 低侵入式)
  5. public class UserWorld implements Action{
  6. //获取页面上的控件,只需要要在这里注入对应的属性,提供setter和getter方法即可。(名称要完全一样)
  7. private User user;//action类德每个属性对应于页面中的某个控件属性
  8. private UserDAO userDAO = new UserDAO();
  9.  
  10. // action默认执行方法
  11. public String execute() {
  12. if(!userDAO.login(user.getUsername(), user.getPassword())) {
  13. ActionContext ac = ActionContext.getContext();
  14. ac.put("msg", "登陆信息有误"); //request.setAttribute("", );
  15. } else {
  16. return "index"; //转发到逻辑视图对应的页面
  17. }
  18. return "login";
  19. }
  20.  
  21. public User getUser() {
  22. return user;
  23. }
  24.  
  25. public void setUser(User user) {
  26. this.user = user;
  27. }
  28. // http://localhost:8080/Struts2HelloWorld/hello!aliasAction.action
  29. public String aliasAction() {
  30. name = "";
  31. return "success";
  32. }
  33.  
  34. }

6、 修改struts.xml文件

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

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

7、 添加JSP视图层

取名helloworld.jsp

  1. <%@ page contentType="text/html; charset=utf-8" %>
  2. <%@ taglib prefix="s" uri="/struts-tags" %>
  3. <%@ page isELIgnored="false" %>
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  8. <title>Say Hello</title>
  9. </head>
  10. <body>
  11. <h3>Say "Hello" to: </h3>
  12. <s:property value="name"/> ${name}
  13. <s:form action="hello">
  14. Name: <s:textfield name="user.username" />
  15. <s:submit />
  16. </s:form>
  17. </body>
  18. </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. 【转】Cocoa中的位与位运算

    转自:http://www.tuicool.com/articles/niEVjy 介绍 位操作是程序设计中对位模式或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常 ...

  2. 理清fineuploader无刷新上传的一些事

    1.fineuploader是一款不依赖与jquery的异步无刷新上传组件,fineuploader采用ajax方式实现对文件上传,返回值都是以json的格式,对后台服务器操作和前端dom对象一些操作 ...

  3. 将excel的.xlsx文件转成数据库文件.db的方法

    1.下载好工具SQLite Expert Professional 3 ,晚上有很多,自行百度. 2.打开.xls文件,将文件另存为.csv文件.说明一下: 可以将xls文件看作是数据库里的一个表.所 ...

  4. 事件监听:诀别Android繁琐的事件注册机制——view.setOnXXXXListener

    本版本为1.0,支持较少,使用不够方便.相关封装逻辑结构已升级至2.0,详情可参见:更完善的安卓事件监听实现 先简单扯两句这几天学习下来对java事件监听机制的一点感触.客观地讲,java的事件监听机 ...

  5. .net 4.0 面向对象编程漫谈基础篇读书笔记

    话说笔者接触.net 已有些年头,做过的项目也有不少,有几百万的,也有几十万的,有C/S的,也有B/S的.感觉几年下来,用过的框架不少,但是.net的精髓一直没有掌握.就像学武之人懂得各种招式,但内功 ...

  6. C#串口扫描

    1.传入serialport 和待显示串口的Commbox private void Search_AddSerialToComboBox(SerialPort MyPort, ComboBox My ...

  7. 纯js实现div内图片自适应大小

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. 解决ligerUI服务器分页Total不起作用的问题

    Js代码:   $('#userTable').ligerGrid({ width:'100%', height:'100%', title:'用户列表', //url:'', dataAction: ...

  9. Java笔记--java一行一行写入或读取数据

    转自 Ruthless java一行一行写入或读取数据 链接:http://www.cnblogs.com/linjiqin/archive/2011/03/23/1992250.html 假如E:/ ...

  10. UIWebView与JavaScript(JS) 回调交互 -备

    很多关于objc 与 js 交互的文章都比较适用于 mac开发,iOS的webview 还是有所不一样, 参考:http://blog.sina.com.cn/s/blog_693de6100102v ...