struts2的简单的编程步骤

1.导入jar包

 

a.struts2-core-2.1.8.1.jar-Struts2核心包,是Struts框架的“外衣。
b.xwork-core-2.1.6.jar-Struts2核心包,是WebWork内核。
c.ognl-2.7.3.jar-用来支持ognl表达式的,类似于EL表达式,功能比EL表达式强大的多。
d.freemarker-2.3.15.jar-freemarker是比jsp更简单好用,功能更加强大的表现层技术,用来替代jsp的。
e.commons-fileupload-1.2.1.jar-用于实现文件上传功能的jar包。


2.web.xml配置struts2前端控制器Filter


配置的代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<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">

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

</web-app>

 

 

3.写action类

 

 action类就是普通的类,属性有get和set方法,就可以自动传递。
 需要有个execute()方法,返回"success"和"fail"
 


4.src下建立struts.xml配置文件

 

配置简单例子如下:
<struts>
    <package name="hellopkg" extends="struts-default"  namespace="/day01">
        <action name="welcome"  class="action.WelcomeAction">
            <result name="success">/jsp/welcome.jsp</result>
            <result name="fail">/jsp/nameform.jsp</result>
        </action>
    </package>
</struts>

 

5.jsp页面(用el表达式显示数据)

 

<%@ 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>
name的值是:${name }
</body>
</html>

 

6.(补充1)Struts2提供的方便之处

 

a.数据的自动的封装
根据页面组件的name属性,自动封装到Action中对应的name属性中
在Jsp页面<input name=”name” type=”text”/>
在action中会自动给属性private String name 赋值。但是注意要有name对应的getter和setter方法。
b.数据的自动的传递
Action中得属性会在jsp页面可以直接用EL表达式拿到
Action中属性private String name;
在jsp页面上可以直接${name}的到对应的值

 

7.(补充2)struts.xml配置中的<package><namespace><result>

 

A.<package>作用是为<action>分组,<struts>标签下可有多个<package>,下列是对<package>下属性的介绍:
1)name="helloworld"
唯一的标识,表示包名为helloworld
2)extends="struts-default"
继承的包名,一般继承Struts2默认提供的struts-default包,该包中定义了很多Struts2应用必须的组件(比如:拦截器);
该package声明的位置在struts2-core-2.1.8.jar/struts-default.xml文件中
3)namespace用来设置该包中的action的地址的命名空间。
namespace="/" 表示根命名空间,Action的访问路径如下即可:
http://localhost:8080/struts01_1/welcome.action
如果namespace="/day01"之后,Action访问路径为:
http://localhost:8080/struts01_1/day01/welcome.action
B.<action>作用是指明每个请求对应的Action类之间的对应关系,<package>下可有多个<action>。
下面是<action>标签的属性介绍:
1)name="welcome"
表示请求的名字为welcome(即welcome.action)
2)class="com.tarena.action.WelcomeAction"
指定了对应的Action类。
3)method="xxx"
用于指定在对应的类中要执行的方法名,该方法的返回值必须是String类型(规定)
public String xxx(){......}
<action>标记可以增加method=""属性,用来指定执行哪个方法,如果没有这个属性,默认执行execute()方法。
C.<result>
1)name="success"
该result的名称,Action返回哪一个result的name值,意味着要转发到哪一个result 所对应的JSP地址。

 


8.(补充3)解决用户绕过Action直接访问jsp,

 

如何解决用户绕过ActionServlet,直接访问jsp文件的问题。
8.1.将所有jsp文件拷贝到WEB-INF目录下。
因为WEB-INF目录中的内容不能直接访问,但能转发过来
8.2.<action name="nameform">中只有name属性,没有class属性,
Struts框架会默认为该<action>添加一个class,
作用是转发到对应的<result name="success">中指定的页面。

 

9.使用JSTL在页面显示数据

 

jsp中的设置如下:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <link type="text/css" rel="stylesheet" media="all" href="../styles/global.css" />
        <link type="text/css" rel="stylesheet" media="all" href="../styles/global_color.css" />
    </head>
    <body>
 
 
 </body>
 </html>

 

 

 

 

 

 

 

 

 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值