Struts快速入门

day31

1.相关jar包 Struts2-core-lib(Struts2 的核心jar包)

代理的两种方式

JDK(简单,不稳定)和第三方

javaassist包——动态代理

ognl包——Struts2使用的EL被OGNL替代(表达式语言)

commons-lang是java.lang的增强

xwork是webwork的升级

2.配置web.xml,启动Struts2

  1. <!-- Struts2核心过滤器,专用于过滤所有请求-->
  2. <filter>
  3. <filter-name>struts2</filter-name>
  4. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  5. </filter>
  6. <filter-mapping>
  7. <filter-name>struts2</filter-name>
  8. <url-pattern>/*</url-pattern>
  9. </filter-mapping>

3.写jsp

  1.     <form action="/day31/add.action" method="post">
  2. <table border="2" align="center">
  3. <caption><h3>加法运算(struts2版本)</h3></caption>
  4. <tr>
  5. <th>操作数一</th>
  6. <td><input type="text" name="num1" value="20"/></td>
  7. </tr>
  8. <tr>
  9. <th>操作数二</th>
  10. <td><input type="text" name="num2" value="25"/></td>
  11. </tr>
  12. <tr>
  13. <td colspan="2" align="center">
  14. <input type="submit" value="加法"/>
  15. </td>
  16. </tr>
  17. </table>
  18. </form>
  19. <hr/>
  20. ${requestScope.sum}

4.写action

  1. //类似为Servlet
  2. public class AddAction {
  3. //类似于doXxx(),不管get/post都执行此方法
  4. public String execute() throws Exception, IOException{
  5. //获取请求对象request 响应对象response
  6. HttpServletRequest request=ServletActionContext.getRequest();
  7. HttpServletResponse response=ServletActionContext.getResponse();
  8. //获取表单参数
  9. Integer num1=Integer.parseInt(request.getParameter("num1"));
  10. Integer num2=Integer.parseInt(request.getParameter("num2"));
  11. Integer sum=num1+num2;
  12. //将结果放在域对象request中
  13. request.setAttribute("sum", sum);
  14. //转发到add.jsp中
  15. request.getRequestDispatcher("/add.jsp").forward(request, response);
  16. return null;
  17.  
  18. }
  19. }

5.配置struts.xml的自动提示  http://jingyan.baidu.com/article/9158e0004054baa2541228e2.html

6.配置struts.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5.  
  6. <!-- struts2的核心配置文件,在应用部署时加载并解析 -->
  7. <struts>
  8. <package name="base" extends="struts-default"><!-- struts2内部的一个核心包 -->
  9. <action
  10. name="add"
  11. class="cn.itcast.web.struts2.add.AddAction"
  12. method="execute"/>
  13. </package>
  14. </struts>
  15. <!-- <action name代表请求的路径,无需/day31
            class代表请求对应的处理类(使用全路径名)
             method代表请求对应的处理类的处理控制方法

相关的Action类放在同一个包下,struts2以包来区分不同的Action
name包名(不能重复)
extends自定义包,只继承struts2框架的内置包
自定义类就可以用内置的常用功能

-->

7.访问http://localhost:8080/day31/add.jsp

运行jsp乱码

  1. <%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

(1)WEB框架概念和struts2体验的更多相关文章

  1. 支持JDK19虚拟线程的web框架,之一:体验

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于虚拟线程 随着JDK19 GA版本的发布,虚拟线程 ...

  2. JAVA web 框架集合

    “框架”犹如滔滔江水连绵不绝, 知道有它就好,先掌握自己工作和主流的框架: 在研究好用和新框架. 主流框架教程分享在Java帮帮-免费资源网 其他教程需要时间制作,会陆续分享!!! 152款框架,你还 ...

  3. 支持JDK19虚拟线程的web框架之四:看源码,了解quarkus如何支持虚拟线程

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 前文链接 支持JDK19虚拟线程的web框架,之一:体 ...

  4. 支持JDK19虚拟线程的web框架,之五(终篇):兴风作浪的ThreadLocal

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos <支持JDK19虚拟线程的web框架>系列 ...

  5. Struts2框架学习(一)——Struts2的概念及搭建

    一.Struts2的概念 使用优势:1)自动封装参数 2)参数校验 3)结果的处理(转发|重定向) 4)国际化 5)显示等待页面 6)防止表单重复提交 Struts2具有更加先进的架构以及思想 Str ...

  6. java web框架发展的新趋势--跨界轻型App

    “跨界(cross over)在汽车界已然成风,将轿车.SUV.跑车和MPV等多种不同元素融为一体的混搭跨界车型,正在成为汽车设计领域的新趋势.从个人而言,当包容.多元的审美要求和物质要求越来越强烈时 ...

  7. 选择一个 Python Web 框架:Django vs Flask vs Pyramid

    Pyramid, Django, 和 Flask都是优秀的框架,为项目选择其中的哪一个都是伤脑筋的事.我们将会用三种框架实现相同功能的应用来更容易的对比三者.也可以直接跳到框架实战(Framework ...

  8. 一次框架性能的比较,引起了我对搭建web框架的兴趣

    背景 一次无意的访问,点击到了一个专门做PHP性能测试的网站,看这里PHP Benchmarks. 在里面发现了框架性能测试的结果,发现Laravel的框架性能尽然是最低的.瞬间受到了一万点的暴击,谁 ...

  9. 浅析Java Web框架技术

    一.Java Web框架技术的概念 所谓的Java框架,简单理解是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计.协作构件之间的依赖关系.责任分配和控制流程,表现为一组抽象类以及其实例之 ...

随机推荐

  1. android ANR产生原因和解决的方法

    ANR (Application Not Responding) ANR定义:在Android上,假设你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框.这个对话框称作应用程序无响应(AN ...

  2. java8新特性学习笔记(二) 使用流(各种API)

    筛选和切片 用谓词筛选,筛选出各个不相同的元素,忽略流中的头几个元素,或将流截断至指定长度 用谓词筛选 Stream接口支持filter方法,该操作接受一个谓词(返回一个boolean的函数) 作为参 ...

  3. Vue 响应式属性

    本文参考自:https://www.w3cplus.com/vue/vue-reactivity-and-pitfalls.html 1.概述 当创建一个Vue实例时,每个数据属性.组件属性等都是可以 ...

  4. SVN 服务端、客户端安装及配置、导入导出项目

    http://blog.csdn.net/xcy13638760/article/details/12994923 http://www.cnblogs.com/armyfai/p/3985660.h ...

  5. SPA路由机制详解(看不懂不要钱~~)

    前言 总所周知,随着前端应用的业务功能起来越复杂,用户对于使用体验的要求越来越高,单面(SPA)成为前端应用的主流形式.而大型单页应用最显著特点之一就是采用的前端路由跳转子页面系统,通过改变页面的UR ...

  6. Git小玩

    早就听说了GitHub的强大. 一直没有机会去看, 在公司实习的几个月里也没机会接触SVN和Git,  可是抱着对Linus大神的崇敬, 和开源的崇敬之情.  趁着不忙的几天, 来学习一下Git. 希 ...

  7. Qt on Android:将Qt调试信息输出到logcat中

    版权全部 foruok .如需转载敬请注明出处(http://blog.csdn.net/foruok). 假设你在目标 Android 设备上执行了 Qt on Android 应用,你可能希望看到 ...

  8. Selenium详解

    自动化测试工具,支持多种浏览器.爬虫中主要用来解决JavaScript渲染的问题. 主要是操控流量器,让浏览器做一些点击啊.加载渲染js啊,之类的.

  9. Cookie的写入,和读取

    public static void SetLoginGmameInfo(string  uid, string sid, string timestring, string sign)       ...

  10. jQuery源代码 框架分析

    每个框架都有一个核心.全部的结构都是基于这个核心之上,结构建立好了之后,剩下的就是功能的堆砌. jQuery的核心就是从HTML文档中匹配元素并对其操作. 就跟一座大楼一样.让我们一步一步了解这座大厦 ...