EE颠覆者第七章1 web开发

src/main/resources/templates/index.html

<html xmlns:th="http://www.thymeleaf.org">
  <head>
  	 <meta content="text/html;charset=UTF-8"/>
  	 <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
     <meta name="viewport" content="width=device-width, initial-scale=1"/>
    <link th:href="@{bootstrap/css/bootstrap.min.css}" rel="stylesheet"/> 
    <link th:href="@{bootstrap/css/bootstrap-theme.min.css}" rel="stylesheet"/>
  </head>
  <body>
  
  <div class="panel panel-primary">
    <div class="panel-heading">
        <h3 class="panel-title">访问model</h3>
    </div>
    <div class="panel-body">
        	<span th:text="${singlePerson.name}"></span> 
    </div>
  </div>
  
  <div th:if="${not #lists.isEmpty(people)}">
	  <div class="panel panel-primary">
	    <div class="panel-heading">
	        <h3 class="panel-title">列表</h3>
	    </div>
	    <div class="panel-body">
	        <ul class="list-group">
				<li class="list-group-item" th:each="person:${people}">
				    <span th:text="${person.name}"></span>
				   	<span th:text="${person.age}"></span>
				   	<button class="btn" th:onclick="'getName(\'' + ${person.name} + '\');'">获得名字</button>
				</li>
	        </ul>
	    </div>
	 </div>
 </div>
  
  <script th:src="@{jquery-1.10.2.min.js}" type="text/javascript"></script><!-- 2 -->
  <script th:src="@{bootstrap/js/bootstrap.min.js}"></script><!-- 2 -->
  
      //js 中访问 model
  <script th:inline="javascript">
  	var single = [[${singlePerson}]];
  	console.log(single.name+"/"+single.age)
  	
  	function getName(name){
  		console.log(name);
  	}
  </script>
  
  </body>
 </html>
  <div th:if="${not #lists.isEmpty(people)}">
      支持 > < >= <= == !=
th:inline="javascript" 添加到 script标签。
[[${}]] 获取值
th:onclick=" 'getName(\'' + ${person.name} + '\');' " 
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
			<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-websocket</artifactId>
		</dependency>
public class Person {
	private String name;
	private Integer age;
	
	public Person() {
		super();
	}
	public Person(String name, Integer age) {
		super();
		this.name = name;
		this.age = age;
	}//get set
}

src/main/resources/static/jquery-1.10.2.min.js

import org.springframework.ui.Model;

	@RequestMapping("/")
	public String index(Model model){
		Person single = new Person("aa",11);
		
		List<Person> people = new ArrayList<Person>();
		Person p1 = new Person("xx",11);
		Person p2 = new Person("yy",22);

		people.add(p1);
		people.add(p2);
		
		model.addAttribute("singlePerson", single);
		model.addAttribute("people", people);
		
		return "index";
	}

jsonView

	@RequestMapping(value = "/json",produces={MediaType.APPLICATION_JSON_VALUE})
	public String json(Model model) {
		Person single = new Person("aa",11);
		model.addAttribute("single", single);
		return "jsonView";
	}
//	
	 @Bean
	 public MappingJackson2JsonView jsonView(){
			MappingJackson2JsonView jsonView = new MappingJackson2JsonView();
			return jsonView;
	}

返回:

{
    "single": {
        "name": "aa",
        "age": 11
    }
}

扩展配置

@Configuration
public class WebMvcConfig  extends WebMvcConfigurerAdapter{
	
	 @Override
	   public void addViewControllers(ViewControllerRegistry registry) {
	       registry.addViewController("/xx").setViewName("/xx");
	   }

}

tomcat

server.port = 8443

server.ssl.key-store = .keystore
server.ssl.key-store-password= 111111
server.ssl.keyStoreType= JKS
server.ssl.keyAlias: tomcat

logging.level.org.springframework.web = DEBUG

spring.mvc.favicon.enabled=false


#用户会话的过期时间,以秒为单位
server.session-timeout= 1000

#配置访问路径
server.context-path= /

server.tomcat.uri-encoding= UTF-8

#是否开启压缩
server.tomcat.compression= off 
代码配置tomcat
@Component
public class CustomServletContainer implements EmbeddedServletContainerCustomizer{

	@Override
	public void customize(ConfigurableEmbeddedServletContainer container) {
		container.setPort(8888);
		container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404.html"));
		container.setSessionTimeout(10,TimeUnit.MINUTES);
		
	}
	
}

特定配置

    @Bean
    public EmbeddedServletContainerFactory servletContainer() {
    TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
    factory.setPort(8888);
    factory.setSessionTimeout(10, TimeUnit.MINUTES);
    factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404.html"));
    return factory;
    }




    @Bean
    public EmbeddedServletContainerFactory servletContainer() {
      TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
          @Override
          protected void postProcessContext(Context context) {
            SecurityConstraint securityConstraint = new SecurityConstraint();
            securityConstraint.setUserConstraint("CONFIDENTIAL");
            SecurityCollection collection = new SecurityCollection();
            collection.addPattern("/*");
            securityConstraint.addCollection(collection);
            context.addConstraint(securityConstraint);
          }
        };

      tomcat.addAdditionalTomcatConnectors(httpConnector());
      return tomcat;
    }
    @Bean
    public Connector httpConnector() {
      Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
      connector.setScheme("http");
      connector.setPort(8080);
      connector.setSecure(false);
      connector.setRedirectPort(8443);
      return connector;
    }


替换为 jetty

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-tomcat</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jetty</artifactId>
            <artifactId>spring-boot-starter-undertow</artifactId>//替换为undertow
		</dependency>

SSL配置

ssl secure sockets layer 安全套接层

> keytool -genkey -alias tomcat

.keystore 放在最外层的根目录,

src/main/resources/static/index.html

server.port = 8443
server.ssl.key-store = .keystore
server.ssl.key-store-password= 111111
server.ssl.keyStoreType= JKS
server.ssl.keyAlias: tomcat

logging.level.org.springframework.web = DEBUG

输入http转向https

    @Bean
    public EmbeddedServletContainerFactory servletContainer() {
      TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
          @Override
          protected void postProcessContext(Context context) {
            SecurityConstraint securityConstraint = new SecurityConstraint();
            securityConstraint.setUserConstraint("CONFIDENTIAL");
            SecurityCollection collection = new SecurityCollection();
            collection.addPattern("/*");
            securityConstraint.addCollection(collection);
            context.addConstraint(securityConstraint);
          }
        };

      tomcat.addAdditionalTomcatConnectors(httpConnector());
      return tomcat;
    }
    @Bean
    public Connector httpConnector() {
      Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
      connector.setScheme("http");
      connector.setPort(8080);
      connector.setSecure(false);
      connector.setRedirectPort(8443);
      return connector;
    }

自定义自己的Favicon页面标题栏图片

src/main/resources/static/favicon.ico

src/main/resources/favicon.ico

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java EE开发颠覆者在线看是指在Java Enterprise Edition(Java EE开发领域中一种新兴的技术或工具,能够颠覆传统的开发方式,使开发人员能够更加方便、高效地进行应用程序的开发和部署。 传统的Java EE开发方式通常需要在本地搭建开发环境、安装并配置各种开发工具和中间件,并且需要手动编译、打包和部署应用程序。这种方式费时费力,不利于快速迭代和开发效率的提升。 而Java EE开发颠覆者在线看则提供了一种更加现代化和便捷的开发方式。开发者可以通过在线平台进行开发,无需在本地进行环境搭建和工具配置。在线平台提供了各种功能模块和工具,如代码编辑器、调试器、数据库管理器等,开发者可以直接在浏览器中进行开发和调试。 Java EE开发颠覆者在线看还提供了自动化部署和持续集成功能。开发者可以将应用程序直接部署到云端服务器,并通过集成的CI/CD工具进行自动化构建和测试。这大大加快了开发和发布过程,提高了开发效率。 此外,Java EE开发颠覆者在线看还支持容器化部署。开发者可以将应用程序通过容器技术(如Docker)打包,并部署到云平台上的容器集群中。这种方式可以提供更好的水平扩展性和高可用性,同时也简化了应用程序的部署和管理。 总的来说,Java EE开发颠覆者在线看通过提供现代化的开发工具、自动化部署和持续集成、容器化部署等功能,使Java EE开发更加高效、便捷和可靠。这种技术将成为未来Java EE开发的趋势,为开发者带来更好的开发体验和效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值