虽然网上已经有很多“靠谱”攻略,但是到搞出一个HelloWorld还是花了好大功夫(同一个软件不同的版本配置方式还是不一样的(深刻体会),而我又想尽量用最新版),踩了不少坑。趁热记一下配置步骤。
安装环境:
Win10
Java v1.8.0_131
Eclipse Java EE IDE for Web Developers, Version: Oxygen Release (4.7.0)
Struts2 v2.5.13
Tomcat v9.0
MySQL v5.7.19
第一步:安装Eclipse
大家的电脑上可能已经有Eclipse了,但是经验表明下载一个最新版的IDE总是可以省掉你很多事。
我之前用的 EclipseFor普通玩家 在环境配置里只能看到Tomcat8.0,在装了 EclipseFor企业玩家 (Java EE)后就可以直接看到Tomcat9.0,很方便。所以推荐装一个Eclipse Java EE IDE。
打开Eclipse的时候会让你选择workspace,这一个workspace里的项目用的是一套环境配置。接下来会在workspace里配置Tomcat。
第二步:安装Tomcat
2.1 下载解压测试Tomcat
Tomcat是一个开源的应用服务器,类似于Apache,优势在于处理动态网页。可以直接去官网下载。我下的是Tomcat9 64-bit Windows zip。下载之后解压在你知道的地方。
尝试运行 解压根目录\bin\startup.bat,然后在浏览器里访问 localhost:8080,应该能看见Tomcat的测试网页。
2.2 在Eclipse中引入Tomcat
在Eclipse你正在使用的workspace中,Window->Preferences->Server->Runtime Environments,点Add,选择Apache Tomcat v9.0,点next,然后Browse到你刚刚解压Tomcat的地址,jre选你的版本,点Finish。这时Tomcat就引入成功了。可以随手Window->Show View->Servers,这样就可以在下面console旁边看到server的内容了。
第三步:安装配置Struts2
3.1 建立maven-web项目
用maven可以很方便的帮你下载安装各种依赖项,所以我打算用maven来装struts,这样就不用自己下那些jar包了。但还是建议你去下一个struts,下那个Full的,后面配置的时候会用到。我下的是struts-2.5.13-all.zip。
根据某大爷的指点,我们先建立一个Dynamic Web Project。可以在File->New->Dynamic Web Project,也可以直接在欢迎页面戳
然后你就会获得一个这样的架构。
接下来 右击项目->Configure->Convert to Maven Project。这样你的project就变成了Maven Project了。
3.2 安装Struts2
Maven可以通过添加Dependency来安装依赖包。在pom.xml里添加
<dependencies> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.5.13</version> </dependency> </dependencies>
或者 右击项目->Maven->Add Dependency
感兴趣的同学可以去查一下Dependencies和Dependency Management的区别。
这样就设置好了依赖。然后 右击项目->Run As->Maven install。过一会,如果正常你的项目里就会安装好以下jar包:
注意到log4j只有api的包,运行会报错,建议用同样的方法再安装log4j-core,版本号和api的那个一样。然后配置一下log4j。在Java Resources/src/ 下新建log4j2.xml,填入
<?xml version="1.0" encoding="UTF-8"?> <Configuration> <Appenders> <Console name="STDOUT" target="SYSTEM_OUT"> <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> </Console> </Appenders> <Loggers> <Logger name="com.opensymphony.xwork2" level="info"/> <Logger name="org.apache.struts2" level="info"/> <Logger name="org.springframework" level="info"/> <Root level="info"> <AppenderRef ref="STDOUT"/> </Root> </Loggers> </Configuration>
3.3 配置struts的一个小技巧
现在到了我们刚刚下的那个60多MB的Struts2 Full发挥作用的时候了。
解压完之后在 struts-2.5.13\apps 下面是官方提供的一些example,是一些打包后的war文件,可以import到你的Eclipse workspace中,看别人的博客里的什么配置代码在他的版本实用但是在你的版本可能根本不适用,例如这个
别人用的可能是2.3,而我是2.5,没注意到就很尴尬。而在你的struts版本对应的example里就不用担心,一顿复制就很爽。
3.4 配置文件与HelloWorld
即使如此我还是要给一下我的配置代码,至少说一下要配置那些文件。
web.xml
在WebContent\WEB-INF\ 下有一个web.xml,我们要在这里设置欢迎页,和filter。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>SE2-booklib</display-name> <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> <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>
<welcome-file>项是告诉Tomcat默认欢迎页是什么,如果你想用index系列和default系列以外的可以加在这里。
下面的<filter-name>struts2</filter-name>那些是告诉Tomcat我们用的struts。
HelloWorld.jsp
在 WebContent\ 下新建 HelloWorld.jsp,填入
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Hello World</title> </head> <body> Hello World,<s:property value="name" /> </body> </html>
记住这个<s:property value=“name” />,到时候会变成你的名字。
index.jsp
在 WebContent\ 下新建 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=ISO-8859-1"> <title>Welcome</title> </head> <body> <h1>Hello World From Struts2</h1> <form action="hello"> <label for="name">Please enter your name</label> <input type="text" name="name"/> <input type="submit" value="Say Hello"> </form> </body> </html>
记住我们在这里写了一个<form action=”hello”>,名为hello的action。
HelloWorld.java
在 Java Resources/src/ 下新建HelloWorld.java,填入
package helloworld; import com.opensymphony.xwork2.ActionSupport; public class HelloWorld extends ActionSupport { private String name; public String execute() throws Exception { return SUCCESS; } public String getName() { return name; } public void setName(String name) { this.name=name; } }
放在helloworld的package下。用来获取和保存名字。
struts.xml
最关键的struts.xml,在Java Resources/src/ 下新建struts.xml,填入
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <include file="struts-default.xml" /> <package name="helloworld" extends="struts-default"> <action name="hello" class="helloworld.HelloWorld"> <result>/HelloWorld.jsp</result> </action> </package> </struts>
我对struts.xml的一些理解:
<include file=”struts-default.xml” />和extends=”struts-default”是一般要做的事情。接下来是说在package helloworld下,我们有一个名为hello的action,它和方法helloworld.HelloWorld绑定起来,结果运行HelloWorld.jsp。
大概流程就是:index.jsp里的action=”hello”和struts.xml里的action name=”hello”是联系起来的,index告诉struts有action,struts调用HelloWorld.java,HelloWorld.java拿到名字字符串,返回SUCESS,回struts调用HelloWorld.jsp,HelloWorld.jsp拿到HelloWorld.java的名字字符串,显示HelloWorld,name。
最后你的项目应该是这个结构:
3.5 运行测试
右击项目->Run As->Run on Server,效果如下:
运行的时候下面的console会有些红字,大部分是信息,可能会有一个warning:警告: [SetContextPropertiesRule]{Context} Setting property ‘source’ to ‘org.eclipse.jst.jee.server:SE2-booklib’ did not find a matching property. 这个无伤大雅,可以无视。
第四步:MySQL配置
4.1 下载安装MySQL
下载MySQL 5.7 installer和JDBC驱动包,MySQL下下来应该是一个windows用的msi安装包,先装上。
解压JDBC驱动包(如果他是zip的话),会得到一个jar包:mysql-connector-java-5.1.44-bin.jar
4.2 测试MySQL
按下图所示建一个数据库用作后面的连接测试。
4.3 把驱动引入Eclipse
右键项目->Build Path->Configure Build Path->add External JARS加入驱动包。
注意:引入驱动包后java app已经可以连接数据库了,但是在Tomcat里跑java web的时候会提示没有这个Driver,解决方法是把这个包往Tomcat的lib或者WebContent/WEB-INF的lib下面再丢一个就好了。(配置云端服务器的时候也不要忘了)
然后Winidow->Preferences->Data Management->Connectivity->Driver Definitions->Add
这部直接把默认的那个找不到的包edit成你刚刚解压出来的jdbc的jar。
这里随手填一下你在安装MySQL时候填的账户密码数据库什么的。
4.4 数据库可视化
Window->Show View->Data Source Explorer,然后你就可以在下面看到你的数据库信息了。
到此配置完毕。