在struts2框架中使用servlet做接口

来源:互联网 发布:新手做淘宝客操作流程 编辑:程序博客网 时间:2024/06/05 21:08

在struts2框架中, 由于在web.xml中配置了struts2 的核心控制器,再配置servlet接口的话, 会被struts优先拦截到.从而出现servlet 404的情况

<!-- 配置struts2 的核心控制 : 过滤器 --><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>



解决办法 : 

在web.xml中配置.servlet

<!-- 测试接口 --><!-- 配置 .servlet 这样就可以通过struts2的拦截 --><servlet><servlet-name>DemoServlet</servlet-name><servlet-class>cn.yuge.servlet.DemoServlet</servlet-class></servlet><servlet-mapping><servlet-name>DemoServlet</servlet-name><url-pattern>/demoservlet.servlet</url-pattern><!-- <url-pattern>/demoservlet</url-pattern> --></servlet-mapping>


这样配置之后, 再访问servlet, 就可以通过struts的拦截了

测试demo:

1. 将web项目部署到tomcat ; 

2. 访问index.jsp 输入, 并提交

3. action 打印正常

4. 浏览器输入 http://localhost:8080/struts2-servlet/demoservlet.servlet?username=123, 后台成功打印 username的参数. 

5. 证明已成功通过struts拦截


web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5"><display-name>struts2-servlet</display-name><!-- 配置struts2 的核心控制 : 过滤器 --><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><!-- 测试接口 --><!-- 配置 .servlet 这样就可以通过struts2的拦截 --><servlet><servlet-name>DemoServlet</servlet-name><servlet-class>cn.yuge.servlet.DemoServlet</servlet-class></servlet><servlet-mapping><servlet-name>DemoServlet</servlet-name><url-pattern>/demoservlet.servlet</url-pattern><!-- <url-pattern>/demoservlet</url-pattern> --></servlet-mapping><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list></web-app>


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="p1" extends="struts-default"><action name="demo" class="cn.yuge.action.DemoAction" method="demo"><result name="success">/success.jsp</result></action></package></struts>


index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><form action="${pageContext.request.contextPath}/demo.action"method="post">用户名:<input type="text" name="name" /><br /> 年龄:   <input type="text" name="age" /><br />       <input type="submit" value="提交" /></form></body></html>



DemoAction

package cn.yuge.action;import cn.yuge.domain.User;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;public class DemoAction extends ActionSupport implements ModelDriven<User> {private User user = new User();@Overridepublic User getModel() {return user;}public String demo() {System.out.println(user);return SUCCESS;}}
User

package cn.yuge.domain;public class User {private Long id;private String name;private String age;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", age=" + age + "]";}}

success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>执行成功</body></html>



DemoServlet

package cn.yuge.servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class DemoServlet extends HttpServlet {private static final long serialVersionUID = 6792396567928634227L;// 版本信息@Overrideprotected void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException {response.setContentType("text/html;charset=utf-8");// 设置响应编码// 浏览器输入// http://localhost:8080/struts2-servlet/demoservlet.servlet?username=123String username = request.getParameter("username");response.getWriter().write(username);}@Overrideprotected void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException {doPost(request, response);// response.getWriter().write("-1");}}


 
原创粉丝点击