自学java_Struts2框架
一.Struts2基础
1.Struts2是有Apache在Struts1和Webwork的基础上研发出的新一代MVC框架。
2.Struts2开发环境的搭建:
打开https://struts.apache.org/download.html页面下载Struts2的版本,我使用是:struts-2.3.14-all.zip
二.HelloWorld示例
- 新建一个javaweb项目,把下载好的struts-2.3.14-all.zip解压找到lib文件夹,
导入到项目中,然后加载到项目中(自行百度不细说)
2.新建一个FirstAction.java
package com.scce.struts2.action; import java.text.SimpleDateFormat; import java.util.Date; import com.opensymphony.xwork2.ActionSupport; public class FirstAction extends ActionSupport { private String date; private String message; @Override public String execute() throws Exception { SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH时ss分mm秒"); date=sdf.format(new Date()); message="Hello World"; return SUCCESS; } public String getDate(){ return date; } public String getMessage(){ return message; } }
3.新建一个struts.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="action" namespace="/" extends="struts-default"> <action name="FirstAction" class="com.scce.struts2.action.FirstAction"> <result>/firstStruts2.jsp</result> </action> </package> </struts>
4.修改web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" 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"> <display-name></display-name> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
5.新建一个firstStruts2.jsp页面
<body> ${message } <s:property value="date"/><br> ${date} </body>
6.浏览器访问地址:http://localhost:8080/struts2_01/FirstAction.action
效果如下图:
三.属性驱动模型
(注解:Struts2与ServletAPI实现了解耦,所以无法直接使用HttpServletRequest对象获取表单提交的参数,但Strtus2提供了属性驱动模型机制来解决问题)
- 新建一个login.jsp页面
<form action="UserManagerAction.action" method="post"> <p>用户名:<input type="text" name="username"/>${messsage}</p> <p>密 码:<input type="text" name="password"/></p> <input type="submit" value="提交"/> </form>
- 自定义Action类UserManagerAction
package com.scce.struts2.action; import com.opensymphony.xwork2.ActionSupport; public class UserManagerAction extends ActionSupport { public String getMesssage() { return messsage; } public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } private String username;//用户名 private String password;//密码 private String messsage;//消息 @Override public String execute() { System.out.println("用户名"+username);//打印用户名 System.out.println("密码"+password);//密码 //默认账号admin,密码1234验证登陆成功 if("admin".equals(username)&&"1234".equals(password)) { messsage="登陆成功!ȷ"; return "success"; } else { messsage="对不起账号或密码错误"; return "error"; } } }
3.在struts.xml文件中配置UserManagerAction类的相关信息
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="action" namespace="/" extends="struts-default"> <action name="FirstAction" class="com.scce.struts2.action.FirstAction"> <result>/firstStruts2.jsp</result> </action> <action name="UserManagerAction" class="com.scce.struts2.action.UserManagerAction"> <result name="success">/login.jsp</result> <result name="error">/error.jsp</result> </action> </package> </struts>
4.在浏览器访问地址:
http://localhost:8080/struts2_01/UserManagerAction.action
自学java_Struts2框架的更多相关文章
- Java自学-集合框架 Collections
Java集合框架 工具类Collections Collections是一个类,容器的工具类,就如同Arrays是数组的工具类 步骤 1 : 反转 reverse 使List中的数据发生翻转 pack ...
- Java自学-集合框架 Collection
Java集合框架 Collection Collection是一个接口 步骤 1 : Collection Collection是 Set List Queue和 Deque的接口 Queue: 先进 ...
- Java自学-集合框架 HashSet
Java集合框架 HashSet 示例 1 : 元素不能重复 Set中的元素,不能重复 package collection; import java.util.HashSet; public cla ...
- Java自学-集合框架 HashMap
Java集合框架 HashMap 示例 1 : HashMap的键值对 HashMap储存数据的方式是-- 键值对 package collection; import java.util.HashM ...
- Java自学-集合框架 二叉树
Java集合框架 二叉树 示例 1 : 二叉树概念 二叉树由各种节点组成 二叉树特点: 每个节点都可以有左子节点,右子节点 每一个节点都有一个值 package collection; public ...
- Java自学-集合框架 LinkedList
Java集合框架 LinkedList 序列分先进先出FIFO,先进后出FILO FIFO在Java中又叫Queue 队列 FILO在Java中又叫Stack 栈 示例 1 : LinkedList ...
- Java自学-集合框架 与数组的区别
Java集合框架与数组的区别 示例 1 : 使用数组的局限性 如果要存放多个对象,可以使用数组,但是数组有局限性 比如 声明长度是10的数组 不用的数组就浪费了 超过10的个数,又放不下 //Test ...
- java 自学简单框架(反射+注解)
1.先定义一个学生类 2.再定义一个teacher类(这个是为了练习多个注解,自己练习可以 不写这个) 3.再定义个一个学生老师类(这个是为了最终调用上面的那个学生类做准备) 4.下面开始真正的写框架 ...
- [Python自学] Flask框架 (1) (Flask介绍、配置、Session、路由、请求和响应、Jinjia2模板语言、视图装饰器)
oldboy:s9day114 参考博客:https://www.cnblogs.com/wupeiqi/articles/7552008.html 一.Flask简介 1.安装Flask pip i ...
随机推荐
- node-express-1
安装: express v4.0以后的安装: npm install express-generator -g 建立项目 express -t ejs blog 安装依赖 cd blog && ...
- mysql开启远程登陆(修改数据表和授权两种方法)
一.确认防火墙没有阻止3306端口(一般服务器默认会屏蔽掉) windows防火墙例外设置方法 控制面板(右上角选择查看方式为大图标)---防火墙---高级设置---高级设置---出站规则---最右边 ...
- C# 比较两文本相似度
这个比较文本用到的主要是余弦定理比较文本相似度,具体原理右转某度,主要适用场景是在考试系统中的简答题概述,可根据权重自动打分,感觉实用性蛮广的. 先说下思路: 文本分词,中文于英文不同,规范的英文每个 ...
- vue组件的通信
组件的引入两种方式 动态组件 <p is="com-a"></p> 直接引入 <com-a></com-a> 插槽功能 父组件引入 ...
- 第三周博客之一---Oracle基础知识
一.数据库的定义.作用介绍 1.定义:按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. 2.数据库的发展历史: 2.1.在1962年数据库一词出现在系统研发的公司的技术备忘录中 2. ...
- use this method get wifi from notebook
sudo apt dist-upgrade http://cache.baiducontent.com/c?m=9d78d513d9981de90fb3837e7c478a265b09c0307a8c ...
- Error "java.lang.NoClassDefFoundError:org/openxmlformats/schemas/spreadsheetml/x2006/main/CTExtensionList" in SoapUI
After upgrade readyAPI 1.9 to the higher version, pop up error "java.lang.NoClassDefFoundError: ...
- js之 单例模式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- django之信号
Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. 1.Django内置信号 Model signals pr ...
- python 面试题之 生成器
如下函数执行结果是什么? 答案: [20, 21, 22, 23] 核心要点:本题重点在对生成器的理解, 生成器具有惰性机制 ,只有在取值的时候才执行. 解析: for 循环遍历列表,执行了两次 第 ...