Struts最基础的项目搭建与配置


Struts是SSH中的最基础部分,动手搭建一个最简单的struts项目


1. http://struts.apache.org/上下载最新的版本 Struts 2.5.2(struts-2.5.2-all, struts-2.5.2-min-lib), struts-2.5.2-min-lib是struts所需的最小jar集合。


2.创建web project ,项目名为Struts_01。


3.复制struts-2.5.2-min-lib中的所有jar到Struts_01\WebRoot\WEB-INF\lib目录下


4.配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.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.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
 
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

</web-app>


5.创建action文件TestAction.java


package com.bobo.app.action;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class TestAction extends ActionSupport {

	private static final long serialVersionUID = 1L;
	
	public String index(){
		HttpServletRequest request = ServletActionContext.getRequest();
		request.setAttribute("test", "ok");
		return "main";
	}

}


6.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="test" extends="struts-default" namespace="/">
    	<!--  配置指定method,浏览器访问testAction.action即可直接访问index方法 -->
    	<action name="testAction" class="com.bobo.app.action.TestAction" method="index">
    		<result name="main">main.jsp</result>
    	</action>
    </package>
</struts>

7.WebRoot下创建main.jsp页面,并显示action中传出的值“test"


<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
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>
    <base href="<%=basePath%>">
    
    <title>My JSP 'main.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    From server: ${test} <br>
  </body>
</html>

8.运行程序,浏览器访问http://localhost:8080/Struts_01/testAction.action

页面显示From server: ok ,"ok"即是action中通过request.setAttribute设置的值。


9.action配置通配符方式访问


struts.xml可配置成

<action name="testAction_*" class="com.bobo.app.action.TestAction"  method="{1}">
    		<result name="main">main.jsp</result>
    	</action>

浏览器访问 http://localhost:8080/Struts_01/testAction_index.action

10.只添加struts-2.5.2-min-lib中的jar时,启动报错

java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager

从struts-2.5.2-all\struts-2.5.2\lib中拷贝log4j-api-2.5.jar再次启动,还报错

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
	at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:289)
	at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.construct(ContainerImpl.java:422)
	at com.opensymphony.xwork2.inject.ContainerBuilder$5.create(ContainerBuilder.java:218)
	at com.opensymphony.xwork2.inject.Scope$2$1.create(Scope.java:52)
	at com.opensymphony.xwork2.inject.ContainerBuilder$3.create(ContainerBuilder.java:91)
	at com.opensymphony.xwork2.inject.ContainerBuilder$7.call(ContainerBuilder.java:571)
	at com.opensymphony.xwork2.inject.ContainerBuilder$7.call(ContainerBuilder.java:568)
	at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:560)
	at com.opensymphony.xwork2.inject.ContainerBuilder.create(ContainerBuilder.java:568)
	at com.opensymphony.xwork2.config.impl.DefaultConfiguration.createBootstrapContainer(DefaultConfiguration.java:274)
	at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:158)
	at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67)
	at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:897)
	at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:437)
	at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:478)
	at org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOperations.java:75)
	at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:63)
	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
	at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:424)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4072)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4726)
	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:601)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)
	at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
	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:754)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	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:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:287)
	... 43 more
Caused by: java.lang.ExceptionInInitializerError
	at com.opensymphony.xwork2.ognl.OgnlValueStackFactory.setContainer(OgnlValueStackFactory.java:85)
	... 48 more
Caused by: java.lang.IllegalArgumentException: Javassist library is missing in classpath! Please add missed dependency!
	at ognl.OgnlRuntime.<clinit>(OgnlRuntime.java:169)
	... 49 more
Caused by: java.lang.ClassNotFoundException: javassist.ClassPool
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:190)
	at ognl.OgnlRuntime.<clinit>(OgnlRuntime.java:166)
	... 49 more

查阅资料,还需添加javassist-3.20.0-GA.jar,添加后启动成功,运行访问正常;怕麻烦的话直接拷贝 struts-2.5.2-all\struts-2.5.2\lib中的所有jar


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明
搭建Struts2项目需要按照以下步骤进行: 1. 创建Maven项目 在命令行中执行以下命令,创建一个Maven项目: ``` mvn archetype:generate -DgroupId=com.example -DartifactId=my-struts2-app -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false ``` 其中,`-DgroupId`表示项目的groupId,`-DartifactId`表示项目的artifactId,`-DarchetypeArtifactId`表示使用的模板,这里使用的是maven-archetype-webapp。 2. 添加Struts2依赖 在`pom.xml`文件中添加Struts2依赖: ```xml <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.5.26</version> </dependency> ``` 3. 创建Struts2配置文件 在`src/main/resources`目录下创建`struts.xml`文件,配置Struts2的基本信息,例如: ```xml <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <constant name="struts.devMode" value="true" /> <package name="default" extends="struts-default"> <action name="hello" class="com.example.MyAction"> <result>/index.jsp</result> </action> </package> </struts> ``` 4. 创建Struts2 Action 在`src/main/java`目录下创建一个Java类,例如`MyAction.java`,作为Struts2的Action,例如: ```java package com.example; import com.opensymphony.xwork2.ActionSupport; public class MyAction extends ActionSupport { private String message; public String execute() { message = "Hello, Struts2!"; return SUCCESS; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } ``` 5. 创建JSP页面 在`src/main/webapp`目录下创建一个JSP页面,例如`index.jsp`,用于显示Action的返回结果: ```html <html> <head> <title>Struts2 Example</title> </head> <body> <h1>${message}</h1> </body> </html> ``` 6. 运行项目 使用以下命令在Tomcat中运行项目: ``` mvn tomcat7:run ``` 然后在浏览器中访问`http://localhost:8080/my-struts2-app/hello`即可看到页面上显示的内容"Hello, Struts2!"。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值