`
China_qd_zjk
  • 浏览: 34606 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

structs2中已经定义了servlet,我们创建自己的servlet时该如何使用

阅读更多
    在Structs2中已经定义了Servlet,有些时候我们不需要再去写Servlet,但众所周知,Servlet 通过创建一个框架来扩展服务器的能力,以提供在 Web 上进行请求和响应服务,有时候我们还是需要自己来定义我们的Servlet,我们需要用一个Action来转发自己的servlet,关于Servlet的使用我们有以下两种方法:
1、在servlet名称后面加上.servlet
统一在servlet后面加上.servlet结尾(包括web.xml配置文件中和页面上使用servlet的地方),比如web.xml中配置如下:    
<servlet-mapping>      
    <servlet-name>NewServlet</servlet-name>      
    <url-pattern>/New.servlet</url-pattern>    
</servlet-mapping>
2、使用Action来转发
我们在使用Structs2的时候,需要对web.xml文件进行配置,在配置文件时我们会把<url-pattern>设置为/*,这样设置的时候所有的请求都会经过struts2,那么只要经过struts2就必须得有action与之对应,否则就会报错。所以在view层的jsp代码中直接访问/xxx/servlet/test就会报错找不到action,此处的<url-pattern>内的内容需要和structs.xml中<result>配置相同。
对于这种情况,我们只需要写一个action并在struts.xml文件中进行配置即可:
public class NewAction implements ActionSupport {   
    public String execute(){   
        return "成功";   
    }   
}   
在structs.xml中的配置如下:
<package name="test" namespace="/" extends="struts-default">   
  ....   
  <action name="test" class="com.xxx.action.NewAction">   
      <result>/servlet/test</result><!--result配成servlet的url-pattern即可-->   
  </action>   
  ....   
</package>   
3、给Action添加后缀(常用)
如果不想改变前台jsp页面的访问地址,只能改变web.xml中的配置,原先struts2的<url-pattern>设置为/*会拦截所有的请求,包括访问servlet,现在可以将struts2的<url-pattern>改成 *.action,那么struts2会拦截所有后缀是 .action的请求,其他的就不会拦截了。这样的话,前台就可以直接访问/servlet/test了。不过访问struts2的url中必须都以 .action结尾,这样才能被struts2拦截到。
4、使用filter过滤servlet
①新建一个filter用于过滤servlet
public class ReDispatcherFilter implements Filter {       
    private ArrayList<String> includes = new ArrayList<String>();      
    @Override  
    public void destroy() {       }       
    @Override       
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain
        chain) throws IOException, ServletException {          
        HttpServletRequest request = (HttpServletRequest) req;         
        String target = request.getRequestURI();           
        target=target.lastIndexOf("?")>0?  
           target.substring(target.lastIndexOf("/")+1,target.lastIndexOf("?")-
           target.lastIndexOf("/")):target.substring(target.lastIndexOf("/") + 1);
        if (this.includes.contains(target)) {               
            RequestDispatcher rdsp = request.getRequestDispatcher(target);
            rdsp.forward(req,resp);          
         }else               
            chain.doFilter(req, resp);      
     }       
     @Override       
     public void init(FilterConfig config) throws ServletException {
this.includes.addAll(Arrays.asList(config.getInitParameter("includeServlets").spl       it(", ")));      
     } 
}
②在web.xml中做适当配置,在struts2的配置前加上下面的代码: 
<filter>     
    <filter-name>redisp</filter-name>     
    <filter-class>com.kcjxkj.filter.ReDispatcherFilter</filter-class>    
    <init-param>       
        <param-name>includeServlets</param-name>      
        <param-value>ValidateEmail</param-value>    
    </init-param>   
</filter>    
<filter-mapping>     
    <filter-name>redisp</filter-name>    
    <url-pattern>/*</url-pattern>   
</filter-mapping>  
其中,<param-value></param-value>中为web.xml中配置的要过滤的servlet名,多个之间用","逗号隔开。
分享到:
评论

相关推荐

    Structs2 vs Servlet

    而在Structs2中,这一切都变得更加自动化,Action类扮演了Controller的角色,可以直接操作Model,并通过配置自动决定View的生成。 通过一个简单的入门程序,我们可以对比两者的实现方式。在Servlet中,我们可能需要...

    servlet和struts2笔记

    ### servlet和struts2笔记 #### 一、Servlet 基础 **Servlet** 是 Java Web 开发中的一种核心技术,它被设计用于处理客户端发送到服务器的 HTTP 请求,并且能够生成响应。Servlet 可以看作是服务器端的小程序,...

    structs2 + maven demo项目

    XML映射是Structs2中重要的部分,它负责定义控制器和视图之间的关系,使得请求能够被正确地路由到对应的处理方法。 首先,让我们深入了解一下Structs2框架。Structs2的核心思想是Action,它是一个处理用户请求的类...

    使用structs2快速开发

    使用Structs2进行快速开发可以提高开发效率,减少代码量,并提供丰富的功能和扩展性。以下是关于Structs2快速开发的一些关键知识点: 1. **Struts2依赖的JAR文件**: - `struts2-core-2.x.x.jar`:Struts2框架的...

    structs2 jar资源包

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java web框架,它极大地简化了构建基于Java EE的企业级应用程序的过程。...只需将这些jar文件添加到项目的类路径中,就可以开始使用Struts2的强大功能了。

    structs2所需jar包

    在描述中提到的"structs2所需jar包"是运行Struts2框架所必需的库文件,这些文件包含了Struts2框架的核心功能和其他依赖库。下面我们将详细探讨Struts2框架的关键知识点及其相关jar包的作用。 1. **Struts2核心组件*...

    servlet与Struts action线程安全问题分析

    在上述例子中,`ConcurrentTest`Servlet定义了一个实例变量`output`,在`service`方法中,这个变量被用来向客户端响应。当多个线程同时访问`service`方法,可能会出现线程A处理的用户信息被线程B误写入到响应中,...

    Structs2架包

    - **Action**:在Structs2中,Action是处理用户请求的核心组件,它负责接收请求、执行业务逻辑并返回结果。 - **Interceptor(拦截器)**:Structs2支持拦截器机制,可以在Action执行前后进行预处理或后处理,如...

    纯净版structs2 jar包

    在使用这个纯净版的Structs2 JAR包时,你需要确保你的项目中已经包含了所有必要的依赖,如Servlet API、JSP API等基础Web开发库。同时,你可能还需要根据项目需求自行添加其他如数据库连接池、日志框架等组件。由于...

    structs2+hibernate学生信息管理

    在本项目"structs2+hibernate学生信息管理"中,我们主要关注的是使用Struts2框架与Hibernate ORM工具来构建一个简单的学生信息管理系统。这个项目对于初学者来说是一个很好的实践,它涵盖了Web开发中的关键技术和...

    structs in action中文完全版\9. 扩展 ActionServlet.pdf

    2. **拦截器**:使用拦截器(Interceptors)来扩展 ActionServlet 的功能,例如添加预处理步骤、后处理步骤等。 3. **配置选项**:通过修改配置文件来改变 ActionServlet 的行为,比如调整默认的行为设置等。 4. **...

    jsp 连接mysql 数据库登录 structs2

    在Struts2中,可以使用OGNL(Object-Graph Navigation Language)表达式进行参数绑定,但需要开启或配置Struts2的安全拦截器,例如使用`paramsPrepareParams`拦截器来预处理参数,或者使用`xwork-validation.xml`...

    Structs中文帮助文档

    2. Web服务器接收到请求后,通过Struts的前端控制器(`ActionServlet`)来处理。 3. 前端控制器解析请求,根据配置文件(struts-config.xml)找到对应的Action。 4. Action被实例化并执行,处理业务逻辑。 5. Action...

    Structs中基本配置入门

    ### Structs中基本配置入门详解 #### 一、配置ActionServlet 在Structs框架中,配置ActionServlet是非常关键的第一步。ActionServlet是整个框架的核心组件之一,负责接收客户端请求,并根据配置将请求分发给相应的...

    STRUCTS学习文档

    在描述中提到的教程中,可能详细解释了如何创建和配置Action,以及如何使用Result来定义Action执行后应转向的页面或视图。 其次,Structs2的拦截器(Interceptors)机制是其灵活性的关键。这些拦截器在Action执行...

    搭建structs环境所有的jar包

    本压缩包文件包含了搭建Structs环境所需的所有jar包和相关文档,使得开发者可以快速地在自己的项目中引入Structs框架,无需逐一寻找和下载各个依赖。 首先,Structs框架的核心在于它的Controller、Action和Template...

    structs2教程

    在Struts1中,Action类通常会继承自Action基类,而在Struts2中,Action类可以独立实现,不需继承特定的类。 **拦截器**:Struts2引入了拦截器的概念,允许开发者实现AOP(面向切面编程),例如进行权限控制、日志...

    基于Structs架构的网络日记

    Structs 使用配置文件(通常为struts.xml)来定义这些映射关系,使得代码结构清晰,易于维护。 2. JSP(JavaServer Pages): JSP是Java Servlet的一种扩展,用于动态生成HTML、XML或其他类型的Web内容。在本项目...

Global site tag (gtag.js) - Google Analytics