【SSH三框架】Struts2第一章的基础:第一次写Struts2规划
今年八月,当已经SSH三架完成学业。然后,他感动Android开展。三个框架已经很长的时间做无用的东西。所以,如果你想花三四天的时间来复习一下,写在博客。
附带SSH整个jar包网盘下载:http://pan.baidu.com/s/1hqf5ta8
首先,我们新创建一个web项目,然后引入jar包:commons-fileupload。commons-io。freemarker,javassist。ognl。struts2-core,xwork-core。
这里不过个简单的struts程序。所以只引入了这些jar包
接下来,我们就是配置web.xml的内容了,web.xml:
<?xml version="1.0" encoding="GBK"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <!-- 定义Struts2的核心Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- 让Struts2的核心Filter拦截全部请求 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
这里边是定义了一个Struts2的核心拦截器,Struts2的核心就是环绕拦截器而生的
然后。我们写一个登陆的页面:login.jsp
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title><s:text name="loginPage"/></title>
</head>
<body>
<s:form action="login">
<s:textfield name="username" key="user"/>
<s:textfield name="password" key="pass"/>
<s:submit key="login"/>
</s:form>
</body>
</html>
这里用到了struts2的标签库。在以后会做介绍
在login.jsp我们为form表单定义了一个action,是在点击login之后跳转的作用。在学servlet的时候应该都用过。
这个action我们能够在struts.xml中定义。这个struts.xml我们通常是放在src文件夹下边。也能够变化(只是也要改变对应的路径)
struts.xml:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<!-- 指定Struts 2配置文件的根元素 -->
<struts>
<!-- 指定全局国际化资源文件 -->
<constant name="struts.custom.i18n.resources" value="mess"/>
<!-- 指定国际化编码所使用的字符集 -->
<constant name="struts.i18n.encoding" value="GBK"/>
<!-- 全部的Action定义都应该放在package下 -->
<package name="lee" extends="struts-default">
<action name="login" class="org.crazyit.app.action.LoginAction">
<!-- 定义三个逻辑视图和物理资源之间的映射 -->
<result name="input">/login.jsp</result>
<result name="error">/error.jsp</result>
<result name="success">/welcome.jsp</result>
</action>
</package>
</struts>
这里其他的东西不用管,我们看下<package></package>标签中的内容,这里边定义了一个action,设置name属性为“login”,class属性为:LoginAction
然后下边是三个result,分别有各自的name属性。
这个struts.xml的作用就是:当页面发来请求。由struts.xml处理,跳转到对应的java处理程序,然后通过java处理程序跳转到对应的result页面
然后,我们看LoginAction.java:
package org.crazyit.app.action; import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport
{
//定义封装请求參数的username和password属性
private String username;
private String password; 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;
}
//定义处理用户请求的execute方法
public String execute() throws Exception
{
//当username为crazyit.org。password为leegang时即登录成功
if (getUsername().equals("crazyit.org")
&& getPassword().equals("leegang") )
{
ActionContext.getContext().getSession()
.put("user" , getUsername());
return SUCCESS;
}
else
{
return ERROR;
}
}
}
在LoginAction.java中我们定义了两个属性:username和password,而且定义了一个execute()方法,这种方法是默认的sruts处理方法
在这个execute方法中,我们定义了一个处理的逻辑,
这个逻辑规定username和password等于XXX的时候,利用ActionContext.getContext().getSession().put()函数,加入一个属性user。内容为:getUsername()。
而且。return SUCCESS。
这里的SUCCESS相应的就是struts.xml中的<result name="success">/welcome.jsp</result>
PS:须要注意的一点。我们能够return不论什么的一个字符串,仅仅要在struts.xml中有与其相应的result就可以。
这里是由于继承了ActionSuppot,所以SUCCESS没有加上双引號,由于SUCCESS在ActionSuppot中默觉得“success"字符串。
然后,我们运行:http://localhost:8080/Struts2Demo/login.jsp就能够运行相关的操作了
版权声明:本文博主原创文章,博客,未经同意不得转载。
【SSH三框架】Struts2第一章的基础:第一次写Struts2规划的更多相关文章
- 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础
第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1 初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...
- 第一章 jQuery基础
第一章jQuery基础 一.jQuert简介 1.什么是jQuery jQuery是javaScript的程序库之一,它是javaScript对象和实用函数的封装. jQuery是继Prototype ...
- web前端学习python之第一章_基础语法(二)
web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...
- web前端学习python之第一章_基础语法(一)
web前端学习python之第一章_基础语法(一) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...
- UNIX环境高级编程--第一章 UNIX基础知识
第一章 UNIX基础知识 1.2 UNIX体系结构 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境.我们将这种软件称为内核(kernel),因为 它相对较小,且 ...
- 第一章 –– Java基础语法
第一章 –– Java基础语法 span::selection, .CodeMirror-line > span > span::selection { background: #d7d4 ...
- [Python笔记][第一章Python基础]
2016/1/27学习内容 第一章 Python基础 Python内置函数 见Python内置函数.md del命令 显式删除操作,列表中也可以使用. 基本输入输出 input() 读入进来永远是字符 ...
- python第一章计算机基础
第一章 计算机基础 1.1 硬件 计算机基本的硬件由:CPU / 内存 / 主板 / 硬盘 / 网卡 / 显卡 / 显示器 等组成,只有硬件但硬件之间无法进行交流和通信. 1.2 操作系统 操作系统用 ...
- apue学习笔记(第一章UNIX基础知识)
总所周知,UNIX环境高级编程是一本很经典的书,之前我粗略的看了一遍,感觉理解得不够深入. 听说写博客可以提高自己的水平,因此趁着这个机会我想把它重新看一遍,并把每一章的笔记写在博客里面. 我学习的时 ...
随机推荐
- 从头开始编写项目Makefile(八):型号规则
[版权声明:转载请保留源:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] 上创建的文件夹谈及.没有生产目标文件到相应的文件夹,在这里 ...
- linux下一个oracle11G DG建立(一个):准备环境
linux下一个oracle11G DG建立(一个):准备环境 周围环境 名称 主库 备库 主机名 bjsrv shsrv 软件版本号 RedHat Enterprise5.5.Oracle 11g ...
- JAVA DATE类型推断尺寸数据比较法
两Date变量类型通过compareTo的方式来比较.这种方法的叙述描述的是,这:假设参数 Date 等于该 Date.返回值 0.假设这 Date 于 Date 在参数,它返回小于 0 的值.假设这 ...
- Java 打开文件的两种方式
import java.awt.Desktop; import java.io.File; import java.io.IOException; public class LnkDemo { pub ...
- hdu3572 任务分配/最大流量推论全流
意甲冠军:将n分配的任务m机.到的每个任务需要的天数(如果没有持续的日常),并能做到在哪些天任务.询问是否有计划. 典型的任务(X)----日(Y)一半的最大流量,(因为这个任务是天之间的关系)处理器 ...
- CFileDialog
使用简单介绍
CFileDialog使用文件选择对话框:首先构造一个对象,并提供一个相应的参数,构造函数原型例如,下面的: CFileDialog::CFileDialog( BOOL bOpenFileDialo ...
- 【Android进阶】快捷图标的创建与移除
注释已经说得很清楚了,如果有疑问,请留言 /** * 添加桌面快捷方式 * * @param view */ public void click1(View view) { if (isExit()) ...
- 自己主动机串标:Directed Acyclic Word Graph
trie -- suffix tree -- suffix automa 有这么几个情况: 用户输入即时响应AJAX搜索框, 显示候选名单. 搜索引擎keyword统计数量. 后缀树(Suffix T ...
- 电商指尖---(6)solrconfig.xml配置具体解释
solrconfig.xml配置文件主要定义SOLR理规则,包含索引数据的存放位置,更新,删除,查询的一些规则配置. 能够在tomcat的安装路径下找到这个文件C:\Program Files\Apa ...
- linux并发连接数查看
1.查看Webserver(Nginx Apache)的并发请求数及其TCP连接状态: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) pri ...