struts基础文档格式.docx

上传人:b****6 文档编号:18804199 上传时间:2023-01-01 格式:DOCX 页数:26 大小:45.62KB
下载 相关 举报
struts基础文档格式.docx_第1页
第1页 / 共26页
struts基础文档格式.docx_第2页
第2页 / 共26页
struts基础文档格式.docx_第3页
第3页 / 共26页
struts基础文档格式.docx_第4页
第4页 / 共26页
struts基础文档格式.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

struts基础文档格式.docx

《struts基础文档格式.docx》由会员分享,可在线阅读,更多相关《struts基础文档格式.docx(26页珍藏版)》请在冰豆网上搜索。

struts基础文档格式.docx

3.开发action

4.配置action

src/struts.xml

1.引入8个jar文件

2.web.xml

<

!

--引入struts核心过滤器-->

<

filter>

<

filter-name>

struts2<

/filter-name>

filter-class>

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter<

/filter-class>

/filter>

filter-mapping>

url-pattern>

/*<

/url-pattern>

/filter-mapping>

3.开发Action

//开发action:

处理请求

publicclassHelloActionextendsActionSupport{

//处理请求

publicStringexecute()throwsException{

System.out.println("

访问到了action,正在处理请求"

);

调用service"

return"

success"

;

}

}

4.配置action:

?

xmlversion="

1.0"

encoding="

UTF-8"

>

DOCTYPEstrutsPUBLIC

"

-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"

http:

//struts.apache.org/dtds/struts-2.0.dtd"

struts>

packagename="

xxxx"

extends="

struts-default"

actionname="

hello"

class="

cn.itcast.action.HelloAction"

method="

execute"

resultname="

/success.jsp<

/result>

/action>

/package>

/struts>

3.Struts框架学习

a.框架学习概述

SSH框架在mvc模式的的位置作用:

框架:

软件中的框架,是一种半成品;

我们项目开发需要在框架的基础上进行!

因为框架已经实现了一些功能,这样就可以提高开发效率!

b.Struts2框架

Struts1最早的一种基于mvc模式的框架;

Struts2是在Struts1的基础上,融合了xwork的功能;

也可以说,Struts2=struts1+xwork

Struts2框架预先实现了一些功能:

1.请求数据自动封装

2.文件上传的功能

3.对国际化功能的简化

4.数据效验功能

……………….

c.Struts2开发流程:

版本:

2.3

Ø

引入jar文件

commons-fileupload-1.2.2.jar【文件上传相关包】

commons-io-2.0.1.jar

struts2-core-2.3.4.1.jar【struts2核心功能包】

xwork-core-2.3.4.1.jar【Xwork核心包】

ognl-3.0.5.jar【Ognl表达式功能支持表】

commons-lang3-3.1.jar【struts对java.lang包的扩展】

freemarker-2.3.19.jar【struts的标签模板库jar文件】

javassist-3.11.0.GA.jar【struts对字节码的处理相关jar】

配置web.xml

Tomcat启动-加载自身web.xml---加载所有项目的web.xml

通过在项目的web.xml中引入过滤器,

-Struts的核心功能的初始化,通过过滤器完成

filter【

init/启动执行

doFilter/访问执行

destroy

struts2-core-2.3.4.1.jar

StrutsPrepareAndExecuteFilter即为核心过滤器

注意:

使用的struts的版本不同,核心过滤器类是不一样的!

开发Action

1.action类,也叫做动作类;

一般继承ActionSupport类

即处理请求的类(struts中的action类取代之前的servlet)

2.action中的业务方法,处理具体的请求

-必须返回String

方法不能有参数

publicStringexecute()throwsException{}

配置struts.xml

c.Struts2执行流程

服务器启动:

1.加载项目web.xml

2.创建Struts核心过滤器对象,执行filterinit()

struts-default.xml,核心功能的初始化

struts-plugin.xml,struts相关插件

struts.xml用户编写的配置文件

访问:

3.用户访问Action,服务器根据访问路径名称,找对应的aciton配置,创建action对象

4.执行默认拦截器栈中定义的18个拦截器

5.执行action的业务处理方法

struts-default.xml,详解

目录:

struts2-core-2.3.4.1.jar/struts-default.xml

内容:

1.bean节点指定struts在运行的时候创建的对象类型

2.指定struts-default包【用户写的package(struts.xml)一样要继承此包】

packagestruts-default包中定义了:

a.跳转的结果类型

dispatcher转发,不指定默认为转发

redirect重定向

redirectAction重定向到action资源

stream(文件下载的时候用)

b.定义了所有的拦截器

定义了32个拦截器!

为了拦截器引用方便,可以通过定义栈的方式引用拦截器,

此时如果引用了栈,栈中的拦截器都会被引用!

defaultStack

默认的栈,其中定义默认要执行的18个拦截器!

c.默认执行的拦截器栈、默认执行的action

<

default-interceptor-refname="

defaultStack"

/>

default-class-refclass="

com.opensymphony.xwork2.ActionSupport"

/>

interceptor

name="

prepare"

class="

com.opensymphony.xwork2.interceptor.PrepareInterceptor"

params"

com.opensymphony.xwork2.interceptor.ParametersInterceptor"

拦截器(先睹为快):

拦截器功能与过滤器功能类似。

区别:

共同点:

都拦截资源!

区别:

过滤器,拦截器所有资源都可以;

(/index.jsp/servlet/img/css/js)

拦截器,只拦截action请求。

拦截器是struts的概念,只能在struts中用。

过滤器是servlet的概念,可以在struts项目、servlet项目用。

//面试题:

拦截器什么时候执行?

(访问/启动)先执行action类创建,先执行拦截器?

//--》1.用户访问时候按顺序执行18个拦截器;

//---》2.先执行Action类的创建,再执行拦截器;

最后拦截器执行完,再执行业务方法

d.共性问题

问题1:

Struts.xml配置文件没有提示

解决a:

找到struts-2.0.dtd文件,拷贝到某个目录:

d:

/dtd/..(不要用中文目录)

让MyEclipse关联到上面dtd文件,

windowspreferences-搜索xmlcatalog

配置:

Location:

上面配置的dtd目录

Key:

-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN

解决b:

或者,

让机器连接互联网,工具会自动下载dtd文件,缓存到MyEclipse中!

1

%@pagelanguage="

java"

import="

java.util.*"

pageEncoding="

%>

DOCTYPEHTMLPUBLIC"

-//W3C//DTDHTML4.01Transitional//EN"

html>

head>

title>

index<

/title>

metahttp-equiv="

pragma"

content="

no-cache"

cache-control"

expires"

0"

keywords"

keyword1,keyword2,keyword3"

description"

Thisismypage"

--

linkrel="

stylesheet"

type="

text/css"

href="

styles.css"

-->

/head>

body>

欢迎你,${sessionScope.userInfo.name}

/body>

/html>

2

login<

formaction="

${pageContext.request.contextPath}/login.action"

name="

frmLogin"

method="

post"

用户名:

inputtype="

text"

name"

br/>

密码:

pwd"

submit"

value="

登陆"

/form>

3

${pageContext.request.contextPath}/register.action"

frmRegister"

用户名:

注册"

Dao

packagecn.itcast.dao;

importcn.itcast.entity.User;

publicclassUserDao{

//模拟登陆

publicUserlogin(Useruser){

if("

tom"

.equals(user.getName())&

&

888"

.equals(user.getPwd())){

//登陆成功

returnuser;

}

//登陆失败

returnnull;

//模拟注册

publicvoidregister(Useruser){

注册成功:

用户,"

+user.getName());

Entity

packagecn.itcast.entity;

publicclassUser{

privateStringname;

privateStringpwd;

publicStringgetName(){

returnname;

publicvoidsetName(Stringname){

this.name=name;

publicStringgetPwd(){

returnpwd;

publicvoidsetPwd(Stringpwd){

this.pwd=pwd;

Framework

ActionServlet

packagecn.itcast.framework;

importjava.io.IOException;

importjava.lang.reflect.Method;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importcn.itcast.framework.bean.ActionMapping;

importcn.itcast.framework.bean.ActionMappingManager;

importcn.itcast.framework.bean.Result;

/**

*核心控制器,此项目只有这一个servlet

*1.拦截所有的*.action为后缀的请求

*2.请求:

//localhost:

8080/mystruts/login.action

*http:

8080/mystruts/register.action

*@authorJie.Yuan

*

*/

publicclassActionServletextendsHttpServlet{

privateActionMappingManageractionMappingManager;

//只执行一次(希望启动时候执行)

@Override

publicvoidinit()throwsServletException{

1111111111111111ActionServlet.init()"

actionMappingManager=newActionMappingManager();

//http:

protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

try{

//1.获取请求uri,得到请求路径名称【login】

Stringuri=request.getRequestURI();

//得到login

StringactionName=uri.substring(uri.lastIndexOf("

/"

)+1,uri.indexOf("

.action"

));

//2.根据路径名称,读取配置文件,得到类的全名【cn..action.LoginAction】

ActionMappingactionMapping=actionMappingManager.getActionMapping(actionName);

StringclassName=actionMapping.getClassName();

//当前请求的处理方法【method="

login"

Stringmethod=actionMapping.getMethod();

//3.反射:

创建对象,调用方法;

获取方法返回的标记

Class<

clazz=Class.forName(className);

Objectobj=clazz.newInstance();

//LoginActionloginAction=newLoginAction();

Methodm=clazz.getDeclaredMethod(method,HttpServletRequest.class,HttpServletResponse.class);

//调用方法返回的标记

StringreturnFlag=(String)m.invoke(obj,request,response);

//4.拿到标记,读取配置文件得到标记对应的页面、跳转类型

Resultresult=actionMapping.getResults().get(returnFlag);

//类型

Stringtype=result.getType();

//页面

Stringpage=result.getPage();

//跳转

if("

redirect"

.equals(type)){

response.sendRedirect(request.getContextPath()+page);

}else{

request.getR

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 财务管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1