Struts框架简单实例——HelloWorld
step1:环境搭建
到Struts官网下载最新版本:http://struts.apache.org/download.cgi
导入必备jar包:
序号 | 名称 | 描述 |
1 | commons-fileupload-1.2.2.jar | 文件上传组件 |
2 | commons-io-2.0.1.jar | io包 |
3 | commons-lang3-3.1.jar | 基础工具包,封装一些常用的基础操作 |
4 | commons-loggin-1.1.1.jar | 日志组件 |
5 | freemarker-2.3.19.jar | 一个基于模板生成文本输出的通用工具 |
6 | ognl-3.0.6.jar | 对象图导航语言(jar包库) |
7 | strut2-core-2.3.12.jar | Struts2核心jar包 |
8 | xwork-core-2.3.12.jar | xwork核心包 |
9 | javassist-3.15.0-GA.jar | 扩展java类和实现 |
这里用的是MyEclipse10.6 for Spring,导入struts2.3jar包(项目右键--properties-Java Build Path-Add External Jars或者复制到lib目录下)
step2:配置文件
1.web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
<display-name></display-name>
<!-- Struts2框架配置 -->
<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>
2.struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 指定由spring负责action对象的创建 -->
<!-- <constant name="struts.objectFactory" value="spring" /> -->
<!-- 所有匹配的请求都由struts2处理 -->
<constant name="struts.action.extension" value="action" />
<!-- 是否启用开发模式 -->
<constant name="struts.devMode" value="false" />
<!-- struts配置文件改动后,是否重新加载 -->
<constant name="struts.configuration.xml.reload" value="true" />
<!-- 设置浏览器是否缓存静态内容 -->
<constant name="struts.serve.static.browserCache" value="false" />
<!-- 请求参数的编码方式 -->
<constant name="struts.i18n.encoding" value="utf-8" />
<!-- 每次HTTP请求系统都重新加载资源文件,有助于开发 -->
<constant name="struts.i18n.reload" value="true" />
<!-- 让struts2支持动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<!-- Action名称中是否还是用斜线 -->
<constant name="struts.enable.SlashesInActionNames" value="false" />
<!-- 允许标签中使用表达式语法 -->
<constant name="struts.tag.altSyntax" value="true" />
<!-- 对于WebLogic,Orion,OC4J此属性应该设置成true -->
<constant name="struts.dispatcher.parametersWorkaround" value="false" />
<!-- 把主题改为simple -->
<constant name="struts.ui.theme" value="simple"></constant>
<package name="basePackage" extends="struts-default">
<action name="login_*" class="cn.order.action.LoginAction" method="{1}">
<result name="list">/WEB-INF/jsp/loginAction/login.jsp</result>
</action>
</package>
</struts>
需要注意的:这个文件里,配置的过滤器的类是:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter。和原来配置的类不一样。原来配置的类是:org.apache.struts2.dispatcher.FilterDispatcher。这是因为,从struts-2.1.3以后,org.apache.struts2.dispatcher.FilterDispatcher值被标注为过时。虽然仍然起作用,但是不建议使用。
step3:编码
1.User.java
package cn.order.model;
public class User {
private String userName;
private String userId;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
}
2.LoginAction.java
package cn.order.action;
import cn.order.model.User;
import com.opensymphony.xwork2.ModelDriven;
public class LoginAction implements ModelDriven<User>{
User model=new User();
@Override
public User getModel() {
return model;
}
public String list(){
return "list";
}
}
3.login.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>登录</title>
</head>
<body>
login
</body>
</html>
4.index.jsp
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>helloWorld</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">
</head>
<body>
<s:form name="frmLoign" action="login_list" method="post" >
<s:label value="系统登陆"></s:label> <br>
<s:textfield name="userName" label="用户名"></s:textfield> <br>
<s:password name="password" label="密码"></s:password> <br>
<s:submit value="提交"></s:submit>
</s:form>
</body>
</html>
Step4:流程运行及总结
提交后就可以到login.jsp页面。