‘壹’ 新手,springBoot项目写完之后,别人怎么通过http的网址访问到我的网址,也就是如何上线,网址已经购买好了
将项目打包发布到服务器就可以了啊
‘贰’ springmvc工程启动成功 什么也访问不了
在某些情况下,有可能你会有这种需求:在Spring/SpringMVC项目中,当Spring/SpringMVC启动完成后,你需要执行一个方法来完成某些事件(比如创建网站地图,比如从订阅Redis服务器等),这个时候,可以使用Tomcat/Servlet容器提供的事件回调机制来完成,但是这样有个问题是:无法使用Spring提供的Annotation,解决方法是:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.storezhang.web;
import com.storezhang.util.TimeUtils;
import com.storezhang.video.util.SiteMapUtils;
import java.util.Timer;
import java.util.TimerTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Service;
/**
* 启动监听器
*
* @author Storezhang
*/
@Service
public class StartupListener implements ApplicationListener<ContextRefreshedEvent> {
@Autowired
private SiteMapUtils sites;
@Override
public void onApplicationEvent(ContextRefreshedEvent evt) {
if (evt.getApplicationContext().getParent() == null) {
createSitemap();
}
}
private void createSitemap() {
Timer timer = new Timer("createSitemap", true);
timer.schele(new TimerTask() {
@Override
public void run() {
System.out.println("--->Create sitemap...");
sites.createSiteMap();
System.out.println("--->Success create sitemap...");
}
}, 1 * TimeUtils.MIN);
}
}
后续研究:
applicationontext和使用MVC之后的webApplicationontext会两次调用上面的方法,如何区分这个两种容器呢?
但是这个时候,会存在一个问题,在web 项目中(spring mvc),系统会存在两个容器,一个是root application context ,另一个就是我们自己的 projectName-servlet context(作为root application context的子容器)。
这种情况下,就会造成onApplicationEvent方法被执行两次。为了避免上面提到的问题,我们可以只在root application context初始化完成后调用逻辑代码,其他的容器的初始化完成,则不做任何处理,修改后代码
如下:
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
if(event.getApplicationContext().getParent() == null){//root application context 没有parent,他就是老大.
//需要执行的逻辑代码,当spring容器初始化完成后就会执行该方法。
}
}
‘叁’ springmvc环境搭建好了怎么访问
项目创建
1
目前进行软件开发中,不再是创建简单的java动态项目,而是创建目前比较流行的maven项目。通过创建maven项目可以提高项目的开发效率防止依赖包冲突等一系列问题,可以参考下面的经验创建maven项目。
9如何创建maven项目
2
maven项目创建完成后,需要在pom的配置文件中,增加对springmvc等jar包的引入;如果创建的是普通动态web项目,需要手动将springMVC需要的jar包添加到系统构建中。
3
在pom文件中,创建一个dependencies依赖配置。然后从maven远程仓库或者是中央仓库中搜索spring-webmvc依赖包,找到plugin配置文件,将这个文件粘贴到刚才创建的依赖中。即可完成对依赖包的引入。
4
查看依赖包是否引入成功,可以点击maven项目名称,打开java Resources java资源,在java资源中有个Libraries;展开Libraries,这里有jdk版本和Maven Dependencies(maven依赖),展开maven依赖就可以看到springmvc的jar被引入到项目中。
END
项目配置
1
作为web应用,在WEB-INF下有一个web.xml文件配置。作为web应用,都需要在这里进行配置。maven工程的web.xml文件存放在Deployed Resources部署资源-->webapp-->WEB-INF-->web.xml。
2
打开web.xml文件,需要在这里进行对拦截器的配置。对于拦截器一般都需要配置的是servlet和servlet-mapping两个文件,因为这里使用的是springmvc的拦截器。所以在servlet-class中选择springmvc中的分派拦截器。
3
根据springmvc的约定,在web中配置的拦截器的名称是hello。所以在web-inf文件下需要创建一个hello-servlet的配置文件。这里主要是对框架的一些配置。主要包括控制器包配置;返回页面的前缀和后缀。
4
创建测试的控制器。创建控制器的包要在hello-servlet中配置。控制器的类上要加上Controller的注解,类中的方法便是一个请求,在方法头上要加上requestMapping的配置。
5
创建返回的页面。根据hello-servlet中配置的页面的前缀和后缀,所以在web-inf文件夹下创建jsp文件夹,根据控制器返回的字符串,需要创建user文件夹,然后在user文件夹下创建add.jsp文件。
END
运行项目
1
运行项目需要在pom文件中增加对jetty插件的引入。在pom文件中,新增节点build-->plugins-->plugin增加jetty插件。
2
运行项目。maven运行项目的时候需要使用maven命令执行。在pom.xml文件上行点击右键,选择Run as运行--如果是第一次运行,选择第三个选项。在命令框中输入命令jetty:run即可运行,如果想跳过测试可以加命令-skipping test。
3
在控制台中如果没有错,而且日志打印出jetty运行成功。说明启动正常,打开浏览器输入一个servlet控制器查看访问是否正常。如果页面没有报错而且显示的是创建的jsp页面,说明配置正常完成。
‘肆’ 我使用springboot内置的tomcat部署项目,为什么直接输入localhost:8081/hello就可以访问
spring boot内置了tomcat中间件
所以启动后直接就绑定本机8081端口,简化了部署环境的问题,让开发人员重点放在编码上
‘伍’ Tomcat部署springmvc项目无法访问url
可以试一下改成具体的文件名
‘陆’ java sts 搭建了springboot 项目为什么访问不到后台路径呀
你的地址要加上index才能访问的到啊,因为你的没有默认访问地址啊
‘柒’ 创建Spring boot入门项目 在项目中,如何用浏览器所写代码
Springboot项目启动后自动打开浏览器访问。
在Springboot项目中每次启动完项目,手动在浏览器输入访问地址太麻烦了。在启动类中加入下方代码,就可高效地在控制台中单击URL访问项目了。此外,还可以设置打开系统默认浏览器,并加载指定的页面,在application.yml文件中配置相关的参数,至此,可愉快地启动项目,等待浏览器自动加载我们指定的页面。
‘捌’ springboot配置启动后自动打开浏览器访问项目
你好!
Springboot里面有个ApplicationReadyEvent事件,该事件表示application应该初始化完成,可以准备接收请求。
想要在启动后打开浏览器,可以将执行代码放到这个事件当中。
@EventListener({ApplicationReadyEvent.class})
voidapplicationReadyEvent(){
System.out.println("应用已经准备就绪...启动浏览器");
Stringurl="http://localhost:8080";
Runtimeruntime=Runtime.getRuntime();
try{
runtime.exec("rundll32url.dll,FileProtocolHandler"+url);
}catch(IOExceptione){
e.printStackTrace();
}
}
希望对你有帮助!
‘玖’ springboot打成jar包后如何访问数据库
spring boot访问数据库有很多方法,比较常见的就是用mybatis访问数据库。
你需要先学习mybatis知识,建议看一下轻量级java web(ssm)这本书,讲得很详细,
掌握mybatis之后,访问数据库就非常方便了,不管你是否打成jar包,访问数据库都是一样的。
‘拾’ 如何通过域名访问阿里云部署的springboot项
1、首先你要有个域名,阿里云可以买
2、域名需要做解析,解析到你阿里云的ip上
3、阿里云控制台的防火墙和阿里云服务器(Linux)本身的防火墙都要打开 80 端口
4、springboot项目启动时设置端口为 80 (获取通过nginx转发也可以)