Struts2 入门
一、Struts2入门案例
①引入jar包
②在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约束条件查找路径:
③创建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过滤器中
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>

实现效果:
二、实现自动装配,将action类中的属性 包装到一个实体类User。然后在action类中定义私有属性User,进行封装。在index.jsp页面即可使用User对象点出其属性
三、登录案例:
实现效果:
四、如何使页面上还是username,也能实现 自动装配呢?[模型驱动--ModelDriven]
让Action实现一个ModelDriven<User>,其次手动实例化User对象,并实现该方法,返回user
五、Struts2访问ServletAPI对象获取Session。
分为两类:①解耦的访问方式 ②耦合的访问方式
关键代码:
1、耦合一。
获取到session并返回一个HttpSession.以及session.setAttribute方法获取到username
1
2
3
|
//耦合<br> private HttpServletRequest request; HttpSession session2 = ServletActionContext.getRequest().getSession(); session2.setAttribute( "uname" , user.getUsername()); |
2、耦合二。
实现ServletRequestAware接口,并重写其方法,定义一个Request属性并进行封装
1
|
request.getSession().setAttribute( "uname" , user.getUsername()); |
3、解耦合一
使用ActionContex类获取ServletAPI对象对应的Map对象
1
2
|
private Map<String, Object> map;<br>Map<String, Object> session = ActionContext.getContext().getSession(); session.put( "uname" ,user.getUsername()); |
4、解耦合二 注入[IOC思想]。实现SessionAware接口,获取到Map集合
1
|
map.put( "uname" , user.getUsername()); |
六、struts2常用表单标签
Struts2 入门的更多相关文章
- Struts2入门3 深入学习
Struts2入门3 深入学习 处理结果和异常 前言: Struts学习的差不多了,还有最后的一点就收官了就是结果处理和异常处理.前面学习Struts主要围绕就是Action以及struts.xml配 ...
- Struts2入门2 Struts2深入
Struts2入门2 Struts2深入 链接: http://pan.baidu.com/s/1rdCDh 密码: sm5h 前言: 前面学习那一节,搞得我是在是太痛苦了.因为在Web项目中确实不知 ...
- Struts2入门1 Struts2基础知识
Struts2入门1 Struts2基础知识 20131130 代码下载: 链接: http://pan.baidu.com/s/11mYG1 密码: aua5 前言: 之前学习了Spring和Hib ...
- struts2入门程序
struts2入门程序 1.示例 搭建编程环境就先不说了,这里假设已经搭建好了编程环境,并且下好了strut2的jar包,接下来程序. 1.1 新建web项目 点击File->New->D ...
- struts2框架(1)---struts2入门
struts2框架 如果你之前在MVC模式的时候一直都是通过servlet,获取和返回数据,那么现在开始学习struts2框架, Struts是一个实现MVC设计模式的优秀的框架.它的许多优点我就不说 ...
- [java]struts2入门
摘要 本文是struts2入门,配置教程.如何在IntelJ Idea中进行手动配置.在使用idea新建struts2web项目的时候,在下载jar包的过程中,下载失败,没办法就直接手动进行下载jar ...
- ---web模型 --mvc和模型--struts2 入门
关于web模型: 早期的web 应用主要是静态页丽的浏览〈如新闻的制监),随着Internet的发展,web应用也变得越来越复杂,不仅要 和数据库进行交互 ,还要和用户进行交互,由此衍生了各种服务器端 ...
- Struts2入门示例(Myeclipse)
1.新建Web项目在lib导入struts-2.3.37核心基础jar包 2.在WebRoot新建2个JSP demo1.jsp <%@ page language="java&quo ...
- Struts2入门(六)——国际化
一.前言 1.1.国际化简介 国际化是指应用程序在运行的时候,根据客户端请求来自的国家地区.语言的不同而显示不同的界面(简单说就是根据你的地区显示相关地区的语言,如果你现在在英国,那么显示的语言就是英 ...
随机推荐
- nginx.conf
#user nobody;worker_processes 4; #nginx进程数,建议设置为等于CPU总核心数 #error_log logs/error.log;#error_log logs/ ...
- Eclipse中Python开发环境搭建
Eclipse中Python开发环境搭建 目 录 1.背景介绍 2.Python安装 3.插件PyDev安装 4.测试Demo演示 一.背景介绍 Eclipse是一款基于Java的可扩展开发平台. ...
- Java--自定义Class并且在内存中编译,加载,实例化
本文的目的: 使用者在程序运行期间,可以动态的写Java Class,不需要生成任何.Class文件就可以完全在内存中编译,加载,实例化. 1.需要用到的组件介绍 1)JavaCompiler:用于编 ...
- HTML5 Canvas眨眼睛动画
效果请看: http://keleyi.com/a/bjad/p9exlcwi.htm 请使用支持HTML5的浏览器查看效果. 以下是代码: <html> <body> < ...
- 3D Banner(jQuery)
1.这是用面向对象的思想去动态生成banner的简易流程,用到一个javaScript框架jQuer: 2.将代码黏贴成html文件,直接用浏览器打开即可: 3.layer属于弹窗提示类插件,可能需要 ...
- sqlite 数据类型
title: SQLITE 数据类型date: 2015-11-20 20:30:52categories: IOS tags: sqlite数据类型 小小程序猿我的博客:http://daycodi ...
- Android Studio调试方法学习笔记
(注:本人所用Android Studio的Keymap已设为Eclipse copy) 1.设置断点 只有设置断点,才好定位要调试什么地方,否则找不到要调试的地方,无法调试.(调试过程中也可以增加断 ...
- synthesize 与dynamic的区别
官方文档解释: @synthesize will generate getter and setter methods for your property. @dynamic just tells t ...
- PHP(第一天)
<?php // $name='lisi'; // $age =18; //$bol =true; //$bol =false; // echo ($bol); //echo ('name is ...
- python之选课系统详解[功能未完善]
作业需求 思路:1.先写出大体的类,比如学校类,学生类,课程类-- 2.写出类里面大概的方法,比如学校类里面有创建讲师.创建班级-- 3.根据下面写出大致的代码,并实现其功能 遇到的困 ...