精华内容
下载资源
问答
  • tomcat是干什么的? 什么叫web容器以及作用?

    千次阅读 多人点赞 2019-10-30 14:18:58
    这个机器就是web项目。石头是请求,金子是响应,我家就是服务器。如果你把一箱石头邮到我家,机器可不会自己接受快递然后把石头进行加工成金子再快递给你,这个时候帅气的我就登场了,我接受快递,把石头给机器变成...

    tomcat是干什么的?

    我家有一台机器,可以把石头变成金子。你快递给我一箱子石头,让我把它们变成一箱子金子再快递给你。
    这个机器就是web项目。石头是请求,金子是响应,我家就是服务器。如果你把一箱石头邮到我家,机器可不会自己接受快递然后把石头进行加工成金子再快递给你,这个时候帅气的我就登场了,我接受快递,把石头给机器变成金子后再打包快递给你。我就是那个tomcat。
    没有我,你的一箱子石头邮过来也没用。我家机器不会搭理你。更不会给你金子。

     

    什么叫web容器以及作用?

    甲说:就是一种所谓的中间件。
    你想,如果让你凭空写一个能通过web访问的程序,是不是很难?
    有了web容器,只要按照它的规范写出功能逻辑(比如servlet,又比如asp)就可以了,而网络连接管理,会话管理等功能都由容器实现,大大简化了开发。

    乙说:tomcat 是servlet的容器。
    web 容器就是实现了Java的那些接口:javax.servlet。
    而且jsp也是servlet的。
    web 容器启动后一直运行,监听所有提交到他所监控的那个端口的请求,并对此做出反映。
     

    展开全文
  • Eclipse中的静态和动态web项目

    万次阅读 2015-03-31 16:29:23
    在Eclipse中奖web项目分为了Dynamic Web Project和...创建的页面只能是静态的就作静态web项目,而创建的页面是动态的(有数据变化)就叫做动态web项目。 1. Static Web Project Create a Web proj

           在Eclipse中奖web项目分为了Dynamic Web Project和Static Web Project。那么这两种有什么区别呢?其实这里的Dynamic和Static是通过页面来区分的。创建的页面只能是静态的就叫作静态web项目,而创建的页面是动态的(有数据变化)就叫做动态web项目。


    1. Static Web Project

    Create a Web projectfor static content (HTML files) only

    创建静态内容的页面,页面中全部的东西都是写死的。就相当于我们的原型图似的。


    创建了一个静态web项目,只能够创建页面文件,不能够创建java或者其他编程语言文件

    直接点击就可以看,不需要运行容器

    2. Dynamic Web Project

        页面中的东西有的可以是动态的,比如jsp页面中一些java代码,或者一些绑定的数据等运行这些页面需要指定web运行的容器(TomcatJboss等)

    动态web项目创建后的目录结构




    展开全文
  • web什么

    2018-09-02 11:49:09
    B/S 浏览器/服务器  浏览器---服务器---数据库 JDBC:Java与数据库连接 服务器:也叫中间件,开源tomcat. JavaEE中的servlet :实现浏览器与服务器中的项目交互. Web项目: ...//eclipse叫web...

          B/S     浏览器/服务器

     浏览器---服务器---数据库

    JDBC:Java与数据库连接

    服务器:也叫中间件,开源tomcat.

    JavaEE中的servlet :实现浏览器与服务器中的项目交互.

    Web项目:

    --src :项目源代码文件夹目录

    --web :  用户可直接访问到此文件夹.存储项目的页面.比如:html,jsp文件.

    //eclipse叫webcontent ,

    //Myeclipse叫webroot.

    --lib :项目需要使用的外部的工具包,驱动包.

    展开全文
  • 本文承接《Web 项目 tiger 开始 之1 引入资源》 国际化主要用于应用跨国时使用,比如在中国时应用为中文,在韩国时,应用显示为韩文,在日本时,应用又显示为日文等。又或者是用户点击什么语言就可以自动切换什么...

    本文导读

    • 本文承接《Web 项目 tiger 开始 之1 引入资源》
    • 国际化主要用于应用跨国时使用,比如在中国时应用为中文,在韩国时,应用显示为韩文,在日本时,应用又显示为日文等。又或者是用户点击什么语言就可以自动切换什么语言

    自动语言切换

    需求分析

    • 国际化主要用于应用跨国时使用,比如在中国时应用为中文,在韩国时,应用显示为韩文,在日本时,应用又显示为日文等,这叫应用跟着系统语言环境自动切换;
    • 下面以“tiger”项目的首页为例进行说明

    准备国际化文件

    • 编写国际化配置文件,抽取页面需要显示的国际化消息
    • 在类路径下新建一个目录“i18n”(目录名字随意)
    • 然后在“i18n”目录下新建 “index.properties”、“index_en_US.properties”、“index_zh_CN.properties” 三个属性文件
    • “index.properties”:存放默认的语言,名称通常与页面名称一致
    • “index_en_US.properties”:存放英文,en表示语言(英文)缩写,US表示国家(美国)缩写,请按规范格式写即可
    • “index_zh_CN.properties”:存放中文,zh表示语言(中文)缩写,CN表示国家(中国)缩写,请按规范格式写即可
    • 当然还可以写更多的语言文件,当它们的命名符合规范时,IDEA会自动将它们绑定到一起,这样在后面输入值的时候会很方便

    #index.properties
    login_button=登录·
    login_name=用户名·
    login_password=密码·
    login_remember=记住我·
    login_tip=请登录·
    #index_zh_CN.properties
    login_button=登录
    login_name=用户名
    login_password=密码
    login_remember=记住我
    login_tip=请登录
    #index_en_US.properties
    login_button=Sign in
    login_name=Username
    login_password=Password
    login_remember=Remember me
    login_tip=Please sign in
    • 为了防止资源文件中文乱码,请勾选如下IDEA设置

    Spring Boot 自动配置国际化原理

    • 以前使用 Spring MVC 来做国际化的步骤如下:
    1. 编写国际化配置文件,这一步 Spring Boot 同样要做,上面已经做了
    2. 使用 ResourceBundleMessageSource API管理国际化资源文件,Spring Boot帮我们做了
    3. 在页面使用 fmt:message 取出国际化内容,Spring Boot 因为这里使用 Thymeleaf 模板引擎,所以会用 Thymeleaf 进行取值
    • Spring Boot 现在自动配置好了管理国际化资源文件的组件 MessageSourceAutoConfiguration,可以看出底层仍然使用的是 ResourceBundleMessageSource;
    package org.springframework.boot.autoconfigure.context;
    @Configuration
    @ConditionalOnMissingBean(value = MessageSource.class, search = SearchStrategy.CURRENT)
    @AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE)
    @Conditional(ResourceBundleCondition.class)
    @EnableConfigurationProperties
    public class MessageSourceAutoConfiguration {
    
    	private static final Resource[] NO_RESOURCES = {};
    
    	@Bean
    	@ConfigurationProperties(prefix = "spring.messages")
    	public MessageSourceProperties messageSourceProperties() {
    		return new MessageSourceProperties();
    	}
    
    	@Bean
    	public MessageSource messageSource() {
    		MessageSourceProperties properties = messageSourceProperties();
    		ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    		if (StringUtils.hasText(properties.getBasename())) {
    			messageSource.setBasenames(StringUtils.commaDelimitedListToStringArray(
    					StringUtils.trimAllWhitespace(properties.getBasename())));
    		}
    		if (properties.getEncoding() != null) {
    			messageSource.setDefaultEncoding(properties.getEncoding().name());
    		}
    		messageSource.setFallbackToSystemLocale(properties.isFallbackToSystemLocale());
    		Duration cacheDuration = properties.getCacheDuration();
    		if (cacheDuration != null) {
    			messageSource.setCacheMillis(cacheDuration.toMillis());
    		}
    		messageSource.setAlwaysUseMessageFormat(properties.isAlwaysUseMessageFormat());
    		messageSource.setUseCodeAsDefaultMessage(properties.isUseCodeAsDefaultMessage());
    		return messageSource;
    	}
    ......
    # INTERNATIONALIZATION (MessageSourceProperties)
    spring.messages.always-use-message-format=false # Whether to always apply the MessageFormat rules, parsing even messages without arguments.
    spring.messages.basename=messages # Comma-separated list of basenames (essentially a fully-qualified classpath location), each following the ResourceBundle convention with relaxed support for slash based locations.
    spring.messages.cache-duration= # Loaded resource bundle files cache duration. When not set, bundles are cached forever. If a duration suffix is not specified, seconds will be used.
    spring.messages.encoding=UTF-8 # Message bundles encoding.
    spring.messages.fallback-to-system-locale=true # Whether to fall back to the system Locale if no files for a specific Locale have been found.
    spring.messages.use-code-as-default-message=false # Whether to use the message code as the default message instead of throwing a "NoSuchMessageException". Recommended during development only.
    
    • 如上所示,spring.messages.basename=messages,就是配置国际化资源文件的基本名路径,默认是“message”,意思是如果我们没有在全局配置文件中覆盖此配置项的话,它默认会扫描类路径下的“messages.properties”、"messages_en_US.properties"、"messages_zh_CN.properties"等格式的文件作为国际化文件
    • 因为应用会有多个页面,就会有多套资源文件,这时 spring.messages.basename 的值用逗号分隔即可

    页面获取国际化值

    • 因为页面直接使用的 Html 加 Thymeleaf 模板引擎,所以页面上直接使用 Thymeleaf 获取国际化文件的值即可,对于 Thymeleaf 不熟悉的,可以参考《Thymeleaf 简介及入门》
    • 通过 Thymeleaf 文档可以查看知道

    下面重新修改之前的index.html页面,为它获取国际化值

    <!DOCTYPE html>
    <!--xmlns写上之后 Thymeleaf就会有提示,更加方便-->
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <meta name="description" content="">
        <meta name="author" content="">
        <title>Signin Template for Bootstrap</title>
        <!-- Bootstrap core CSS
        如果没有导入bootstrap的webjars包,则不要使用th:href覆盖掉原来静态文件夹目录下的文件-->
        <link href="asserts/css/bootstrap.min.css" th:href="@{/webjars/bootstrap/4.0.0/css/bootstrap.css}" rel="stylesheet">
        <!-- Custom styles for this template
        理解原来之后就知道,下面th:href取值就是覆盖掉默认的href属性值,好处是可以不和前端人员代码发生冲突
        thymeleaf的@{}表达式会自动加上"/应用上下文路径"前缀,这就避免了传统jsp中的${request.context.path}这种操作了
        -->
        <link href="asserts/css/signin.css" th:href="@{/asserts/css/signin.css}" rel="stylesheet">
    </head>
    <body class="text-center">
    <form class="form-signin" method="post">
        <!-- 取值替换原来默认的值-->
        <img class="mb-4" th:src="@{/asserts/img/bootstrap-solid.svg}" src="asserts/img/bootstrap-solid.svg" alt=""
             width="72" height="72">
    
        <h1 class="h3 mb-3 font-weight-normal" th:text="#{login_tip}">Please sign in</h1>
        <label class="sr-only" th:text="#{login_name}">Username</label>
        <input type="text" name="username" class="form-control" th:placeholder="#{login_name}" placeholder="Username"
               required="" autofocus="">
        <label class="sr-only" th:text="#{login_password}">Password</label>
        <input type="password" name="password" class="form-control" placeholder="Password"
               required="" th:placeholder="#{login_password}">
    
        <div class="checkbox mb-3">
            <label>
                <input type="checkbox" value="remember-me"/> [[#{login_remember}]]
            </label>
        </div>
        <button class="btn btn-lg btn-primary btn-block" type="submit" th:text="#{login_button}">Sign in</button>
        <p class="mt-5 mb-3 text-muted">© 2017-2018</p>
        <a class="btn btn-sm">中文</a>
        <a class="btn btn-sm">English</a>
    </form>
    </body>
    </html>
    • th:text="#{xxx}":获取国际化文件中的xxx属性值,然后替换标签原来的文本默认值
    • th:placeholder="#{xxx}":获取国际化文件中的xxx属性值,然后替换标签placeholder属性原来的默认值,同理可以替换任意属性的默认值
    • [[#{login_remember}]]:对于 <input xxx />这种自封闭标签得用 Thymeleaf的行内表达式取值

    运行测试

    • 效果:根据浏览器语言设置的信息切换了国际化;

    指定语言切换

    • 上面是应用根据跟随浏览器语音自动进行语音切换,现在需要改成用户“点击中文”则切换中文,“点击英文”则切换英文。
    • 原理是需要使用到 “国际化Locale(区域信息对象)”与 “ LocaleResolver(获取区域信息对象)”两个API 

    切换原理

    • 应用国际化默认之所以能随着浏览器的语言变化而变化,是因为浏览器Http请求时,会在请求头中携带语言信息,这是后台国际化变换的依据。

    • 第一部分中的 “自动语言切换” 之所以能用,是因为在 WebMvcAutoConfiguration 配置类中自动配置好了一个 区域信息解析器组件,如下所示逻辑是如果用户没有自己提供 区域信息解析器 “LocaleResolver”,那么它默认会使用一个叫 “AcceptHeaderLocaleResolver” 进行解析
    • 所以我们只需要自己提供一个  “LocaleResolver” 组件覆盖默认的即可
    package org.springframework.boot.autoconfigure.web.servlet;
    .....
    @Configuration
    @ConditionalOnWebApplication(type = Type.SERVLET)
    @ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class })
    @ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
    @AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
    @AutoConfigureAfter({ DispatcherServletAutoConfiguration.class,
    		ValidationAutoConfiguration.class })
    public class WebMvcAutoConfiguration {
    ......
    		@Bean
    		@ConditionalOnMissingBean
    		@ConditionalOnProperty(prefix = "spring.mvc", name = "locale")
    		public LocaleResolver localeResolver() {
    			if (this.mvcProperties
    					.getLocaleResolver() == WebMvcProperties.LocaleResolver.FIXED) {
    				return new FixedLocaleResolver(this.mvcProperties.getLocale());
    			}
    			AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
    			localeResolver.setDefaultLocale(this.mvcProperties.getLocale());
    			return localeResolver;
    		}
    .......
    }

    index.html 页面修改

    • 修改一下首页的“中文”、“英文”按钮,使用 Thymeleaf 的 @{xxx} 取值是会默认带上应用上下文的
    • @{/} 的效果就是 http://localhost:8080/tiger/
    • @{/(l=zh_CN)} 相当于 @{/?zh_CN},只是 Thymeleaf 不再使用 "?" 的方式为get请求路径带参数,而是使用"()"的方式
    • 页面上点击“中文”后,会跳转:http://localhost:8080/tiger/?l=zh_CN
    • 页面上点击“英文”后,会跳转:http://localhost:8080/tiger/?l=en_US
        <div class="checkbox mb-3">
            <label>
                <input type="checkbox" value="remember-me"/> [[#{login_remember}]]
            </label>
        </div>
        <button class="btn btn-lg btn-primary btn-block" type="submit" th:text="#{login_button}">Sign in</button>
        <p class="mt-5 mb-3 text-muted">© 2017-2018</p>
        <a class="btn btn-sm" th:href="@{/(l=zh_CN)}">中文</a>
        <a class="btn btn-sm" th:href="@{/(l=en_US)}">English</a>
    </form>
    </body>
    </html>

    自定义区域信息解析器

    package com.lct.component;
    
    import org.springframework.util.StringUtils;
    import org.springframework.web.servlet.LocaleResolver;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.util.Locale;
    
    /**
     * Created by Administrator on 2018/7/28 0028.
     * 自定义区域信息解析器
     */
    public class MyLocaleResolve implements LocaleResolver {
    
        /**
         * 解析http请求中地址中的标识,然后设置对应的区域信息值
         *
         * @param httpServletRequest
         * @return
         */
        @Override
        public Locale resolveLocale(HttpServletRequest request) {
            /**
             * 如果请求地址中含有l参数,如 http://localhost:8080/tiger/?l=en_US,则设置新的区域对象
             * 否则使用默认的区域对象,默认的区域对象不会使国际化再随着浏览器语言的变化而变化的
             */
            Locale locale = Locale.getDefault();
            String l = request.getParameter("l");
            if (!StringUtils.isEmpty(l)) {
                String[] ls = l.split("_");
                locale = new Locale(ls[0], ls[1]);
            }
            return locale;
        }
    
        /**
         * 设置区域信息,一般不做处理
         *
         * @param httpServletRequest
         * @param httpServletResponse
         * @param locale
         */
        @Override
        public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
    
        }
    }
    

    添加组件

    package com.lct.config;
    
    import com.lct.component.MyLocaleResolve;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.LocaleResolver;
    
    /**
     * Created by Administrator on 2018/7/28 0028.
     * 自定义配置类
     */
    @Configuration
    public class MyMvcConfig {
    
        /**
         * 将我们自己的 LocaleResolver 组件交于 Spring 容器管理
         * 从而覆盖 Spring Boot默认的区域信息解析器
         *
         * @return
         */
        @Bean
        public LocaleResolver localeResolver() {
            return new MyLocaleResolve();
        }
    
    }
    

    运行测试

    • 和预期的完全一致,因为请求路径中携带了"l"参数,所以不管浏览器 语言 选择的是什么,都不会影响
    • 当请求地址中不带 “l” 参数时,此时后台使用的是默认的 Locale,此时即使浏览器切换了语言,同样国际化也不会生效的

     

     

     

     

    展开全文
  • LK最近在对已有项目进行安全漏洞防御,现在将一些心得分享出来和大家一起讨论.主要是从下面几个方面进行漏洞修复。 1. 跨站脚本攻击漏洞(xss) 2. 敏感数据未加密传输 3. 验证机制缺陷 4. Cookie中未设HttpOnly...
  • 那时的网站不如网页,像一张浮夸的彩色报纸,那时是纯粹的 <em>HTML</em> 时代,不管你是不是访问这个网页,每个页面都是在服务器上存在的。 <h4>CGI技术 随后技术性强一点的网站可能会...
  • 什么web前端

    2021-01-18 17:15:08
    web前端是什么? 最初的前端应该是前台。就是做一些静态页面,p图工作也不难,没有什么代码逻辑。 当初就是这种想法,但是真正接触到这方面时发现并不是这样。和我当初想的相差太多了。 从狭义上讲,前端工程师...
  • 基础环境搭建 新建项目 ...填写项目ID,这个项目叫什么 指定打包类型,选WAR 指定Java11+的Java版本 导入一些包,比如Spring Web、Spring Session、Spring Boot DevTools、Lombok、MySQL Driv
  • JavaWeb项目中有一个内置对象request。内置对象是什么意思?顾名思义,在一般的项目中,我们经常可以看到 import java.util.* 这种代码块,它一般都位于我们项目最上方,代表给当前页面导包,内置对象就是可以...
  • Web项目(柜子管理系统)总结

    千次阅读 2014-07-17 16:44:34
    出发深圳之前,又接手一个小Web项目。不过从来没做过Web,现学现用,还好有光光扛着。 第一次亲自签合同,算是一次lead吧,不过个人感觉这个lead当的真心是略坑队友。呵呵了我 1. 需求不明确。虽然甲方自己...
  • web项目---webShell漏洞

    千次阅读 2019-03-04 10:14:40
    最近公司产品在现场发现了一个名webShell的漏洞, 也不知道它是用什么软件检测出来的。但是总得解决啊,就在网上搜有关资料,发现关于这些漏洞方面的还挺有意思的。下面是搜索网上找到的一些解决办法。 让保存...
  • 什么Web全栈工程师

    2021-01-22 18:10:44
    互联网项目,需要用到后端开发、前端开发、界面设计、产品设计、数据库、各种移动客户端、三屏兼容、restFul API设计和OAuth等等,比较前卫的项目,还会用到Single Page Application、Web Socket、HTML5/CSS3这些...
  • 什么是部署 开发环境: 程序猿写代码用的机器. 测试环境: 测试人员测试程序使用的机器. 一般是退役的部署机器. 部署环境(线上环境): 最终项目发布时所使用的机器. 对稳定性要求很高. 把程序拷贝安装到部署环境上, 这...
  • 我的项目practice,我用http://localhost:8080/mune/useradmin访问时出现404The origin server did not find a current representation for the target resource or is not willing to disclose that one exists...
  • 一般例如jsp,css,js之类的文件以及项目自带的图片资源什么的都是放在项目名/WebContent目录下(也可能是项目名/Webapp),以下事实基于这个环境下,并假设我有一个项目叫TaoBao,下面是目录 如图,jsp直接暴露在...
  • 点图上标明了的“加号”,选择“Web Application:Exploded——》from Model”,添加后,我这里(不知道叫什么,姑且叫做“文件们”)是默认在“Available Elements”下,需要把module项目下的所有“文件们”全部双击...
  • 一、web.xml是什么 web.xml学名部署描述符文件,是在Servlet规范中定义的,是Web应用的配置文件,是Web应用的...1、首先Web容器创建一个ServletContext对象(对应JSP中的application内置对象),这个Web项目所...
  • 需求和问题是最好动力。...项目一一部署演示给考官看,期望对方看完你的项目后能两眼发光,大一声:小伙子,明天你就来上班吧,待遇好说! 但多数情况是.......唉 伤心事就不多说了。   为什么我不能把自
  • 这是一个新的月份,这意味着该是时候为设计师和开发人员共享一些方便的资源了。 在这一轮中,我们整理了一系列值得研究的工具。... 您是否想知道CSS规则的含义是什么? 或哪个类选择器? 所有这些CSS专业术语起...
  • 先介绍一下什么是WAP浏览器。WAP浏览器,WAP Browser,又WAP微型浏览器,是用在手机或pda等设备上浏览WAP站点的工具。它与PC上的web浏览器比如ie、firefox相似。但由于手机wap站点用的是WML之类的语言,所以web...
  • 同事说一个服务是什么意思,java开发、我理解意思好像是一个web项目是一个服务。
  • NodeJs为什么叫NodeJs

    2011-06-03 18:58:00
     最开始NodeJs作者Dahl取的名字叫web.js,仅仅是一个web服务器,就像Apache,但是是非阻塞的。项目发展迅速,其实它不仅仅可用于web开发,而是可以做任何事情。 node有节点之意,将单个节点通过某种协议连接在一起...
  • 让我为什么会学JAVA WEB开发,说起来很简单:由于学校接了建行的一个项目,这个项目由老师来做,由于工作量大,老师忙不过来,就我帮忙,之前我对于什么是JSF什么是WEBLOGIC什么是JBUILD X什么是TOMCAT都不知道,...
  • WEB后端_Day02(HTTP协议、HttpServletRequest、HttpServletResponse、请求转发、Web 中的相对路径和绝对路径、重定向、JavaEE 项目的三层架构) HTTP 协议 什么是HTTP 协议 协议是指双方,或多方,相互约定好,大家...
  • 目录 nc: tcp连接的正确关闭方式: 服务器tcp端口设置三连: 为什么IO多路复用要搭配非阻塞IO 为什么non-blocking网络编程中应用层buffer是必须的 ...netcat 简称 nc,安全界它瑞士军刀。ncat 也会顺...
  • web.xml 简单理解

    2020-04-21 14:34:28
    在部署web项目时,web.xml中配置了,该项目启动时的一些属性信息。项目部署时就会加载web.xml中的配置信息,完成整体项目的启动部署。来为用户更好的服务。 配置属性元素放在<web-app></web-app>之中。...
  • 在一些新项目中,项目经理和架构师会根据业务需求从顶层设计架构。待架构稳定后,会进入实际的编码阶段。但在更大规模的业务编码前,首先要搭建好系统的基本框架,而这个框架一般会交给团队中最资深

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 437
精华内容 174
关键字:

什么叫web项目