初识Struts2

时间:2022-03-08 02:22:00

一、Struts2入门案例

①引入jar包

初识Struts2

②在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> <!-- 修改文件 tomact不用重启 -->
<constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default">
<!-- 第一个action -->
<action name="HelloWordAction" class="cn.happy.action.HelloWordAction">
<result name="success">index.jsp</result>
</action> </package> </struts>

dtd约束条件查找路径:

初识Struts2

③创建HelloWordAction类,实现Action接口,不仅定义了public String execute(),还提供了5个字符串类型的静态常量。如

success、none、error、input、login

public class HelloWordAction implements Action{

     private String name;
public String execute() throws Exception {
setName("Hello"+name);
return "success";
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}

④配置文件web.xml。将全部请求定位到指定的Struts 2过滤器中

初识Struts2

index.jsp页面:

并引用 taglib指令<%@taglib uri="/struts-tags" prefix="s" %>

注:form表单的action属性名应该和struts.xml的action一致

<div>
<h1>
<s:property value="name"/> </h1>
</div> <div>
<form action="HelloWordAction" method="post">
请输入你的姓名:
<input name="name" type="text"><br/><br/>
<input type="submit" value="提交"> </form>
</div>

实现效果:

初识Struts2


二、实现自动装配,将action类中的属性 包装到一个实体类User。然后在action类中定义私有属性User,进行封装。在index.jsp页面即可使用User对象点出其属性

初识Struts2


三、登录案例:

初识Struts2

实现效果:

初识Struts2

初识Struts2


四、如何使页面上还是username,也能实现 自动装配呢?[模型驱动--ModelDriven]

让Action实现一个ModelDriven<User>,其次手动实例化User对象,并实现该方法,返回user

初识Struts2

初识Struts2


五、Struts2访问ServletAPI对象获取Session。

分为两类:①解耦的访问方式 ②耦合的访问方式

关键代码:

1、耦合一。

获取到session并返回一个HttpSession.以及session.setAttribute方法获取到username

   //耦合
private HttpServletRequest request;
HttpSession session2 = ServletActionContext.getRequest().getSession();
session2.setAttribute("uname", user.getUsername());

2、耦合二。

实现ServletRequestAware接口,并重写其方法,定义一个Request属性并进行封装

初识Struts2

request.getSession().setAttribute("uname", user.getUsername());

  

3、解耦合一

使用ActionContex类获取ServletAPI对象对应的Map对象

private Map<String, Object> map;
Map<String, Object> session = ActionContext.getContext().getSession();
session.put("uname",user.getUsername());

 初识Struts2

4、解耦合二  注入[IOC思想]。实现SessionAware接口,获取到Map集合

map.put("uname", user.getUsername());

 初识Struts2


六、struts2常用表单标签

初识Struts2