为啥我配置完web.xml就报404错误,不配置就不报呢?但是不配置有实现不了功能?咋办啊?这是比着书超的,书上也配置了
这是代码:
struts:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="false"/>
<package name="p2" extends="struts-default" >
<action name="add" class="com.haiersoft.ch05.action.AddAction" >
<result name="cal">/add_result.jsp</result>
</action>
</package>
</struts>
AddAction.java:
package com.haiersoft.ch05.action;import com.haiersoft.ch05.biz.Calculator;
import com.opensymphony.xwork2.ActionContext;public class AddAction {
private double num1;
private double num2;
public double getNum1(){
return num1;
}
public void steNum1(double num1){
this.num1 = num1;
}
public double getNum2(){
return num2;
}
public void steNum2(double num2){
this.num2 = num2;
}
/**
* 调用业务逻辑方法,实现业务,控制流程转向
*/
public String execute(){
//新建业务逻辑对象
Calculator biz = new Calculator();
//调用业务逻辑方法,获得返回值
double result = biz.add(num1, num2);
//将计算结果存入Session中
ActionContext.getContext().getSession().put("result", result);
return "cal";
}
}Calculator.java:
package com.haiersoft.ch05.biz;public class Calculator {
/**
* 实现加法算数
*/
public double add(double a,double b){
return a + b;
}
/**
* 实现算数减法
*/
public double subtract (double a,double b){
return a * b;
}
/**
* 实现算数乘法
*/
public double divide(double a, double b){
//注意:此处为未判断除数不能为零,即b!=0,页面输入的第二个数不可为0,否则报错
return a / b;
}
}
add.jsp:<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'add.jsp' starting page</title>
</head>
<body bgcolor="#fffc0">
<h1>Struts2 计算器</h1>
<form action="add.action" id="calcForm" method="post""></form>
<table>
<tbody>
<tr>
<td>第一个数</td>
<td><input type="text" name="num1" /></td>
</tr>
<tr>
<td>第二个数</td>
<td><input type="text" name="num2" /></td>
</tr>
<tr>
<td><input type="submit" value="加" /></td>
</tr>
</tbody>
</table>
</form>
</body>
</html>add_result.jsp:
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><html>
<head>
<title>计算器</title>
</head>
<body bgcolor="#ffffc0">
<h1>算数计算器</h1>
<table>
<tbody>
<tr>
<td>第一个数</td>
<td>${param.num1}</td>
</tr>
<tr>
<td>第二个数</td>
<td>${param.num2}</td>
</tr>
<tr>
<td>结果</td>
<td>${sessionScope.result}</td>
</tr>
</tbody>
</table>
<button onclick="history.go(-1);">返回</button>
</body>
</html>web.xml:<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>Java EEStruts
这是代码:
struts:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="false"/>
<package name="p2" extends="struts-default" >
<action name="add" class="com.haiersoft.ch05.action.AddAction" >
<result name="cal">/add_result.jsp</result>
</action>
</package>
</struts>
AddAction.java:
package com.haiersoft.ch05.action;import com.haiersoft.ch05.biz.Calculator;
import com.opensymphony.xwork2.ActionContext;public class AddAction {
private double num1;
private double num2;
public double getNum1(){
return num1;
}
public void steNum1(double num1){
this.num1 = num1;
}
public double getNum2(){
return num2;
}
public void steNum2(double num2){
this.num2 = num2;
}
/**
* 调用业务逻辑方法,实现业务,控制流程转向
*/
public String execute(){
//新建业务逻辑对象
Calculator biz = new Calculator();
//调用业务逻辑方法,获得返回值
double result = biz.add(num1, num2);
//将计算结果存入Session中
ActionContext.getContext().getSession().put("result", result);
return "cal";
}
}Calculator.java:
package com.haiersoft.ch05.biz;public class Calculator {
/**
* 实现加法算数
*/
public double add(double a,double b){
return a + b;
}
/**
* 实现算数减法
*/
public double subtract (double a,double b){
return a * b;
}
/**
* 实现算数乘法
*/
public double divide(double a, double b){
//注意:此处为未判断除数不能为零,即b!=0,页面输入的第二个数不可为0,否则报错
return a / b;
}
}
add.jsp:<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'add.jsp' starting page</title>
</head>
<body bgcolor="#fffc0">
<h1>Struts2 计算器</h1>
<form action="add.action" id="calcForm" method="post""></form>
<table>
<tbody>
<tr>
<td>第一个数</td>
<td><input type="text" name="num1" /></td>
</tr>
<tr>
<td>第二个数</td>
<td><input type="text" name="num2" /></td>
</tr>
<tr>
<td><input type="submit" value="加" /></td>
</tr>
</tbody>
</table>
</form>
</body>
</html>add_result.jsp:
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><html>
<head>
<title>计算器</title>
</head>
<body bgcolor="#ffffc0">
<h1>算数计算器</h1>
<table>
<tbody>
<tr>
<td>第一个数</td>
<td>${param.num1}</td>
</tr>
<tr>
<td>第二个数</td>
<td>${param.num2}</td>
</tr>
<tr>
<td>结果</td>
<td>${sessionScope.result}</td>
</tr>
</tbody>
</table>
<button onclick="history.go(-1);">返回</button>
</body>
</html>web.xml:<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>Java EEStruts
解决方案 »
- 关于list内部排序问题?就是那么奇怪呀!!!!
- 高手求救:tomcat加载webapp lib下自己的jar包找不到资源啊
- 使用JAVA 复制粘贴的功能怎么做 急需 谢谢
- 主外键问题 主外键问题 主外键问题 主外键问题
- SSH配置出现Servlet action is not available错误!难啊!。。。
- Hibernate中一对多怎样进行插入
- webservice开发问题 急急急
- 为什要用struts&spring&hibernate进行整合开发?
- validation框架验证和错误显示的问题
- 用ModelAndView实现跳转action之后页面不能正常显示,如果直接点的话是可以显示页面
- 服务端传递数据给客户端问题
- springmvc+myibatis+spring整合示例(仅供参考)
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:301)
at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.construct(ContainerImpl.java:438)
at com.opensymphony.xwork2.inject.ContainerBuilder$5.create(ContainerBuilder.java:207)
at com.opensymphony.xwork2.inject.Scope$2$1.create(Scope.java:51)
at com.opensymphony.xwork2.inject.ContainerBuilder$3.create(ContainerBuilder.java:93)
at com.opensymphony.xwork2.inject.ContainerBuilder$7.call(ContainerBuilder.java:487)
at com.opensymphony.xwork2.inject.ContainerBuilder$7.call(ContainerBuilder.java:484)
at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:584)
at com.opensymphony.xwork2.inject.ContainerBuilder.create(ContainerBuilder.java:484)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.createBootstrapContainer(DefaultConfiguration.java:324)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:221)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:446)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:490)
at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:193)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4038)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4692)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:701)
at org.apache.catalina.startup.Catalina.start(Catalina.java:585)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:299)
... 41 more
Caused by: java.lang.ExceptionInInitializerError
at com.opensymphony.xwork2.ognl.OgnlValueStackFactory.setContainer(OgnlValueStackFactory.java:84)
... 46 more
Caused by: java.lang.IllegalArgumentException: Javassist library is missing in classpath! Please add missed dependency!
at ognl.OgnlRuntime.<clinit>(OgnlRuntime.java:168)
... 47 more
Caused by: java.lang.ClassNotFoundException: javassist.ClassPool
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1493)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at ognl.OgnlRuntime.<clinit>(OgnlRuntime.java:165)
... 47 more
2013-7-16 8:46:00 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter struts2
java.lang.reflect.InvocationTargetException - Class: com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector
File: ContainerImpl.java
Method: inject
Line: 301 - com/opensymphony/xwork2/inject/ContainerImpl.java:301:-1
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:502)
at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:193)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4038)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4692)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.startup.Catalina.start(Catalina.java:585)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:301)
at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.construct(ContainerImpl.java:438)
at com.opensymphony.xwork2.inject.ContainerBuilder$5.create(ContainerBuilder.java:207)
at com.opensymphony.xwork2.inject.Scope$2$1.create(Scope.java:51)
at com.opensymphony.xwork2.inject.ContainerBuilder$3.create(ContainerBuilder.java:93)
at com.opensymphony.xwork2.inject.ContainerBuilder$7.call(ContainerBuilder.java:487)
at com.opensymphony.xwork2.inject.ContainerBuilder.create(ContainerBuilder.java:484)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.createBootstrapContainer(DefaultConfiguration.java:324)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:221)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:446)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:490)
... 28 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:299)
... 41 more
Caused by: java.lang.ExceptionInInitializerError
at com.opensymphony.xwork2.ognl.OgnlValueStackFactory.setContainer(OgnlValueStackFactory.java:84)
... 46 more
Caused by: java.lang.IllegalArgumentException: Javassist library is missing in classpath! Please add missed dependency!
at ognl.OgnlRuntime.<clinit>(OgnlRuntime.java:168)
... 47 more
Caused by: java.lang.ClassNotFoundException: javassist.ClassPool
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1493)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at ognl.OgnlRuntime.<clinit>(OgnlRuntime.java:165)
... 47 more
2013-7-16 8:46:00 org.apache.catalina.core.StandardContext start
严重: Error filterStart
2013-7-16 8:46:00 org.apache.catalina.core.StandardContext start
严重: Context [/2] startup failed due to previous errors
2013-7-16 8:46:00 org.apache.catalina.startup.HostConfig deployDirectory