在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中,这一切都变得更加自动化,Action类扮演了Controller的角色,可以直接操作Model,并通过配置自动决定View的生成。 通过一个简单的入门程序,我们可以对比两者的实现方式。在Servlet中,我们可能需要...
### servlet和struts2笔记 #### 一、Servlet 基础 **Servlet** 是 Java Web 开发中的一种核心技术,它被设计用于处理客户端发送到服务器的 HTTP 请求,并且能够生成响应。Servlet 可以看作是服务器端的小程序,...
XML映射是Structs2中重要的部分,它负责定义控制器和视图之间的关系,使得请求能够被正确地路由到对应的处理方法。 首先,让我们深入了解一下Structs2框架。Structs2的核心思想是Action,它是一个处理用户请求的类...
使用Structs2进行快速开发可以提高开发效率,减少代码量,并提供丰富的功能和扩展性。以下是关于Structs2快速开发的一些关键知识点: 1. **Struts2依赖的JAR文件**: - `struts2-core-2.x.x.jar`:Struts2框架的...
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java web框架,它极大地简化了构建基于Java EE的企业级应用程序的过程。...只需将这些jar文件添加到项目的类路径中,就可以开始使用Struts2的强大功能了。
在描述中提到的"structs2所需jar包"是运行Struts2框架所必需的库文件,这些文件包含了Struts2框架的核心功能和其他依赖库。下面我们将详细探讨Struts2框架的关键知识点及其相关jar包的作用。 1. **Struts2核心组件*...
在上述例子中,`ConcurrentTest`Servlet定义了一个实例变量`output`,在`service`方法中,这个变量被用来向客户端响应。当多个线程同时访问`service`方法,可能会出现线程A处理的用户信息被线程B误写入到响应中,...
- **Action**:在Structs2中,Action是处理用户请求的核心组件,它负责接收请求、执行业务逻辑并返回结果。 - **Interceptor(拦截器)**:Structs2支持拦截器机制,可以在Action执行前后进行预处理或后处理,如...
在使用这个纯净版的Structs2 JAR包时,你需要确保你的项目中已经包含了所有必要的依赖,如Servlet API、JSP API等基础Web开发库。同时,你可能还需要根据项目需求自行添加其他如数据库连接池、日志框架等组件。由于...
在本项目"structs2+hibernate学生信息管理"中,我们主要关注的是使用Struts2框架与Hibernate ORM工具来构建一个简单的学生信息管理系统。这个项目对于初学者来说是一个很好的实践,它涵盖了Web开发中的关键技术和...
2. **拦截器**:使用拦截器(Interceptors)来扩展 ActionServlet 的功能,例如添加预处理步骤、后处理步骤等。 3. **配置选项**:通过修改配置文件来改变 ActionServlet 的行为,比如调整默认的行为设置等。 4. **...
在Struts2中,可以使用OGNL(Object-Graph Navigation Language)表达式进行参数绑定,但需要开启或配置Struts2的安全拦截器,例如使用`paramsPrepareParams`拦截器来预处理参数,或者使用`xwork-validation.xml`...
2. Web服务器接收到请求后,通过Struts的前端控制器(`ActionServlet`)来处理。 3. 前端控制器解析请求,根据配置文件(struts-config.xml)找到对应的Action。 4. Action被实例化并执行,处理业务逻辑。 5. Action...
### Structs中基本配置入门详解 #### 一、配置ActionServlet 在Structs框架中,配置ActionServlet是非常关键的第一步。ActionServlet是整个框架的核心组件之一,负责接收客户端请求,并根据配置将请求分发给相应的...
在描述中提到的教程中,可能详细解释了如何创建和配置Action,以及如何使用Result来定义Action执行后应转向的页面或视图。 其次,Structs2的拦截器(Interceptors)机制是其灵活性的关键。这些拦截器在Action执行...
本压缩包文件包含了搭建Structs环境所需的所有jar包和相关文档,使得开发者可以快速地在自己的项目中引入Structs框架,无需逐一寻找和下载各个依赖。 首先,Structs框架的核心在于它的Controller、Action和Template...
在Struts1中,Action类通常会继承自Action基类,而在Struts2中,Action类可以独立实现,不需继承特定的类。 **拦截器**:Struts2引入了拦截器的概念,允许开发者实现AOP(面向切面编程),例如进行权限控制、日志...
Structs 使用配置文件(通常为struts.xml)来定义这些映射关系,使得代码结构清晰,易于维护。 2. JSP(JavaServer Pages): JSP是Java Servlet的一种扩展,用于动态生成HTML、XML或其他类型的Web内容。在本项目...