Struts2简诉
Struts2框架是基于MVC模式的开源,MVC模式是一种开发方式,主要作用是对组件之间进行隔离,M代表业务逻辑层,V代表视图层,C代表控制层。有利于代码的后期维;Struts2框架的源码主要来于WebWork框架,是在WebWork框架基础上再与Struts1的优点进行整合而设计出新的MVC分层框架。
Struts官方地址:http://struts.apache.org
下面做一个简单的登陆功能以演示Struts2,先看一下项目的结构
1.配置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"> <!-- Struts通过使用Filter拦截器来拦截以jsp、js、或者action为后缀的请求 --> <filter> <filter-name>Struts 2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>Struts 2</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>Struts 2</filter-name> <url-pattern>*.js</url-pattern> </filter-mapping> <filter-mapping> <filter-name>Struts 2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> <!-- 以上简化的写法 <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>--> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
2.创建控制层Login.java文件
package controller; import model.UserInfoService; /** * 使用Servlet作为控制层时,自定义的Servlet类需要继承HttpServlet类, * 而Struts2不需要继承任何类就可以实现Controller控制层的功能。 * 方法execute()是固定的写法,Struts2对这种写法是有声明格式规定的,访问权限必须是public, * 改方法返回类型是String,方法名是execute。这是一个约定,它是Status2默认会调用的方法, * 返回值String类型代表了一个逻辑名称,通过这个名称找到对应的JSP文件。 * username与password与JSP文件中的<input/>标签的name属性相对应 * @author LJX * */ public class Login { private String username; private String password; //get,set方法 public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String execute(){ UserInfoService usRef = new UserInfoService(); if(usRef.login(username, password)){ return "toOKJSP"; }else{ return "toNOJSP"; } } }
3.创建业务逻辑层UserInfoService.java文件
package model; public class UserInfoService { //逻辑判断 public boolean login(String username,String password){ if(username.equals("a") && password.equals("a")){ return true; }else{ return false; } } }
4.创建index.jsp、ok.jsp、no.jsp视图文件
index.jsp <body> <form action="login.action" method="post"> username: <input type="text" name="username" /><br> password: <input type="text" name="password" /><br> <input type="submit" value="登录" /> </form> </body> ok.jsp <body> This is OK page. <br> </body> no.jsp <body> This is NO page. <br> </body>
5.创建核心配置文件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> <!-- 是struts框架运行在开发模式,对异常的报错信息显示的比较完整 --> <constant name="struts.devMode" value="true"/> <!-- 定义一个package包,与java中的包不同的是struts中的包可以继承 extends="struts-default"的作用是自定义的包struts2login 继承自系统自带的包struts-default,这样可以将系统自带功能得到复用, 比如上传下载 --> <package name="Struts2login" extends="struts-default"> <!-- 将一个Login.java这个普通的JavaBean可以接受HTTP请求,name属性 是访问路径,需要加.action为后缀,class属性为Login.java类的路径 --> <action name="login" class="controller.Login"> <result name="toOKJSP">/ok.jsp</result> <result name="toNOJSP">/no.jsp</result> </action> </package> </struts>
代码敲完了,相信能有一个初步的对Struts2的认识,将项目发布到Tomact运行看效果,代码给了很详细的解释!
学海无涯,苦渡而已!!
Struts2简诉的更多相关文章
- Android -- Apk安装简诉
安装涉及到如下几个目录 system/app 系统自带的应用程序,无法删除 data/app 用户程序安装的目录,有删除权限. 安装时把apk文件复制到此目录 data/data 存放 ...
- Mybaits简诉
先组织一下语言!Mybatis是一个框架,一个数据持久化的框架,作用就是SQL语句的映射!减少了JDBC繁琐的数据操作与类型转换!简而言之,就是方便.轻巧!什么是持久化,持久,恩,JDBC就是一个数据 ...
- Jquery与DOM对象
在第一次学习jquery中,常常会不能分辨DOM对象和Jquery对象,下面我们就简诉一下它们之间的关系和区别 1.DOM对象(Document Object Model) 文档对象模型,每一份DOM ...
- magento安装wordpress
说起来事实上很easy,如今简诉一下安装过程 1.到magento connect界面安装magento扩展,地址:http://www.magentocommerce.com/magento-con ...
- C#高级特性(反射)
今天来讲解反射的应用: 一.反射是什么? 简诉一下,反射就是.Net Framework 的一个帮助类库,可以获取并使用metadata(元数据清单):说的通俗易懂点,就是不用通过引用,仍然可以使用其 ...
- Struts2 源码分析——Result类实例
本章简言 上一章笔者讲到关于DefaultActionInvocation类执行action的相关知识.我们清楚的知道在执行action类实例之后会相关处理返回的结果.而这章笔者将对处理结果相关的内容 ...
- Struts2 源码分析——DefaultActionInvocation类的执行action
本章简言 上一章讲到关于拦截器的机制的知识点,让我们对拦截器有了一定的认识.我们也清楚的知道在执行用户action类实例之前,struts2会先去执行当前action类对应的拦截器.而关于在哪里执行a ...
- Struts2 源码分析——拦截器的机制
本章简言 上一章讲到关于action代理类的工作.即是如何去找对应的action配置信息,并执行action类的实例.而这一章笔者将讲到在执行action需要用到的拦截器.为什么要讲拦截器呢?可以这样 ...
- Struts2 源码分析——Action代理类的工作
章节简言 上一章笔者讲到关于如何加载配置文件里面的package元素节点信息.相信读者到这里心里面对struts2在启动的时候加载相关的信息有了一定的了解和认识.而本章将讲到关于struts2启动成功 ...
随机推荐
- Docker容器管理平台Humpback进阶-私有仓库
Docker私有仓库 在 Docker 中,当我们执行 docker pull xxx 的时候,可能会比较好奇,docker 会去哪儿查找并下载镜像呢? 它实际上是从 registry.hub.doc ...
- js实现整数转化为小数
toFixed 方法 返回一个字符串,代表一个以定点表示法表示的数字. number .toFixed(i) 参数 bumber 必选项.一个 Number 对象. i 可选项.小数点 后的数字位数. ...
- Dubbo有意思的特性介绍
Duboo 不单让我们可以像使用本地服务一样的使用远程服务,还设计了很多特性来满足我们平时开发时常见的场景,省却了我们不少麻烦,真是一款有良心的框架,下面针对这些场景和解决方案来具体解释下: 1.接口 ...
- C++汉诺塔递归实现
程序背景: 汉诺塔(Tower of Hanoi)又称河内塔,问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命 ...
- GithubPages + Hexo + Disqus博客教程
文章主要描述了利用github page,hexo静态博客框架以及disqus来搭建个人静态博客的详细步骤. github page用来搭建博客的主页,hexo用来更改博客主题.发布文章等等,并通过配 ...
- python web -- django
一. 安装 django $ pip install django (env)$ python >> import django >> django.VERSION >& ...
- SICP-1.5-控制结构
测试 DOCSETS 在docstring中直接添加测试 def sum_naturals(n): """Return the sum of the first n na ...
- spring boot + mybatis + druid
因为在用到spring boot + mybatis的项目时候,经常发生访问接口卡,服务器项目用了几天就很卡的甚至不能访问的情况,而我们的项目和数据库都是好了,考虑到可能时数据库连接的问题,所以我打算 ...
- HTML基础了解
对HTML最基本的认识和编写:"我的第一个网页" HTML是什么: 它的全称是Hyper Text Markup Language超文本标记语言,页面中包括有视频.图片.链接等其 ...
- DOM 和 BOM 的 对象 和方法
DOM 对象 有 documet event element attlibute 方法 getElementById getElementsBytagname getElementsB ...