Struts2体验

1.Struts2简介

Struts 2是一个MVC框架,以WebWork框架的设计思想为核心,吸收了Struts 1的部分优点

Struts 2拥有更加广阔的前景,自身功能强大,还对其他框架下开发的程序提供很好的兼容性

 

Struts官网

http://struts.apache.org/

 

apps目录:Struts2示例应用程序

docs目录:Struts2指南、向导、API文档

lib目录:Struts 2的发行包及其依赖包

src目录:Struts 2项目源代码

2.Struts2案例

使用struts2开发步骤:

1.引入相关依赖jar包

2.web.xml文件配置核心过滤器

3.视图层页面

4.控制层Action

5.struts.xml文件的配置

 

1.1登陆案例(零散参数的自动装配)

1.引入相关依赖jar包

复制代码
 1         <dependency>
 2             <groupId>javaee</groupId>
 3             <artifactId>javaee-api</artifactId>
 4             <version>5</version>
 5         </dependency>
 6 
 7         <dependency>
 8             <groupId>org.apache.struts</groupId>
 9             <artifactId>struts2-core</artifactId>
10             <version>2.3.4.1</version>
11         </dependency>
12 
13         <dependency>
14             <groupId>org.apache.struts.xwork</groupId>
15             <artifactId>xwork-core</artifactId>
16             <version>2.3.4.1 </version>
17         </dependency>
复制代码

2.web.xml文件配置核心过滤器

复制代码
1   <filter>
2     <filter-name>struts</filter-name>
3     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
4   </filter>
5   <filter-mapping>
6     <filter-name>struts</filter-name>
7     <url-pattern>/*</url-pattern>
8   </filter-mapping>
复制代码

3.视图层页面

复制代码
 1 <%@ taglib prefix="s" uri="/struts-tags" %>
 2 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 3 <html>
 4 <head>
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 <%--struts标签 --%>
 9 <s:form name="form1" namespace="/" method="POST" action="userAction">
10     用户名:<s:textfield name="username"></s:textfield><br/>
11     密码:<s:password name="password"></s:password><br/>
12     <s:submit value="登录"></s:submit>
13 </s:form>
14 </body>
15 </html>
复制代码

4.控制层Action

复制代码
 1 public class LoginAction implements Action {
 2     private String username;
 3     private String password;
 4     public String execute() throws Exception {
 5         //如果输入的用户名密码是admin则登陆成功,否则登录失败
 6         if (username.equals("admin") && password.equals("admin")){
 7             return SUCCESS;
 8         }else {
 9             return LOGIN;
10         }
11     }
12 
13     public String getUsername() {
14         return username;
15     }
16 
17     public void setUsername(String username) {
18         this.username = username;
19     }
20 
21     public String getPassword() {
22         return password;
23     }
24 
25     public void setPassword(String password) {
26         this.password = password;
27     }
28 }
复制代码

5.struts.xml文件的配置

复制代码
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3         "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4         "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 
 6 <struts>
 7     <package name="default" namespace="/" extends="struts-default">
 8         <!--零散参数的自动装配-->
 9         <action name="userAction" class="cn.happy.controller.LoginAction">
10             <result name="success">
11                 day01/success.jsp
12             </result>
13             <result name="login">
14                 day01/login.jsp
15             </result>
16         </action>
17     </package>
18 </struts>
复制代码

1.2 Struts2各个部件的协作图

 1.3登陆案例加强(javabean自动装配)

Action类:

复制代码
 1 public class LoginBeanAction implements Action,ModelDriven<UserInfo> {
 2     private UserInfo info=new UserInfo();
 3     public String execute() throws Exception {
 4         if (info.getUsername().equals("admin") && info.getPassword().equals("admin")){
 5             //解耦方式获取sesion
 6             //提供了三个Map对象访问request、session、application作用域 通过ActionContext类获取这三个Map对象
 7             Map<String, Object> map = ActionContext.getContext().getSession();
 8             Map<String, Object> mapapplication = ActionContext.getContext().getApplication();
 9             Object request = ActionContext.getContext().get("request");
10             map.put("username",info.getUsername());
11             return SUCCESS;
12         }
13         else {
14             return LOGIN;
15         }
16     }
17 
18     public UserInfo getInfo() {
19         return info;
20     }
21 
22     public void setInfo(UserInfo info) {
23         this.info = info;
24     }
25 
26     public UserInfo getModel() {
27         return info;
28     }
29 }
复制代码

jsp页面

复制代码
 1 <%@ taglib prefix="s" uri="/struts-tags" %>
 2 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 3 <html>
 4 <head>
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 <%--struts标签 --%>
 9 <s:form name="form1" namespace="/" method="POST" action="loginbean">
10     用户名:<s:textfield name="username"></s:textfield><br/>
11     密码:<s:password name="password"></s:password><br/>
12     <s:submit value="登录"></s:submit>
13 </s:form>
14 </body>
15 </html>
复制代码

1.4Struts 2访问Servlet API

在servlet中可以通过servlet API来获取Session,在Struts中如何获取Session呢?

    解析:将用户名放入session 两种方案

1. 与Servlet API解耦的访问方式

    --->方案一:使用ActionContext类获取ServletAPI对象对应的Map对象

    --->方案二:向Action注入ServletAPI对象对应的Map对象

2. 与Servlet API耦合的访问方式

     --->方式一:通过ActionContext的子类ServletActionContext实现

     --->方式二:向Action实例注入Servlet API对象

解耦方式:

方案一:

 

方案二:

 

 

耦合方式

方案一:

 

 

posted @ 2018-02-26 12:22  不羁少年;  阅读(130)  评论(0编辑  收藏  举报