Struts2的配置和使用s标签库?

一、struts2的定义:

   是一个基于MVC设计模式的Web应用框架,本质上相当于一个servlet,在MVC设计模式中,作为控制器(Controller)来建立模型与视图的数据交互。

   使用OGNL作为默认的表达式语言,OGNL是一种对象图导航语言,以任意一个对象为根,通过OGNL存取对象的任意属性,调用对象的方法,还可以访问这个对象关联的其它对象。

二、struts2的工作原理:

   客户端发送一个请求,经过web.xml配置的拦截器,根据struts.xml的配置,找到对应的Action和方法,然后根据struts.xml配置找到对应的返回结果result,并跳转到相应页面,最后返回响应给客户端。

三、struts2的两大核心(值栈、拦截器):

值栈:struts2本身的一种存储机制,类似于域对象,可以存值和取值。每次请求都会创建一个Action对象,但是action对象有且只有一个值栈对象。

拦截器:

   1、默认拦截器:原理:aop思想,不改变源代码情况下,扩展功能。

   2、系统拦截器:token令牌(防止数据重复提交)。

   3、自定义拦截器:自定义操作日志拦截器。

四、struts2的用处:

   用于接受页面信息然后通过内部处理,将结果返回。

五、struts2的使用流程:
   1、导入jar包
   2、配置核心过滤器
   3、创建Action,书写代码并配置返回值
   4、配置struts2的配置文件

六、代码实现:

  1、导入jar包:

        <!--添加struts2的依赖-->
        <dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-core</artifactId>
			<version>2.3.14</version>
		</dependency>

2、配置核心过滤器(在web.xml文件里):

<!--配置struts2的拦截器-->  
<filter>
    <filter-name>struts</filter-name>
    <filter- 
    class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>struts</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

3、创建Action,书写代码并配置返回值(类继承ModelDriven(模型封装))

public class UserAction extends ActionSupport implements ModelDriven<User> {

	/**
	 * @Fields serialVersionUID : TODO(描述这个变量表示什么)
	 */
	private static final long serialVersionUID = 5021720486258661556L;

    /**
	 * 实例化对象
	 */
    private User user = new User();

	@Override
	public User getModel() {
		return user;
	}

	/**
	 * 
	 * @Title: login
	 * @Description: 登录的方法
	 * @return
	 * @return String
	 */
	public String login() {
		// 调用用户表的dao包
		IUserDao iud = new UserDaoImpl();
        //可直接放入对象,不需要赋值
		User u = iud.findByColumn(user);

		if (u != null) {
			return SUCCESS;
		}
		return ERROR;
	}

}

4.1、配置struts2的配置文件(文件名必须为struts.xml)————(无法保证struts.xml是最新的,所以不建议把所有配置写到一个struts2的文件里):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>

	<!-- 设置默认的语言版本 -->
	<constant name="struts.i18n.encoding" value="UTF-8" />
	<!-- 打开开发模式显示详细的错误信息 -->
	<constant name="struts.devMode" value="true" />
	<!-- 热加载struts。xml的配置文件 -->
	<constant name="struts.configuration.xml.reload" value="true" />
	<!-- 是否支持动态方法的调用 -->
	<constant name="struts.enable.DynamicMethodInvocation" value="true" />

    <!--name包名,extends属性值必须为struts-default,namespace访问路径的文件包名,可不加,默 
     认为"/"-->
	<package name="test" extends="struts-default" namespace="/test">
		<!-- 开启动态方法的调用(匹配) -->
		<global-allowed-methods>regex:.*</global-allowed-methods>

		<!-- 动态执行方法 -->
		<!-- <action name="user_*" class="com.zking.action.UserAction" method="{1}"> 
			<result name="success" type="redirect">/index.jsp</result> 
            <result name="error" type="redirect">/login.jsp</result> </action> -->

		<!-- 登录的方法 -->
		<action name="user_login" class="com.zking.action.UserAction"
			method="login">
             <!--type:是否重定向,默认为转发-->
			<result name="success" type="redirect">/index.jsp</result>
			<result name="error" type="redirect">/login.jsp</result>
		</action>

	</package>
</struts>

4.2、配置struts2的配置文件(文件名必须为struts.xml)————(把配置文件分开写):

    4.2.1、创建一个名为struts.xml(固定名称)的文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
	<!-- 引用基础的xml文件 -->
	<include file="struts-base.xml"></include>
	<!-- 引用用户表的xml文件 -->
	<include file="struts-smbmsUser.xml"></include>
</struts>

      4.2.2、创建一个名为struts-base.xml(自定义名称)的文件(主要是放入公共的配置文件信息):

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
	<!-- 设置默认的语言版本 -->
	<constant name="struts.i18n.encoding" value="UTF-8" />
	<!-- 打开开发模式显示详细的错误信息 -->
	<constant name="struts.devMode" value="true" />
	<!-- 热加载struts。xml的配置文件 -->
	<constant name="struts.configuration.xml.reload" value="true" />
	<!-- 是否支持动态方法的调用 -->
	<constant name="struts.enable.DynamicMethodInvocation" value="true" />

    <!--name 包名(自定义),extends属性值必须为struts-default-->
	<package name="base" extends="struts-default">
		<!-- 开启动态方法的调用(匹配) -->
		<global-allowed-methods>regex:.*</global-allowed-methods>

	</package>
	
</struts>

         4.2.3、创建一个名为struts-smbmsUser.xml(自定义名称)的文件(这里可以有多个,一般根据模块分):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
    <!--name包名(自定义),extends属性值为基础文件的name值-->
	<package name="user" extends="base">

		<!-- 用户表登录的方法 -->
		<action name="SmbmsUserAction_userLogin" 
                  class="com.zking.struts2_project.action.SmbmsUserAction"
			method="userLogin">
            <!--跳转页面    type:是否重定向,默认为转发-->
			<result name="success">/index.jsp</result>
			<result name="error">/login.jsp</result>
		</action>

	</package>
</struts>

5、页面————使用s标签做到登录(要引入s标签库):

<!--action访问路径,为struts2配置文件的action标签的name属性值   theme是否需要样式-->
<s:form action="SmbmsUserAction_userLogin" method="post" theme="simple">
                    <!--name属性值必须跟实体类的属性一致,不然无法映射值-->
					<s:textfield name="userName"></s:textfield><br/>
					<s:password name="userPassword"></s:password><br/>
					<s:submit value="登录"></s:submit>
					<s:submit value="取消"></s:submit>
</s:form>

补充:

struts1和struts2的区别?
1、线程模型方面:Struts1的Action类是单例模式,一个Action的实例处理所有的请求,必须设计成线程安全的,Struts2则为每一个请求产生一个实例,不需要线程安全;
2、Servlet依赖方面:Struts1的Action类依赖于Servlet API,Struts2则可以不依赖于任何容器,可以单独测试;
3、封装请求参数:Struts1中强制使用ActionForm对象封装请求的参数。Struts2可以选择使用POJO类来封装请求的参数,或者直接使用Action的属性。
4、表达式语言方面:Struts1绑定了JSTL,为页面的编写带来方便,Struts2整合了ONGL,也可以使用JSTL,因此,Struts2下的表达式语言更加强大;
5、绑定值到视图技术:Struts1使用标准的JSP,Struts2使用“ValueStack”技术。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在 JSP 项目配置 Struts2,需要遵循以下步骤: 1. 引入 Struts2 :将 Struts2 添加到项目的 classpath 。可以从 Struts2 官网上下载最新版本的文件。 2. 配置 web.xml:在 web.xml 文件添加 Struts2配置信息。可以参考以下示例: ``` <web-app> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.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> ``` 3. 配置 struts.xml:创建一个名为 struts.xml 的配置文件,并将其放置在项目的类路径下。该文件包含了 Struts2 框架的配置信息,例如拦截器、Action 等。可以参考以下示例: ``` <struts> <package name="default" extends="struts-default"> <action name="hello" class="com.example.HelloAction"> <result name="success">/hello.jsp</result> </action> </package> </struts> ``` 在上面的示例,定义了一个名为 "hello" 的 Action,它的类为 com.example.HelloAction,并且成功时返回 /hello.jsp 页面。 4. 创建 Action 类:创建一个 Java 类来处理请求并返回响应。可以继承 ActionSupport 类,该类提供了一些常用的方法,例如获取请求参数、设置响应结果等。可以参考以下示例: ``` public class HelloAction extends ActionSupport { private String message; public String execute() { message = "Hello, world!"; return SUCCESS; } public String getMessage() { return message; } } ``` 在上面的示例,定义了一个名为 "message" 的属性和一个名为 "execute" 的方法,该方法返回 SUCCESS 常量。 5. 创建 JSP 页面:创建一个 JSP 页面来显示响应结果。可以参考以下示例: ``` <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>Hello, world!</title> </head> <body> <h1><s:property value="message"/></h1> </body> </html> ``` 在上面的示例使用 Struts2 标签的 s:property 标签来显示 "message" 属性的值。 完成上述步骤后,就可以在 JSP 项目使用 Struts2 来处理请求和返回响应了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值