Struts2 框架是基于MVC模式的开源JavaEE框架,Struts2 框架在SSH结构中或在软件项目中的作用非常重要。也就是,开发web的javaEE软件项目时,程序员需要使用Struts2来处理种类非常多的功能,比如,上传下载数据验证等。
需要学习的内容为:
自定义MVC架构验证
Struts2 数据验证
Struts2 国际化
重定向与转发
多模块处理
紧耦合与松耦合开发
第一步 安装
下载地址 http://struts.apache.org/download.cgi#struts2513
点击Finish 完成
打开我们刚才下载的Struts2中lib目录,这下面有非常多的Struts类库,并不是完全需要,一般情况下我们只导入常用的即可,其他的到需要的时候再导入,需要的jar包如下图
配置web.xml,在<web-app>节点之间添加下面代码,也就是Struts2的框架的过滤器
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>truts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
配置过滤器是Struts2能跑起来最基本的前提,工作原理就是当tomcat容器启动时,首先加载web.xml,所以会加载其中定义的过滤器,因此StrutsPrepareAndExecuteFilter过滤器会过滤项目下所有的请求,然后后来利用过滤器捕获action请求,从而调用相应的方法进行处理,这就是Struts2的大致工作情况,StrutsPrepareAndExecuteFilter类出现可以让开发人员自定义过滤器,从而在请求到达处理之间对用户请求进行处理
配置好web.xml后需要建立Struts2的核心配置文件,位置就是项目下的src目录中,建立struts.xml文件,他负责配置所有的请求对应各种类或者方法.
手动添加struts.xml 会因为对配置的不熟悉而出现错我,可以借助添加DTD创建struts.xml
Users/kangxg/Downloads/java/struts-2.5.13/src/core/src/main/resources/struts-2.5.dtd
http://struts.apache.org/dtds/struts-2.5.dtd
最后目录为
struts.xml :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd" >
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<package name="Struts2Login" extends="struts-default" namespace="/" >//namespace="/" 要设置默认action
<default-action-ref name="hello"/>//默认action
<action name="hello" class="com.struts.HelloWorldAction" method="execute">
<result name="success">/WEB-INF/HelloWorld.jsp</result>
<result name="error">/WEB-INF/login.jsp</result>
</action>
</package>
</struts>
HelloWorldAction:
package com.struts;
public class HelloWorldAction {
private String username;
private String password;
public String execute() throws Exception{
System.out.println("Username: " + this.getUsername());
System.out.println("Password: " + this.getPassword());
if ( getUsername() == null ||getUsername().equals("") )
return "error";
return "success";
}
public String getUsername()
{
return username;
}
public void setUsername(String name)
{
this.username = name;
}
public String getPassword()
{
return password;
}
public void setPassword(String pwd)
{
this.password = pwd;
}
}
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action ="hello" method = "post">
username:
<input type ="text" name = "username">
<br/>
password:
<input type ="text" name = "password">
<br/>
<input type ="submit" name = "登录">
</form>
</body>
</html>
HelloWorld.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Hello World</title>
</head>
<body>
Hello World, Welcome! <s:property value="name"/>
</body>
</html>
debug 运行
测试成功!
总结:中间出现了很多错误信息
1 404:因为路径不对 修改为
<result name="success">/WEB-INF/HelloWorld.jsp</result>
<result name="error">/WEB-INF/login.jsp</result>
2 log4j-core 错误: 缺少log4j-core lib ,网上下载相应的版本,并创建log4j2.xml
3 用户名一直为null: 变量名称要和jsp中一致。
4 文中上半部分的项目名称 struts2Learn 应该为Struts2Login
https://github.com/kangxg/javaLearn.git
http://blog.csdn.net/whbing1471/article/details/51730938
http://blog.csdn.net/World_Programming/article/details/52791620?locationNum=1&fps=