导读
1.Struts2下载配置
2.Struts2的运用
3.基于注解的Struts2
Struts2下载配置
Struts2优势
1.不需要每个请求写一个Servlet类,可以写到一个action类里,集中管理
2.与jsp的交互更为简洁
第一步:
下载Struts2的jar包官网https://struts.apache.org/
下载基本包就可以,然后复制到WEB-INF的lib包下边
第二步:
配置web.xml文件filter
<?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>javaWeb</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<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>
</web-app>
这里注意
第三步:
在src包下边写struts.xml文件
<?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 name="default" namespace="/" extends="struts-default">
<!-- class是调用哪个类,method是调用哪个方法,name是前端访问的url地址 -->
<action name="signIn" method="signIn" class="com.hala.action.SignAction">
<result name="in">/index.jsp</result><!-- result代表出口,出口可以有多个,根据返回内容不同而选择 -->
<result name="out">/main.jsp</result><!-- result中name不写的话,默认为success -->
</action>
<action name="signOut" method="signOut" class="com.hala.action.SignAction"></action>
<!-- 这是动态调用的方式 {1}指的是调用name中第一个* -->
<!-- <action name="sign_*" method="{1}" class="com.hala.action.SignAction"></action> -->
</package>
</struts>
写好前端jsp或者html文件,启动tomcat可以运行了
Struts2的运用
1.属性驱动:运用get,set方法前后端相互传值
2.DomainModel:利用类去传值
3.模型驱动
4.拦截器的使用
使用拦截器主要是在后端进行验证,同时上边get,set传递也运用了拦截器实现
在struts.xml文件中配置,一定要放在所有action上边
基于注解的Struts2
使用注解可以不用struts.xml文件,但要在原来的基础上多加三个jar包(从官方最全的压缩包的lib包下边找),同时web.xml文件的配置也是必要的,如图:
Action类
package com.hala.action;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
@ParentPackage("struts-default")
@Namespace("/")
//下边是全局Results,即这个Action类里所有的方法都可以跳转
@Results({@Result(name="login",location="/login.jsp"),
@Result(name="error",location="/error.jsp")})
public class HelloAction {
@Action(value="test",
results= {@Result(name="index",location="/index.jsp",type="redirect")})
public String test() {
System.out.println("hello");
return "index";
}
}
这里导入包是apache那个
当然也可以结合struts.xml文件写
Struts2中转发和重定向
1.struts2中的转发和重定向是由Result的type的决定的,如果type为dispatcher,则为转发,
如果为redirect,则为重定向,默认是转发.
转发是一次请求,重定向是两次请求,这是他们的本质区别,所以转发地址栏不会变化,重定向会变化,
转发可以在域中携带数据,而重定向不可以
2.Struts2中的dispatcher只能转发到jsp或者HTML等视图层
3.Struts2中想将请求转发到某个Action,可以设定Result的type为chain,组成Action链,其他属性一样,如下图