基于MAVEN的WEB项目在ECLIPSE中使用TOMCAT调试
使用Eclipse构建Maven的SpringMVC项目

使用Eclipse构建Maven的SpringMVC项目首先Eclipse需要安装Maven的插件,地址:/sites/m2e。
用MyEclipse安装Maven插件,建出的Maven项目有些问题。
一是,发布tomcat的时候resources总是不会被发布到tomcat下;二是,把WEB-INF下的classes改到target下的classes,但是不知道为什么MyEclipse要么仍然在WEB-INF下生成class。
要么真不在WEB-INF生成classes 了但是发布tomcat的时候,class文件一个都不会给你发布过去,超级郁闷。
但是使用Eclipse构建Maven项目后,使用MyEclipse打开就没问题了。
用maven的好处:我感觉最主要就是自动下载jar包和它所依赖的包,这样可以保证了多人开发时jar版本不同的问题。
再就是文件结构清晰,java文件,资源文件,测试文件都分的很清楚。
将介绍两种方法:一,直接建立Maven项目方法;二、建立Dynamic Web project转成Maven 项目方法。
1,建立Maven项目接下来使用Eclipse的maven构建一个web项目,以构建SpringMVC项目为例:1.1 选择建立Maven Project选择File -> New -> Other,在New窗口中选择Maven -> Maven Project。
点击newxt。
1.2 选择项目路径Use default Workspace location默认工作空间。
1.3 选择项目类型在Artifact Id中选择maven-archetype-webapp1.4 输入Group ID和Artifact ID,以及PackageGroup ID一般写大项目名称。
Artifact ID是子项目名称。
例如Spring的web包,Group ID:org.springframework,artifactId:spring-web。
最新eclipse java EE+最新tomcat7.0配置web项目全程 实录

在最新版本中的eclipse for java ee中配置javaweb项目+tomcat:首先下载eclipse 地址:/downloads/然后下载tomcat 我用的是tomcat最新版7.03的地址:/download-70.cgi下载jdk:/technetwork/java/javase/downloads/index.html下载好jdkTomcat插件下载地址:/sysdeo/eclipse/tomcatplugin下载最新版本首先安装jdk 之后配置环境变量:编辑系统变量:第一步:新建java—home后面的地址是你的jdk安装地址自己更改第二步设置classpath 输入%AJA V A_HOME%\lib.;就可以了记住lib后面要有点和分号第三步在dos窗口中输入cmd输入命令javac 敲击enter键等于回车键显示如下:这配置成功配置tomcat7.03第一步:安装好tomcat7点击next同意第三步选择full之后输入4:点击next输入你的用户名和密码5:点击next6:finsh然后我的电脑->属性————系统保护-----------高级---------环境变量-----------按照如下在系统变量中输入1:2:3:4:在classpath下输入tomcat安装的地址在tomcat——lib目录下——找到servelt_api如下图之后安装javaEE 将tomcat插件解压放到:javaEE的plugins文件夹下在Step1:之后新建links文件夹上图有:Step2:在里面新建文件Step3:加入如下内容:你的eclipse中的pugins文件夹下的插件地址:path=F:\eclipse+tomcat\javaee\eclipse\plugins\com.sysdeo.eclipse.tomcat_3.3.0\启动:将看到tom猫图标表示配置插件成功eclipse:1:点击window2:按照如下操作3:按照如下选择advanced:4:点击java --------installedjres点击ok5:点击server 选择add添加一个server tomcat 7.0-------点击ok5新建一个dymaic webproject 如下图必须设置一样6,在webcontent目录下新建一个jsp页面6:点击右键——--选择————runas---RunOnServer运行如上图。
使用Eclipse开发基于SpringBoot+JAX-RS的Restful服务

一.搭建工程(开发环境JDK1.8,外置Tomcat需8.5以上版本)1.新建maven项目2.修改pom文件,内容如下:<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>springboot.jaxrs</groupId><artifactId>RestWS</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.0.RELEASE</version></parent><dependencies><!-- Web应用依赖:主要用来进行Web应用开发 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!-- 排除Web依赖提供的Tomcat容器,由下面的Tomcat依赖提供Tomcat容器 --><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency><!-- 模板引擎依赖:主要用来提供@Controller和html页面等的访问 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- RESTful服务依赖:主要用来提供Jersey RESTful Web服务框架的支持 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jersey</artifactId></dependency><!-- Tomcat容器依赖:主要用来提供编译和测试时的Tomcat支持,打war包时不会包含到lib --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency><!-- 测试组件依赖:用来提供单元测试的支持 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><!-- 排除JUnit4的包,只引入JUnit5的包 --><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><build><!-- 打包后的文件名 --><finalName>springboot</finalName><plugins><!-- SpringBoot打包插件,指定main方法的类 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><mainClass>com.springboot.SpringBootRun</mainClass> </configuration></plugin></plugins></build></project>3.新建一个springboot.jaxrs的包,并建一个SpringBootRun类package springboot.jaxrs;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder;importorg.springframework.boot.web.servlet.support.SpringBootServletInitializer;@SpringBootApplicationpublic class SpringBootRun extends SpringBootServletInitializer {//通过外置Tomcat启动SpringBoot项目@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {// TODO Auto-generated method stubreturn builder.sources(SpringBootRun.class);}//通过内置Tomcat启动SpringBoot项目public static void main(String[] args) {SpringApplication.run(SpringBootRun.class, args);}}4.新建一个RestConfig类package springboot.jaxrs;import javax.ws.rs.ApplicationPath;import org.glassfish.jersey.server.ResourceConfig;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter;@Configuration@ApplicationPath("/services")public class RestConfig extends ResourceConfig {//注册服务public RestConfig() {//1.自动扫描com.springboot下面的服务packages("springboot.jaxrs");//2.手动注册服务//register(HelloWorldService.class);//register(TestService.class);System.out.println("WADL地址:http://localhost:8080/RestWS/services/application.wadl");}//添加跨域访问服务:只开放了WS访问,没有开放@Controller访问@Beanpublic CorsFilter corsFilter() {CorsConfiguration corsConfiguration = new CorsConfiguration();corsConfiguration.addAllowedOrigin("*"); // 1 设置访问源地址corsConfiguration.addAllowedHeader("*"); // 2 设置访问源请求头corsConfiguration.addAllowedMethod("*"); // 3 设置访问源请求方法UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/ws/**", corsConfiguration); // 4 设置允许访问的地址过滤return new CorsFilter(source);}}5.新建一个springboot.jaxrs.controller的包,并建一个PagesController类package springboot.jaxrs.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.CrossOrigin;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;@CrossOrigin(origins = "*",maxAge = 3600)//如果想让@Controller允许跨域访问可以加上@CrossOrigin@Controller@RequestMapping("/pages")public class PagesController {@ResponseBody@RequestMapping(value = "/say", method = RequestMethod.GET)public String index() {return"Hello World";}@RequestMapping("/main")public String mainPage() {return"main";}}6.新建一个springboot.jaxrs.entity的包,并新建User类package springboot.jaxrs.entity;public class User {private String name;//姓名private String idNo;//身份证private String password;//密码public User(String name,String idNo,String password) { = name;this.idNo = idNo;this.password = password;}//重写HashCode方法,让程序判断身份证号码相同为同一个对象@Overridepublic int hashCode() {// TODO Auto-generated method stubreturn idNo.hashCode();}//重写equals方法,让程序判断身份证号码相同为同一个对象@Overridepublic boolean equals(Object obj) {// TODO Auto-generated method stubif(obj instanceof User){User user = (User) obj;return this.idNo.equals(user.getIdNo());}else {return false;}}@Overridepublic String toString() {// TODO Auto-generated method stubreturn"[name:"+name+",idNo:"+idNo+",password:"+password+"]";}public String getName() {return name;}public String getIdNo() {return idNo;}public void setIdNo(String idNo) {this.idNo = idNo;}public void setName(String name) { = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}7.新建一个springboot.jaxrs.webservice包并新建UsersService类package springboot.jaxrs.webservice;import java.util.HashMap;import java.util.Map;import javax.inject.Singleton;import javax.ws.rs.Consumes;import javax.ws.rs.DELETE;import javax.ws.rs.GET;import javax.ws.rs.POST;import javax.ws.rs.PUT;import javax.ws.rs.Path;import javax.ws.rs.PathParam;import javax.ws.rs.Produces;import javax.ws.rs.core.MediaType;import javax.ws.rs.core.Response;import javax.ws.rs.core.Response.Status;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import er;@Path("/ws/users")@Singleton//设置为单例,要不然userMap每次都会new一个新的public class UsersService {Map<String,User> userMap = new HashMap<>();@GET@Path("/getAllUser")@Produces(value=MediaType.APPLICATION_JSON) //JSON方式返回public Response getAllUser() {try {String userJson = new ObjectMapper().writeValueAsString(userMap);return Response.status(Status.OK).entity(userJson).build();} catch (JsonProcessingException e) {// TODO Auto-generated catch blocke.printStackTrace();returnResponse.status(Status.OK).entity("{\"error\":\""+e.toString()+"\"}").build();}}@GET@Path("/{userid}/get")@Consumes(value=MediaType.APPLICATION_JSON) //JSON方式接受请求@Produces(value=MediaType.APPLICATION_JSON) //JSON方式返回public Response getById(@PathParam("userid") String userid) {try {String userJson = newObjectMapper().writeValueAsString(userMap.get(userid));return Response.status(Status.OK).entity(userJson).build();} catch (JsonProcessingException e) {// TODO Auto-generated catch blocke.printStackTrace();returnResponse.status(Status.OK).entity("{\"error\":\""+e.toString()+"\"}").build();}}@POST@Path("/{userid}/update")public Response update(@PathParam("userid") String userid, User user) { if(user.getName()!=null)userMap.get(userid).setName(user.getName());//if(user.getIdNo()!=null)//userMap.get(userid).setIdNo(user.getIdNo());if(user.getPassword()!=null)userMap.get(userid).setPassword(user.getPassword());String output = userid + " 属性修改成功!";return Response.status(Status.OK).entity(output).build();}@PUT@Path("/{userid}/addOrReplace")@Consumes(value=MediaType.APPLICATION_JSON) //JSON方式接受请求@Produces(value=MediaType.TEXT_PLAIN) //纯文本方式返回public Response addOrReplace(@PathParam("userid") String userid, User user) { try {userMap.put(userid,user);return Response.status(Status.OK).entity("增添用户成功,用户信息:"+user.toString()).build();}catch(Exception e) {return Response.status(Status.OK).entity("增添用户失败,错误信息:"+e.toString()).build();}}@DELETE@Path("/{userid}/delete")public Response delete(@PathParam("userid") String userid) {userMap.remove(userid);String output = userid + " 删除成功!";return Response.status(Status.OK).entity(output).build();}}8.在src/main/resources建立一个application.properties文件server.servlet.context-path=/RestWS9.至此,工程已经搭建完毕,可以直接运行SpringBootRun的main方法启动程序10.也可以把pom.xml文件的打包类型改为<packaging>war</packaging>用外置Tomcat运行(必须要Tomcat 8.5或以上版本)二.使用Java编写客户端进行访问测试(使用Junit5进行单元测试)11.在src/test/java新建一个junittest包并新建UserTest类,然后直接执行:右键->Run As->Junit Test即可,无需手动启动SpringBootRun服务package junittest;import .URI;import javax.ws.rs.client.ClientBuilder;import javax.ws.rs.client.Entity;import javax.ws.rs.client.WebTarget;import javax.ws.rs.core.MediaType;import javax.ws.rs.core.Response;import org.junit.jupiter.api.BeforeEach;import org.junit.jupiter.api.Test;import org.junit.jupiter.api.MethodOrderer;import org.junit.jupiter.api.Order;import org.junit.jupiter.api.TestMethodOrder;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.context.annotation.Description;import springboot.jaxrs.SpringBootRun;import er;@TestMethodOrder(MethodOrderer.OrderAnnotation.class)//搭配@Order可以实现按顺序执行,但是@Test一定要使用JUnit5的注解才起作用@SpringBootTest(classes = SpringBootRun.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)//指定了程序入口SpringBootRun和使用默认端口,执行JUnit Test的时候会自动启动项目,无需手动启动项目public class UserTest {private URI uri;private User user;@BeforeEachpublic void init() throws Exception {uri = new URI("http://127.0.0.1:8080/RestWS/services/ws/users");user = new User("xiaohong","ID0001","123456");}@Test@Order(1)@Description("添加或替换用户")public void addOrUpdateTest() {System.out.println("==================================1==================== ================");WebTarget target =ClientBuilder.newClient().target(uri).path("/"+user.getIdNo()+"/addOrReplace");Response res =target.request().accept(MediaType.TEXT_PLAIN).put(Entity.entity(user, MediaType.APPLICATION_JSON));System.out.println("状态码:"+res.getStatus());if (res.getStatus() != 200) {throw new RuntimeException("Failed : HTTP error code : "+res.getStatus());}String output = res.readEntity(String.class);System.out.println(output);System.out.println("======================================================= ===============");}@Test@Order(2)@Description("获取单个用户")public void getByIdTest() {System.out.println("==================================2==================== ================");WebTarget target =ClientBuilder.newClient().target(uri).path("/"+user.getIdNo()+"/get");Response res =target.request().accept(MediaType.APPLICATION_JSON).get();System.out.println("状态码:"+res.getStatus());if (res.getStatus() != 200) {throw new RuntimeException("Failed : HTTP error code : "+res.getStatus());}String output = res.readEntity(String.class);System.out.println(output);System.out.println("======================================================= ===============");}@Test@Order(3)@Description("修改用户")public void updateTest() {System.out.println("==================================3==================== ================");user.setName("小红");WebTarget target =ClientBuilder.newClient().target(uri).path("/"+user.getIdNo()+"/update");Response res =target.request().accept(MediaType.TEXT_PLAIN).post(Entity.entity(user, MediaType.APPLICATION_JSON));System.out.println("状态码:"+res.getStatus());if (res.getStatus() != 200) {throw new RuntimeException("Failed : HTTP error code : "+res.getStatus());}String output = res.readEntity(String.class);System.out.println(output);System.out.println("======================================================= ===============");}@Test@Order(4)@Description("获取全部用户")public void getAllUserTest() {System.out.println("==================================4==================== ================");WebTarget target =ClientBuilder.newClient().target(uri).path("/getAllUser");Response res =target.request().accept(MediaType.APPLICATION_JSON).get();System.out.println("状态码:"+res.getStatus());if (res.getStatus() != 200) {throw new RuntimeException("Failed : HTTP error code : "+res.getStatus());}String output = res.readEntity(String.class);System.out.println(output);System.out.println("======================================================= ===============");}@Test@Order(5)@Description("删除用户")public void deleteTest() {System.out.println("==================================5==================== ================");WebTarget target =ClientBuilder.newClient().target(uri).path("/"+user.getIdNo()+"/delete");Response res =target.request().accept(MediaType.APPLICATION_JSON).delete();System.out.println("状态码:"+res.getStatus());if (res.getStatus() != 200) {throw new RuntimeException("Failed : HTTP error code : "+res.getStatus());}String output = res.readEntity(String.class);System.out.println(output);System.out.println("======================================================= ===============");}}三.使用html页面访问Restful服务12.在src/main/resources里新建static文件夹,再在static文件夹新建js,pages 2个文件夹,然后js文件夹引入axios.min.js,vue.min.js。
解决eclipse启动tomcat时不能加载web项目的问题

解决eclipse启动tomcat时不能加载web项⽬的问题问题描述:
eclipse启动tomcat时,不能加载web项⽬,但是把war包丢进tomcat的webapps下是能正常运⾏的
解决⽅式:
右键项⽬——打开Properties——找到Deployment Assembly——将WebContent修改成你的项⽬webapp路径
eclipse与tomcat绑定成功后却⽆法访问⾃⼰的web项⽬下的HTML⽂件WARNING: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Mypro' did not find a matching property.
在server上运⾏给出如上警告,页⾯也⽆法访问。
可能原因:
将⾃⼰的⼯程run on server 后,默认寻找的是WebContent下的index.html的欢迎页⾯,所以当你的WebContent下没有index.html⽂件的话,就会报404.但这并不妨碍你在地址栏访问⾃⼰的Java项⽬。
所以将WebContent下⽤于试验的html⽂件命名为index.html或者将web.xml内的index.html改为你⾃定义的⽂件名就ok啦。
这只是刚刚搭建好环境⽤HTML⽂件进⾏测试⽤到,运⾏Java项⽬不⽤考虑这些。
以上为个⼈经验,希望能给⼤家⼀个参考,
也希望⼤家多多⽀持。
10步搞掂Maven项目在Eclipse的Tomcat运行

10步搞掂Maven项目在Eclipse的T omcat运行1、右击sem-frontends-app项目,点Properties。
2、在Project Facts选项里,如图设置Project Facet里的Dynamic Web Module和Java,在Runtimes里色选web服务器Tomcat,最后点OK。
3、在Deployment Assembly选项里,将有test字样和WebContent的Source都Remove掉。
4、接着再Add三个Source,点击Add,添加如图的内容。
(1)点Add,点Next,点Finish。
(2)点Add,点Next,点Finish。
(3)点Add点Next,点Finish。
完成之后页面如下图,再点OK完成5、在Maven选项里,在Active Maven Profiles的输入框里输入db2,再点OK。
这个步骤只针对使用db2数据库的,如果使用mysql的则不用修改。
6、打开cmd界面,进入到自己工程下的sems-frontends-app目录下,输入命令mvn test –Pdb2,回车。
7、找到sems-frontends-app目录,再打开target,再打开test-classes,找到application.properties 文件。
8、打开application.properties文件,复制如图选中的内容。
9、回到eclipse里,在sems-frontends-app里,打开Java Resources,打开src/main/filted-resources,找到application.properties文件并打开,将刚才复制的内容粘贴上去,并保存文件。
10、最后,将sems-frontends-app工程放到Tomcat服务器里,运行即可。
Maven项目debug步骤(eclipse)

Maven项目debug步骤(eclipse)Maven是一个流行的项目管理工具,几乎所有Java项目都可以使用Maven进行构建和管理。
Maven项目的调试过程与传统项目类似,但需要注意一些特殊的步骤和设置。
本文将介绍在Eclipse中使用Maven进行调试的详细步骤。
1. 打开Eclipse,并打开你的Maven项目。
确保Maven项目的pom.xml文件存在,并且项目已经成功构建。
2. 在Eclipse的导航栏中选择"Run",然后点击"Debug Configurations"。
这将打开调试配置窗口。
3. 在调试配置窗口的左侧选择"Java Application",然后点击右键并选择"New"。
这将创建一个新的调试配置。
4. 在"Main"选项卡中,选择你要调试的Java类。
通常情况下,你需要选择包含main方法的类。
如果你不知道哪个类包含main方法,可以在Eclipse的导航栏中找到"Project Explorer"视图,然后展开项目结构来查找。
5. 接下来,点击"Arguments"选项卡。
在"Program arguments"文本框中输入任何你想传递给main方法的参数。
如果你不需要传递参数,则可以留空。
6. 然后,点击"Classpath"选项卡。
在"User Entries"部分,点击"Add"按钮并选择"Maven Dependencies"。
这将确保在调试过程中使用Maven项目的所有依赖库。
7. 配置完成后,点击"Apply"保存设置,并点击"Debug"按钮开始调试。
8. 在调试过程中,你可以使用Eclipse提供的各种调试功能来检查变量的值、单步执行代码、设置断点等。
搭建Eclipse+MyEclipse+tomcat开发环境+开发J2EE的第一步

搭建Eclipse+MyEclipse+tomcat开发环境开发J2EE的第一步一、安装JDK首先下载JDK 5.0(JDK 5.0的下载页面为:/j2se/1.5.0/download.jsp);然后运行JDK 5.0安装程序jdk-1_5_0_06-windows-i586-p.exe,安装过程中所有选项保持默认;最后配置JDK的环境变量:在“我的电脑”上点右键—>“属性”—>“高级”—> “环境变量(N)”。
新建系统变量JAVA_HOME:C:\Program Files\Java\jdk1.5.0_06;新建系统变量CLASSPATH:.;%JAVA_HOME%\lib;(注意:点号表示当前目录,不能省略)在系统变量Path的值的前面加入以下内容:%JAVA_HOME%\bin;(注意:这里的分号不能省略) 到这里,JDK安装完毕。
下面我们测试一下JDK是否安装成功:将以下内容复制到记事本中:public class HelloJAVA{public static void main(String srg[]){System.out.println("Hello JAVA!");}}另存为“HelloJAVA.java”(不含引号,下同),并保存到D盘根目录下。
在命令行依次输入下图中红线所标注的命令:如果出现上图红框中所标注的内容,则说明JDK安装成功!注意:如果以后要安装诸如Eclipse、Borland JBuilder、JCreator、IntelliJ IDEA等集成开发环境(IDE,Integrated Developm ent Environment),应该在IDE中编译运行一个简单的HelloWorld程序,以保证IDE可以识别出JDK的位置。
二、安装Tomcat首先下载jakarta-tomcat-5.0.30.zip,之所以下载免安装版的好处是可以使用多个Tomcat (jakarta-tomcat-5.0.30.zip的下载页面为:/tomcat/tomcat-5/v5.0.30/bin/);然后将jakarta-tomcat-5.0.30.zip直接解压到D盘根目录:最后配置Tomcat的环境变量:在“我的电脑”上点右键—>“属性”—>“高级”—> “环境变量(N)”。
Eclipse+CXF开发Web服务、Tomcat部署

一、下载CXF包,apache-cxf-2.6.1.tar.gz,解压后得到文件夹apache-cxf-2.6.1图1二、创建服务端1、新建Dynamic Web ProjectFile—New—Project—Web—Dynamic Web Project;工程命名后Next,将“Default output folder”改为WebContent/WEB-INF/classes,Next;勾选“Generate web.xml deployment discriptor”。
图2图3图42、将解压后apache-cxf-2.6.1文件夹lib文件夹中的JAR文件导入工程下WebContent/WEB-INF/lib中,或直接复制到相应文件夹下,刷新工程。
3、创建服务接口工程右键—New—Interface,添加代码:package com.yxj;import javax.jws.WebService;import javax.jws.WebParam;import javax.jws.WebMethod;@WebServicepublic interface IcxfWB {@WebMethodString sayHello(@WebParam(name="name") String name);}说明:“@WebService”标记表示该接口是一个WebService服务,@ WebMethod标记表示WebService中的方法;@WebParam(name="paramName")表示方法中的参数,name属性限制了参数的名称,若没有指定该属性,参数将会被重命名。
4、创建服务实现类package com.yxj;public class CxfWBImpl implements IcxfWB {public String sayHello(String name) {return"Hello "+name;}}5、编辑WebContent/WEB-INF下web.xml文件<?xml version="1.0"encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xmlns:web="/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID"version="3.0"><display-name>CXFService</display-name><context-param><param-name>contextConfigLocation</param-name><param-value>WEB-INF/service-beans.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><servlet><servlet-name>CXFServlet</servlet-name><servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class></servlet><servlet-mapping><servlet-name>CXFServlet</servlet-name><url-pattern>/*</url-pattern></servlet-mapping></web-app>其中,<context-param>指定了spring的相应配置,在<param-value>中指定了配置文件的位置;<servlet-mapping>下的<url-pattern>指明了服务访问时地址的形式,“/*”代表URL地址中,包名称后直接跟服务endpoint地址,若指明<url-pattern>为“/webservice/*”,则URL为包名/ webservice/endpoint?wsdl。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 安装Maven(配置Maven环境变量+Eclipse中的Maven插件)
这步就不多说了,网上一搜一大把,要说明的只有一点,第一次配好Maven插件,一定要更新一次远程库的索引,这样添加依赖的时候就不会出现搜不到那个jar包的情况了(当然要先启用远程库的index,不然也搜不到jar包的)
2. 新建Maven项目、配置
新建了Maven项目后,属性->Project Facets->”convert to faceted form…”,在随后出现的Project Facet中勾选如下2项,注意选择后面的version:
选择好了,确定,在次打开项目->属性,可以看到多了一个Deployment Assembly 选项,打开可以看到这里配置的是文件夹和发布文件夹的对应关系
由于maven打包时默认从src/main/webapp目录下面取web.xml文件,我们还要手动在下面建立一个这样的文件。
3. 配置调试的服务器(Apathc Tomcat)
如下图所示,Eclipse中新建一个Tomcat容器:
3. 运行Maven项目
经过上面的配置,是不是就可以运行我们的maven项目了呢??当然可以。
选择了上图所示的“Run on Server”后可以运行我们的Maven项目了。
4. 剩余问题
(1)、我们浏览器输入“http://localhost:8080/ssh2/index.html”返回404??
不要急,可以到工作空间的目
录.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps下面看到有个我们的maven项目名称的文件夹,这是我们调试时自动发布的目录,可以看到下面并没有我们添加的页面,神马情况??
这是我们没有配置src/main/webapp的发布目录,所以调试时也没有把下面的html 等内容发布
解决:
项目—> 属性-> Deployment Assembly -> Add -> folder -> 选择
src/main/webapp
这一步就是配置webapp目录要发布到项目的根目录下,我们再看
到.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\ssh2目录下面有自动发布的html文件
刷新浏览器页面,OK页面出来了!!!
(2)、是不是这样就OK了??答案是否定的。
我们在pom.xml中添加了那些依赖的jar后,一旦在代码中应用。
当我们本地调试时,会报ClassNotFound错误,这是为什么??
因为Tomcat不懂这些配置,你必须把Maven Dependencies中的jar与发布目录配置好:
项目—> 属性-> Deployment Assembly -> Add -> Java Build Path Entries -> 选择Maven Dependencies -> Finish -> OK
这一步就是配置Maven依赖包发布目录,这样调试时会自动把那些jar发布到指定目录下,tomcat也能找到那些jar了。
1、在安装了m2eclipse插件并配置好maven-tomcat-plugin后,单击Eclipse 菜单“Run”中的“Run Configurations”。
2、在弹出的对话框中的左侧树中找“到Maven Build”,在其上点击右键并单击“New”。
3、在右侧的“Name”一栏填入自定义的名称。
单击在“Main”选项卡的“Browse Workspace”按钮,选择目标项目,选择后在“Base directory”一栏中会出现形如“${workspace_loc:/project_a}”的内容(project_a是前文所述应用项目A,它会根据你所选的目标项目而改变)。
4、在“Goals”一栏中填入“tomcat:run”。
5、在“Maven Runtime”选择你需要的Maven环境(注意:必须是2.0.8以上的版本)。
6、单击“Apply”,配置完成。
经过测试,通过以上配置,在eclipse自身的Run(“右箭头”)和Debug(“小虫子”)按钮下都会找到以你先前配置中“Name”值为名的条目(条目最前端也会有“m2”标识),单击之后即可启动基于Tomcat之上的相应项目的运行操作或调试操作。
至于是运行项目还是调试项目,只取决于你单击的条目是在“右箭头”按钮下还是在“小虫子”按钮下。
从这方面来看,他们还是很智能化的。
其实上述配置并不复杂,我相信读者按照以上步骤去做是完全可以搞定的。
分割线之前的问题是想引发大家关于软件易用性、兼容性方面的的一些思考。
希望对这两点有兴趣的朋友回帖探讨。