自学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 ...
随机推荐
- C# DotNetBar ribboncontrol子窗体的系统控件(最大最小关闭)在父窗体中多余显示
初始效果: 重复的子窗体按钮,看着别扭,修改MdiSystemItemVisible = False;后效果: MdiSystemItemVisible的系统解释为: 为了解决这个问题,浪费了好几天. ...
- 如何更有效地说服开发接收你的bug?!
来来来,测试小伙伴们,看看以下这张图是不是觉得很熟悉.. 虽然这张图带点戏谑的成分,但确实折射出大部分IT公司测试人员在报bug时,与开发的沟通存在些许问题.如何更有效地说服开发接收你的bug,以下整 ...
- Ubuntu 中文拼音输入法键入异常
如果确定系统装的OK,可以修复ubuntu Ctrl+Alt+t切出终端,输入命令: " ibus-daemon -drx",然后再输入拼音试一试就会OK .
- 简单的bootstarp项目实例
===========index.html==============<!DOCTYPE html> <html> <head> <meta charset= ...
- LoadLibrary 失败的解决
工作中遇到调用Loadlibrary 偶发失败的问题,不是必现,而且这种错误只是在程序初始化的时候出现,初始化成功后当然不会调用,而初始化也不是经常做的动作,所以查找原因起来比较麻烦,调试过程中发现有 ...
- PAT B1023
PAT B1023 标签(空格分隔): PAT 解决方法:贪心法 #include <cstdio> int main() { int count[10]; for (int i = 0; ...
- Java容器解析系列(9) PrioriyQueue详解
PriorityQueue:优先级队列; 在介绍该类之前,我们需要先了解一种数据结构--堆,在有些书上也直接称之为优先队列: 堆(Heap)是是具有下列性质的完全二叉树:每个结点的值都 >= 其 ...
- 开始 第一个自己的python爬虫程序 爬磁力链
不能一事无成,这么久了学python还是吊着,要落地,落在博客园好了,好像公司也只能上博客园了 昨天看了一篇用正则爬电影天堂的视频,直接拿来用,爬磁力吧,爬好玩的 #导入模块 import reque ...
- filter以及reduce的用法
简单的写了就几个例子 # 删掉偶数 li = [1,2,3,4,5,6,7,8,9,10] print(list(filter( lambda x : not x % 2 ==0 ,li))) #保留 ...
- 暴力解2018刑侦题python版
# 1-->a 2-->b 3-->c 4-->d a[1]-->question1 a=[None]*11 #11是为了下标方便些,要不逻辑描述的时候容易出错 sum= ...