从头开始,一切明了。
用struts开发也有一段时间了。但自己却一直没有接触框架的内容。今天徒手建了一个最简单的struts2 的web应用。
1,直接在Tomcat webapps 下面建立一个工程目录:webapps/rj
2,在工程目录下面新建文件夹 rj/WEB-INF
3,在WEB-INF下面建立classes和lib目录
4,在WEB-INF/classes 目录下面创建struts.xml 文件
struts.xml 文件内容如下:
<?xml version="1.0" encoding="GBK"?>
<!-- 指定Struts 2配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<!-- struts是Struts 2配置文件的根元素 -->
<struts>
<!-- Struts 2的Action必须放在指定的包空间下定义 -->
<package name="strutsqs" extends="struts-default">
<!-- 定义login的Action,该Action的实现类为com.tomp.action.LoginAction类 -->
<action name="login" class="com.tomp.action.LoginAction">
<!-- 定义处理结果和资源之间映射关系。 -->
<result name="error">/error.jsp</result>
<result name="success">/welcome.jsp</result>
</action>
</package>
</struts>
5,在工程目录rj/WEB-INF下面创建web.xml文件。
web.xml文件内容如下:
<?xml version="1.0" encoding="GBK"?>
<!-- web-app是Web应用配置文件的根元素,指定Web应用的Schema信息 -->
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 定义Struts 2的FilterDispatcher的Filter -->
<filter>
<!-- 定义核心Filter的名字 -->
<filter-name>struts2</filter-name>
<!-- 定义核心Filter的实现类 -->
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<!-- FilterDispatcher用来初始化Struts 2并且处理所有的Web请求 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
6,在工程目录rj下面建立三个jsp页面:
index.jsp,success.jsp,error.jsp
index.jsp 内容如下:
<%@ page language="java" contentType="text/html; charset=GBK"%>
<html>
<head>
<title>登录页面</title>
</head>
<body>
<!-- 提交请求参数的表单 -->
<form action="login.action" method="post">
<table align="center">
<caption><h3>用户登录</h3></caption>
<tr>
<!-- 用户名的表单域 -->
<td>用户名:<input type="text" name="username"/></td>
</tr>
<tr>
<!-- 密码的表单域 -->
<td>密 码:<input type="text" name="password"/></td>
</tr>
<tr align="center">
<td colspan="2"><input type="submit" value="登录"/><input type="reset" value="重填" /></td>
</tr>
</table>
</form>
</body>
</html>
success.jsp内容如下:
<%@ page language="java" contentType="text/html; charset=GBK"%>
<html>
<head>
<title>success</title>
</head>
<body>
天啦,你成功了!
</body>
</html>
eror.jsp 页面内容就不写了,不会失败的。
7,在WEB-INF /lib下面加入如下5个struts2 必须得包:
8,新建java文件如下:
//Struts 2的Action类就是一个普通的Java类
package com.tomp.action;
public class LoginAction {
//下面是Action内用于封装用户请求参数的两个属性
private String username;
private String password;
//username属性对应的getter方法
public String getUsername(){
return username;
}
//username属性对应的setter方法
public void setUsername(String username){
this.username = username;
}
//password属性对应的getter方法
public String getPassword(){
return password;
}
//password属性对应的setter方法
public void setPassword(String password){
this.password = password;
}
//处理用户请求的execute方法
public String execute() throws Exception{
//当用户请求参数的username等于scott,密码请求参数为tiger时,返回success字符串
//否则返回error字符串
if (getUsername().equals("scott")&& getPassword().equals("tiger")){
return "success";
}
else{
return "error";
}
}
}
编译好,按路径放到WEB-INF/classes 目录下
路径应该如下:WEB-INF/classes/com/tomp/action/LoginAction.class
编译方法就不说了,可以用javac命令编译,也可以用编译器。
到这里就完成了。
启动tomcat 输入。。。。。localhost:端口号/rj 就成功了。
下面说些必备知识:
Struts 一共有5个必备包及作用:
struts2-core-2.1.6.jar --------------- struts2的核心包
freemarker-2.3.13.jar--------------- FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具
ognl-2.6.11.jar -------------- 支持ognl表达式
xwork-2.1.2.jar -------------- xwork的包 由于Struts2是由xwork的延伸 有些类依然关联着 xwork的类
commons-fileupload-1.2.1.jar ------------ struts的上传下载
有这5个就可以正常运行了。少一个都不行。我是一个个看着报的错误加进去的。
web.xml作用:
每一个web项目都有一个web.xml,如果要用到struts2就必须在web.xml中加上strut2的过滤器,决定struts处理哪些类型请求。
其实他就是负责整个web项目的配置。
我们的代码中如果用到与struts2相关的,首先会找这个配置web.xml中关于struts2 的配置,然后再根据这个配置内容,去找对应的其他配置内容。
如这里:
<filter>
<!-- 定义核心Filter的名字 -->
<filter-name>struts2</filter-name>
<!-- 定义核心Filter的实现类 -->
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<!-- FilterDispatcher用来初始化Struts 2并且处理所有的Web请求 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<!-- 定义核心Filter的名字 -->
<filter-name>struts2</filter-name>
<!-- 定义核心Filter的实现类 -->
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<!-- FilterDispatcher用来初始化Struts 2并且处理所有的Web请求 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
红色部分:
<url-pattern>/*</url-pattern>
表示处理所有类型请求,如果改为
<url-pattern>*.do</url-pattern>
表示struts只处理.do类型的请求。如果其他类型请求就会pass。不会再去找struts.xml中内容了。
struts.xml
struts.xml就是struts的配置文件。决定过滤剩下的请求由哪个类来处理及处理结果。