peace唠叨

Struts简单入门



本章主要讲解Struts2简单入门,第一个程序的建立

全部代码下载:

Github链接:链接

写文章不易,欢迎大家采我的文章,以及给出有用的评论,当然大家也可以关注一下我的github;多谢;

1.Struts2介绍:

  1. 简介:

Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。主要用在MVC模式的控制层;

01

1
2
3
4
5
6
7
8
9
10
11
12

Struts2框架预先实现了一些功能:

1. 请求数据自动封装

2. 文件上传的功能

3. 对国际化功能的简化

4. 数据效验功能

……………….

2.下载Struts2的jar包

下载地址:http://archive.apache.org/dist/struts/binaries/

我用的是struts-2.3.16.1-all.zip这个版本,我的下载地址为:http://download.csdn.net/detail/peace1213/9371320

2.Struts2的Hello peace:

  1. 第一步建立动态web工程并引入jar包:

建立工程不做介绍;如果只是简单的开发没有必要到下载的文件中将所有lib的文件引入,引入简最小的包就可以了。

解压刚才下载的压缩包struts-2.3.16.1-all.zip,在apps文件夹下有个struts2-blank.war包,打开它,到WEB-INF/lib目录下,如下图所示,即为所需的最小包。包含的包应该和具体的Struts版本有关。

02

  1. 配置工程的web.xml文件:

打开web.xml文件增加一个过滤器的配置,配置Struts2控制器的核心过滤器StrutsPrepareAndExecuteFilter

注意:如果你使用的是2.1.3以前的版本配置的是FilterDispatcher,但是从2.1.3版本后此类已经过时:
配置方式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 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">
<display-name>struts2Demo</display-name>
<!-- Struts2的配置 -->
<filter>
<!-- 配置过滤器的名字 -->
<filter-name>struts2</filter-name>
<!-- 配置核心过滤器类 -->
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!--配置要拦截的URL,辞去配置全部拦截 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

3.编写action类
Struts2的action类不需要实现任何接口,只要是一个包含execute方法的普通类(POJO)就行;当执行完必要的拦截器,程序会执行execute方法
action类如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class HelloAction {
//定义属性用于获得请求参数
private String name;
private String pass;
public void setName(String name) {
this.name = name;
}
public void setPass(String pass) {
this.pass = pass;
}
//定义action类的execute方法
public String execute()throws Exception{
if("peace".equals(name)&&"123456".equals(pass)){
return "success";

}
else{
return "error";
}
}
}

4.配置struts.xml
在src文件夹右击建立struts.xml文件部署的时候会自动发布到WEB-INF/classes目录下,这是struts默认会加载的文件,用于配置struts2需要调用的action。文件如下:建议直接复制粘贴:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

<?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>

<!-- 配置一个package 必须继承struts-default-->

<package name="struts2" extends="struts-default">

<!-- 配置action,名字hello是访问url使用的:hello.action-->

<action name="hello" class="com.rlovep.hello.HelloAction">

<!-- 如果为success就跳转到success.jsp -->

<result name="success">/success.jsp</result>

<!-- 如果为error就跳转到error.jsp -->

<result name="error">/error.jsp</result>

</action>

</package>

</struts>

5.写jsp页面:此步其实也可以省略;

登陆页面就是简单的表单提交:注意提交的动作需要为hello

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

<%@ 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>用户登陆</title>

</head>

<body>

<!-- 注意提交的动作需要为hello -->

<form action="hello" method="get">

用户名:<input type="text" name="name" /><br/>

密码:<input type="password" name="pass"/>

<input type="submit" value="提交"/>

</form>

</body>

</html>

成功页面和错误页面如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

##成功页面:

<title>success</title>

</head>

<body>

<%

String name=request.getParameter("name");

out.write(name+"登陆成功");

%>

</body>

##错误页面:

<body>

账户名或密码错误

</body>

7.部署运行和测试:

第一种方法:直接在浏览器输入action的请求参数,显示如下:

http://localhost:8080/struts2Demo/hello.action?name=peace&pass=123456

03

第二种方方法:先进入登陆页面,在提交.现实如下:

04

05

账号密码错误的方式:

06

好的本章介绍到这里
来自伊豚wpeace(blog.wpeace.cn)

Peace wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
坚持原创技术分享,您的支持将鼓励我继续创作!