码迷,mamicode.com
首页 > 系统相关 > 详细

struts.serve.static.browserCache

时间:2015-09-22 21:50:49      阅读:401      评论:0      收藏:0      [点我收藏+]

标签:

(一)、Struts第一天

1. JavaWeb知识回顾

n 客户端编程

HTLM/CSS/JS

n XML技术

会写XML

* 基本语法

* DTD

* Schema

会读XML

* Dom4J读取XML

 

n Servlet/JSP编程

JavaWeb开发,开发web网站!

ServletApi !

几个接口的用法!

面向接口编程!

 

n 数据库

MySQL数据库!

CRUD语法!

 

n Jdbc 编程

JdbcApi 接口!

 

n JavaWeb增强

过滤器、Listener、文件上传&下载、国际化、邮件!

 

 

 

n 最重要的内容,

基于MVC模式的开发!

熟练写出CRUD案例!

 

 

目标:

自定义一个基于MVC模式的通用程序

Struts2框架

 

 

 

2. 自定义一个基于MVC模式的通用程序

目标:项目中只要一个Servlet!处理所有请求!  (或者,只要一个过滤器!)

 

1) MVC模式

Model    模型     (bean/dao/service)

View     视图     (jsp)

Control   控制器   (servlet)

总结:

Servlet充当控制器!

1. 获取请求数据封装

2. 调用Service,处理业务逻辑操作

3. 响应

2) 分析

 

 

技术分享 

3) 实现

步骤:

login.jsp              登陆页面

register.jsp            注册页面

UserService           处理登陆、注册的业务逻辑类 (tom/888)

LoginServlet.java       

RegisterServlet.java

 

规则:

登陆成功,首页!(index.jsp)

注册成功,  

--àlogin.jsp

--à首页!  (注册成功,改为跳转到首页,不用改代码!怎么做?)

优化:

1. 给Servlet写一个助手类,分担servlet中业务操作

  一个Servlet,对应一个Action类!

 

 

完整实现:(代码学员补充:)

 

 

 

 

 

 

 

 

 

 

 

 

 

总结:

基于MVC模式的应用程序!(小应用框架!)

  有很多种写法,且每个人写的程序都不一样!不利于项目团队合作!

--à

规范开发: 基于MVC模式的开发!

   (apache提供了Struts组件,简化mvc模式的项目开发!)

 

3. Hello Struts!

Struts版本:2.3

 

开发步骤:

ü 下载组件,引入jar

www.apache.org  官网

8个

ü 配置web.xml

<!-- 配置Struts核心过滤器 -->

<filter>

<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

 

 

ü 写Action

// 写Action

public class HelloAction{

// 处理请求代码!

public String execute() {

System.out.println("HelloAction.execute()");

return "success";

}

public String add() {

System.out.println("HelloAction.add()");

return "add";

}

}

 

ü 配置Action

配置路径: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="test1234" extends="struts-default">

<!-- action: 配置访问路径与处理action类的映射关系! -->

<action name="hello" class="cn.itcast.action.HelloAction" method="execute">

<result name="success">/index.jsp</result>

</action>

<!-- http://localhost:8080/day27_struts01/add -->

<!-- http://localhost:8080/day27_struts01/add.action -->

<action name="add" class="cn.itcast.action.HelloAction" method="add">

<result name="add">/add.jsp</result>

</action>

</package>

 

</struts>

 

 

 

4. Struts框架

框架

框架,软件的半成品,项目开发,可以在框架基础上进行,提高开发效率!

框架,

都会预先实现一些通用功能,使用框架直接应用这些通用功能而不用重新实现!

 

框架在项目分层中作用:

技术分享 

 

 

Struts2框架

ü 概念

基于MVC模式的应用层框架技术!

Struts2主要是通过Action动作类,处理请求!

(与传统的servlet开发相比,只需要写Action类即可!用Action取代之前的servlet开发!)

(Struts是对servletApi进行的封装!)

 

Struts2功能的引入,

是通过核心过滤器完成的!

如果想用struts的任何功能,必须经过核心过滤器!(被过滤器拦截!)

(struts提供的标签的访问,要先经过核心过滤器!)

 

ü Struts2的发展

Struts2=Struts1 + xwork

 

源码分类:

org.apache.struts2                 struts2核心包

com.opensymphony.xwork2          xwork核心包

学习版本: Strtus2.3

 

公用组件学习方式:

1.  下载组件源码,项目中引入jar文件!

2.   配置

3.   Api

 

ü 搭建struts环境

步骤:

1. 引入jar包

struts2-core-2.3.4.1.jar                    struts核心功能

xwork-core-2.3.4.1.jar                     webwork核心功能  

ognl-3.0.5.jar                            Ognl表达式语言支持

commons-fileupload-1.2.2.jar               struts对文件上传的支持              

commons-io-2.0.1.jar

 

commons-lang3-3.1.jar                   对java.lang包的扩展!     

freemarker-2.3.19.jar                    标签库模板

javassist-3.11.0.GA.jar                    struts对字节码处理!

 

 

 

2. web.xml配置核心过滤器

核心过滤器:StrutsPrepareAndExecuteFilter

方式:

ctrl + shift   +  R   查看工程中的源码

ctrl + shift   +  T   查看jar文件中的源码!

 

 

3. 写Action类

Struts提供了一些功能,方便开发!

例如:文件上传、请求数据封装!

封装请求数据,方式1:

Register.jsp

<body>

   <form action="${pageContext.request.contextPath }/register.action" method="post">

   注册用户:<input type="text" name="userName">  <br/>

   注册密码:<input type="text" name="pwd">  <br/>

  

   <input type="submit" value="注册!">

  

   </form>

  </body>

RegisterAction

public class UserAction extends ActionSupport {

// 封装请求数据,方式1:

private String userName;

     // request.getParameter(“userName”)

    // 把值作为方法参数传入!

public void setUserName(String userName) {

this.userName = userName;

}

private String pwd;

public void setPwd(String pwd) {

this.pwd = pwd;

}

 

@Override

public String execute() {

System.out.println(userName + "\t" + pwd);

return "success";

}

}

 

 

封装请求数据,方式2:

注册用户:<input type="text" name="user.userName">  <br/>

   注册密码:<input type="text" name="user.pwd">  <br/>

public class UserAction extends ActionSupport {

// 封装请求数据,

private User user;

public void setUser(User user) {

this.user = user;

}

// 注意:如果是基本类型只用给set方法即可;  如果是对象,必须给set和get!

public User getUser() {

return user;

}

}

 

 

 

4. 配置struts.xml, 配置action!

 

访问:

1. struts2默认访问后缀是.action最为后缀

2. 默认执行的方法是execute!

 

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>

 

<!-- 

1. package   包

         作用: 管理action或管理路径的作用! 

   name   

    表示包名称! 作用,被其他包继承!

    <package name="base" extends="struts-default"></package>

<package name="config" extends="base">

    包名不能重复!

   extends 

    当前包表必须继承struts-default包!

    (struts-default.xml 中定义了这个包!)

   abstract="true"

    抽象包中不能有action配置!主要被其他包继承的!

   namespace

    名称空间,管理路径!作为路径的一部分!

    默认值:/

    访问路径 = namespace  + actionName

    举例:http://localhost:8080/day27_struts01/user/update.action

   

    路径匹配原则:

    http://localhost:8080/day27_struts01/user/a/b/c/update.action   OK

http://localhost:8080/day27_struts01/user/a/b/update.action     OK

http://localhost:8080/day27_struts01/user/a/update.action       OK

    http://localhost:8080/day27_struts01/user/update.action         OK

    http://localhost:8080/day27_struts01/a/user/update.action       NOK

   

    总结:

    localhost  本机IP

    8080       Tomcat

    /day27_struts01   通常是%tomcat%/webapps下部署项目名称!

    struts获取:

    /user/a/b/c/update.action

    截取得到:

    /user/a/b/c    名称空间部分

       去这个名称空间找action name 是"update" 的路径,没有,就向上一级目录查找

                /user/a/b     去这个名称找,没有"update", 向上一层找

                /user/a       没有

                /user         有则返回(不往下查找!)    ; 如果没有,去默认名称空间找

                /             没有找到,则404!

 2. action 节点

  作用: 配置访问路径,与,处理action类的映射关系!

  name  

  与名称空间共同组成访问路径!

  class

  处理action类的全名!

  method

  当前请求的处理方法!

  如果不写,默认是execute!

  result 子节点

  作用: action类的业务处理方法的返回的跳转标记,与跳转页面的映射关系!

  name 

  action类中方法返回的String

  type

  表示跳转的类型! (可写值的定义,在struts-default.xml中!)

  默认是:dispatcher, 为转发!

 

  dispacher  默认值; 转发

  redirect   重定向

  标签体中可以指定跳转的页面!

 

   

 -->

<package name="config" namespace="/user" extends="struts-default">

<!-- 配置Action -->

<action name="user" class="cn.itcast.b_config.UserAction" method="execute">

<result name="success" type="redirect">/index.jsp</result>

</action>

</package>

</struts>

 

 

 

Struts2执行流程

思考:

Servlet类是单例还是多例? Action类?

à servlet单例

-à struts2的action是多例!

 

Struts1的处理请求的类是单例!struts1默认访问后缀是*.do

 

执行流程:

 

Tomcat服务器启动:

过滤器:init()/doFilter()/destroy()

 

1. 服务器启动,加载服务器自身的web.xml

2. 同时加载部署到tomcat服务器的所有项目的web.xml

3. 创建项目中配置的核心过滤器对象:StrutsPrepareAndExecuteFilter

4. 执行过滤器初始化方法:init(..)

加载下面几个配置文件:

struts-default.xml,

1. bean节点定义

Struts在运行时候需要创建的关键对象,都再这里定义!

2. package  默认的包的定义(struts-default)

a. 跳转的结果类型

chain            2. 转发到action

dispatcher        1. 转发到jsp

redirect          3.  重定向到jsp

redirectAction     4.  重定向到 action

stream 返回的结果是流!(文件下载!)

(

转发

1. 转发到jsp

2. 转发到servlet

重定向

3.  重定向到jsp

4.  重定向到 servlet

)

 

b. 所有的拦截器的定义

struts2把一个的功能实现,通过一个个拦截器完成!

用户使用哪写功能,自由组装拦截器即可!

如果没有指定,

执行默认的拦截器,有18个!

默认的拦截器栈:defaultStack

 

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

 

struts-plugin.xml,

插件配置!

struts.xml

用户配置!

 

用户访问:

5. 执行过滤器的doFilter()方法

6. 创建Action对象

7. 再执行“拦截器“

8. 再执行action的业务方法,如execute方法!

 

 

 

Struts2数据处理

Servlet开发:

--àhttp请求,访问servlet

--à 调用Service

-à 调用dao

--à service调用的结果,保存到域中

---à 响应

-à jsp中取出域中数据! 

 

Action开发:

Action-àService-àdao

Action保存结果!

 

 

/**

 * 数据保存到域?

 * |-- ActionContext

 *  |-- ServletActionContext

 */

public String execute() throws Exception {

// 方式1:获取原始的ServletApi, 把数据保存到域!

HttpServletRequest request = ServletActionContext.getRequest();

HttpSession session =  request.getSession();

ServletContext sc = ServletActionContext.getServletContext();

// 保存

request.setAttribute("data", "request_data");

session.setAttribute("data", "session_data");

sc.setAttribute("data", "application_data");

return "success";

}

 

 

 

 

 

// 方式2: 通过ActionContext操作

// 注意:struts把request/session/application这些域对象,

// 封装为一个个的map,我们就可以通过操作map来操作域对象!

public String execute() throws Exception {

// 获取ActionContext对象

ActionContext ac = ActionContext.getContext();

// 获取表示request的map

//Map<String,Object> request = (Map<String, Object>) ac.get("request");

Map<String,Object> request = ac.getContextMap();

// 获取表示session的map

//Map<String,Object> session = (Map<String, Object>) ac.get("session");

Map<String,Object> session =  ac.getSession();

// 获取表示application的map

//Map<String,Object> application = (Map<String, Object>) ac.get("application");

Map<String,Object> application = ac.getApplication();

// 放数据到“域对象”

request.put("data", "request_data11");

session.put("data", "session_data21");

application.put("data", "application_data31");

return "success";

}

 

 

总结:

项目中尽量使用解耦的方式操作数据:ActionContext!

    当ActionContext 满足不了需求,再用ServletActionContext!





struts.serve.static.browserCache

标签:

原文地址:http://www.cnblogs.com/dantefung/p/4830556.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!