学习的最好方法就是从helloWorld开始,一步一步从简入繁。参考书籍和网络上的资源搭建自己的一个struts2应用,然后将后续的学习成果都整合进去.
搭建步骤:
1、引入Struts 2工程所需运行库文件。
2、创建并配置web.xml文件
3、创建一个Action类
4、创建并配置struts.xml文件
5、编写视图资源
6、发布工程
1、引入Struts 2工程所需运行库文件
把用到的几个运行库文件复制到工程的WEB-INF下的lib文件夹中,如果使用的是Myeclipse集成开发工具,也可以直接选择struts2的核心库,比较省事,我这里就采用后者。
如果是自己导入jar的话,有以下几个Jar包就OK.
2、创建并配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>Struts2 test</display-name>
<filter>
<filter-name>struts2</filter-name>
<!-- FilterDispatcher是struts2中的核心过滤器,它将过滤出所有符合要求的请求,然后进行struts2的内部处理 -->
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern> </filter-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
1)Struts2的核心控制器FilterDispatcher被设计成了过滤器,通过<filter></filter>标签引入。
2)<url-pattern>/*</url-pattern>说明所有客户端请求都经由FilterDispatcher处理,并把过滤后的请求交给Struts2进行处理。
3、创建一个Action类
Action有以下特点:
- Struts2框架中Action是一个POJO,没有被代码污染。
- Struts2中的Action的execute方法不依赖于servlet API,改善了Struts1中耦合过于紧密,极大方便了单元测试。
- Struts2的Action无须用ActionForm封装请求参数。
- 相对Struts1框架而言,Struts2的逻辑视图不再是ActionForward对象,而是一个普通的字符串,利于分离和复用。
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private static final long serialVersionUID = 1030294046920869257L;
private String username;
private String password;
// 处理用户请求的execute方法
public String execute() throws Exception {
if (isInvalid(getUsername()))
return INPUT;
if (isInvalid(getPassword()))
return INPUT;
// 只有用户名为001,密码为123456方可成功登陆
if (username.equals("001") && password.equals("123456")) {
return "success";
} else {
return "error";
}
}
private boolean isInvalid(String value) {
return (value == null || value.length() == 0);
}
public String add() {
return SUCCESS;
}
public String show() {
return SUCCESS;
}
public String qurey() {
return SUCCESS;
}
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;
}
}
1)Struts2直接使用Action来封装HTTP请求参数,因此Action类应该包含与请求相对应的属性,并为该属性提供对应的setter和getter方法。
2)为Action类里增加一个execute方法,因为Struts2框架默认会执行这个方法。这个方法本身并不做业务逻辑处理,而是调用其他业务逻辑组件完成这部分工作。
3)Action类返回一个标准的字符串,该字符串是一个逻辑视图名,该视图名对应实际的物理视图。
我们现在要实现的是一个用户登录验证,因此Action中提供用户名和密码两个属性。如果正确返回success否则返回error
4、创建并配置struts.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <!-- 指定Web应用的默认编码集,相当于调用HttpServletRequest的setCharacterEncoding方法 --> <constant name="struts.i18n.encoding" value="UTF-8" /> <include file="struts-default.xml"></include> <package name="login" extends="struts-default" namespace="/login"> <action name="loginAction" class="com.company.login.LoginAction" > <result name="input">/login.jsp</result> <result name="error">/view/login/error.jsp</result> <result name="success">/view/login/welcome.jsp</result> </action> </package> </struts>
该文件发布的时候必须放置在WEB-INF/classes路径下,当程序运行的时候会自动在该目录下搜索struts.xml,我在做的时候,放到了专门建的放配置文件的文件夹config下,build path时指定输出文件到WEB-INF/classes,所以可以检索到。
在action标签中定义了name和class。name属性对应的是用户URL请求中的action名,比如在本应用中,用户请求为http://localhost:8080/MyProject/login.action,那么name属性就应该为login。class属性是处理请求的实现类(注意:要包含完整路径)。
result标签定义逻辑视图和物理视图之间的映射,在我们的Action中,如果返回的字符串是"success”则由对应的welcome.jsp页面进行处理;如果返回的字符串是"error”则由error.jsp页面进行处理。
5、编写视图资源
登陆页面login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title><s:text name="login.jsp" />
</title>
</head>
<body>
<s:form action="loginAction" namespace="/login">
<s:textfield name="username" label="用户名"></s:textfield>
<s:password name="password" label="密 码"></s:password>
<s:submit value="确定"/>
<s:reset value="重置"/>
</s:form>
</body>
</html>
登陆失败页面 error.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>fail.jsp</title>
</head>
<body>
<s:text name="failTip" />
<p />
<s:a href="/MyProject/login.jsp">return</s:a>
</body>
</html>
登陆成功页面welcome.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>welcome.jsp</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<s:text name="succTip" />
<br />
<p align="center">登陆成功!!!您的用户名是<s:property value="username"></s:property></p>
</body>
</html>
整个工程的结构如下:
注意,classpath中,struts 2 core libraries 和lib下的jar包只能取其一,否则会冲突报错。
6、发布工程(weblogic,tomcat任选)
注意,发布到weblogic时,要在工程下添加一个文件weblogic.xml,指定访问的工程:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
<weblogic-version>10.0</weblogic-version>
<context-root>MyProject</context-root>
</weblogic-web-app>
在浏览器中输入http://localhost:8080/MyProject/即可访问登陆页面
- 大小: 6.7 KB
- 大小: 10.9 KB
- 大小: 3.4 KB
- 大小: 3.4 KB
分享到:
相关推荐
struts2学习笔记总结
struts2学习笔记,非本人所写,但有学习的价值,总结的很好,分享一个!
Struts2学习笔记,介绍了struts2的基础部分
这是学习struts2时记得重点笔记,包括了一些原理,ognl语句的编写,以及如何设置拦截器等等一些基本知识,起到复习和巩固的作用
1. struts2框架的引入 1)把struts2的相关jar包导入到项目中去 2)把struts2框架的配置文件struts.xml复制粘贴到项目中的src下面(同时也可以把log4j.properties放到src下) 在这里我们主要是要的这个struts.xml文件...
struts2学习笔记struts2学习笔记struts2学习笔记
struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换
本人学习struts2的笔记,希望大家可以多多学习以后共同交流
三、 Namespace Namespace决定了action的访问...是用来解决重名的问题,例如当系统的前台和后台都有一个action名叫hello,这时就需要用package来区分。 前台后台 struts2中的package与java的package是相同的作用的。
struts2四天的学习笔记。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
struts2学习笔记一
Java相关课程系列笔记之十三Struts2学习笔记
structs2很详细的学习笔记,structs2的建造,工作原理,例子,逐步讲解,纯文字的
个人收藏,纯属备份作用,做个记录,方便需要时候查看