spring 配置

简介: 引用:http://www.ideawu.net/person/spring_hibernate_web_dev/ch01.html Table of Contents 1.1. 配置 JSP 运行环境1.

引用:http://www.ideawu.net/person/spring_hibernate_web_dev/ch01.html

本章讲 Spring 的环境配置和 Spring Web 应用的一般结构和开发方法.

1.1. 配置 JSP 运行环境

1.1.1. 网站所需的库文件

Tomcat安装目录下的webapps目录是放置网站的目录, 在该目录里建立一个 ideashopx 目录, 这就是我们的博客网站的目录, 它的访问地址是 http://localhost:8080/ideashopx/

到 Spring 的官方网站下载 Spring Framework 2.0(一定要下载 with-dependencies 的包, 因为里面包含了所需要的依赖文件, 例如你可以下载 spring-framework-2.0.6-with-dependencies.zip).

我们要开发的网站的目录结构如下:

网站的目录结构

Figure 1.1. 网站的目录结构


然后按照下面的路径建立以下5个文件:

<Tomcat Home>/webapps/ideashopx/
    index.jsp
    WEB-INF/
        applicationContext.xml
        ideashopx-servlet.xml
        web.xml

然后解压缩Spring Framework的压缩文件, 分别从dist和lib目录下找到并将下面jar文件拷贝到网站目录下的WEB-INF/lib目录下, 这些文件是一般网站开发都要用到的:

antlr-2.7.6.jar
cglib-nodep-2.1_3.jar
commons-collections.jar
commons-dbcp.jar
commons-fileupload.jar
commons-io.jar
commons-logging.jar
commons-pool.jar
dom4j-1.6.1.jar
ehcache-1.2.jar
hibernate3.jar
jstl.jar
jta.jar
log4j-1.2.13.jar
spring.jar
standard.jar

解压缩standard.jar文件, 从里面的META-INF文件夹中拷贝 c.tld, fmt.tld 两个文件拷贝到 WEB-INF/tld 目录下.

1.1.2. 编辑网站的配置文件

编辑WEB-INF/目录下的以下配置文件:

Example 1.1. web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <context-param>
        <param-name>webAppRootKey</param-name>
        <param-value>ideashopx.root</param-value>
    </context-param>

    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/log4j.properties</param-value>
    </context-param>
	
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/applicationContext.xml
        </param-value>
    </context-param>
    
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>*.do</url-pattern>
    </filter-mapping>
    
    <servlet>
        <servlet-name>ideashopx</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>ideashopx</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

</web-app>
	

ideashopx-servlet.xml 文件没有实质的内容, 因为我们目前还用不上它:

Example 1.2. ideashopx-servlet.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
        "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

    <bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <value>
            </value>
        </property>
    </bean>

</beans>
	

applicationContext.xml 也只是个空壳文件:

Example 1.3. applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
        "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>

</beans>
	

log4j.properties 配置日志输出. 日志在开发和运行过程中是非常重要的.

Example 1.4. log4j.properties

log4j.rootLogger=INFO, stdout, logfile

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=${ideashopx.root}/WEB-INF/logs/ideashopx.log
log4j.appender.logfile.MaxFileSize=1024KB
# Keep three backup files.
log4j.appender.logfile.MaxBackupIndex=3
# Pattern to output: date priority [category] - message
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
	

log4j.properties 配置日志输出. 日志在开发和运行过程中是非常重要的.

1.1.3. 用 JSP Hello World 页面验证环境是否配置成功

我们先运行JSP的Hello World例子, 确保我们的环境设置正确. 编辑 ideashopx/index.jsp文件, 让它输出Hello World!.

ideashopx/index.jsp文件内容为:

Example 1.5. index.jsp

<%@ page contentType="text/html; charset=UTF-8" %> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Hello World from JSP!</title>
<style type="text/css">
body{
    font-size: 12px;
    font-family: arial;
}
</style>
</head>
<body>

<h1>Hello World from JSP!</h1>

${param.name}

</body>
</html>
	

启动 Tomcat. 如果是从命令行启动, 你会看到类似的启动信息:

E:\Tomcat5.5\bin>tomcat5.exe
2007-7-4 19:32:02 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
2007-7-4 19:32:02 org.apache.coyote.http11.Http11BaseProtocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2007-7-4 19:32:02 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 937 ms
2007-7-4 19:32:02 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2007-7-4 19:32:02 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/5.5.23
2007-7-4 19:32:02 org.apache.catalina.core.StandardHost start
信息: XML validation disabled
...
FrameworkServlet 'ideashopx': initialization completed in 234 ms
Servlet 'ideashopx' configured successfully
2007-7-15 20:53:07 org.apache.coyote.http11.Http11BaseProtocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2007-7-15 20:53:07 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2007-7-15 20:53:07 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/31  config=null
2007-7-15 20:53:07 org.apache.catalina.storeconfig.StoreLoader load
信息: Find registry server-registry.xml at classpath resource
2007-7-15 20:53:07 org.apache.catalina.startup.Catalina start
信息: Server startup in 3172 ms

建议你总是使用命令行方式启动Tomcat, 这样, 在以后的开发中你能通过控制台立即查看出错信息, 了解网站的运行情况, 特别是调试Hibernate时, 可以查看生成的SQL语句.

如果启动正常, 在浏览器地址栏中输入http://localhost:8080/ideashopx/, 你应该能看到index.jsp的运行结果:

测试实例运行效果

Figure 1.2. 测试实例运行效果


在浏览器地址栏中输入http://localhost:8080/ideashopx/?name=myshop, 你看到了什么? 你应该看到显示的文本增加了小号的 myshop 字样. 这就是index.jsp文件中${param.name}的效果. ${param.name}是JSTL语句, 用来输出变量, param.name是网页请求中的name参数. JSTL在后面的章节中有详细介绍.

目前为止, 我们还没有应用到Spring框架. 接下来, 我们要编写Spring的Hello World例子. 通过这个例子, 你将看到基于Spring的网站的一般结构.

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
12月前
|
负载均衡 监控 Java
Spring Cloud Gateway 全解析:路由配置、断言规则与过滤器实战指南
本文详细介绍了 Spring Cloud Gateway 的核心功能与实践配置。首先讲解了网关模块的创建流程,包括依赖引入(gateway、nacos 服务发现、负载均衡)、端口与服务发现配置,以及路由规则的设置(需注意路径前缀重复与优先级 order)。接着深入解析路由断言,涵盖 After、Before、Path 等 12 种内置断言的参数、作用及配置示例,并说明了自定义断言的实现方法。随后重点阐述过滤器机制,区分路由过滤器(如 AddRequestHeader、RewritePath、RequestRateLimiter 等)与全局过滤器的作用范围与配置方式,提
Spring Cloud Gateway 全解析:路由配置、断言规则与过滤器实战指南
|
12月前
|
Java 关系型数据库 MySQL
Spring Boot自动配置:魔法背后的秘密
Spring Boot 自动配置揭秘:只需简单配置即可启动项目,背后依赖“约定大于配置”与条件化装配。核心在于 `@EnableAutoConfiguration` 注解与 `@Conditional` 系列条件判断,通过 `spring.factories` 或 `AutoConfiguration.imports` 加载配置类,实现按需自动装配 Bean。
|
12月前
|
人工智能 Java 开发者
【Spring】原理解析:Spring Boot 自动配置
Spring Boot通过“约定优于配置”的设计理念,自动检测项目依赖并根据这些依赖自动装配相应的Bean,从而解放开发者从繁琐的配置工作中解脱出来,专注于业务逻辑实现。
3043 0
|
Java Spring
Spring Boot配置的优先级?
在Spring Boot项目中,配置可通过配置文件和外部配置实现。支持的配置文件包括application.properties、application.yml和application.yaml,优先级依次降低。外部配置常用方式有Java系统属性(如-Dserver.port=9001)和命令行参数(如--server.port=10010),其中命令行参数优先级高于系统属性。整体优先级顺序为:命令行参数 &gt; Java系统属性 &gt; application.properties &gt; application.yml &gt; application.yaml。
1410 0
|
缓存 Java API
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
本文介绍了在Spring Boot中配置Swagger2的方法。通过创建一个配置类,添加`@Configuration`和`@EnableSwagger2`注解,使用Docket对象定义API文档的详细信息,包括标题、描述、版本和包路径等。配置完成后,访问`localhost:8080/swagger-ui.html`即可查看接口文档。文中还提示了可能因浏览器缓存导致的问题及解决方法。
1447 0
微服务——SpringBoot使用归纳——Spring Boot集成 Swagger2 展现在线接口文档——Swagger2 的配置
|
安全 Java API
深入解析 Spring Security 配置中的 CSRF 启用与 requestMatchers 报错问题
本文深入解析了Spring Security配置中CSRF启用与`requestMatchers`报错的常见问题。针对CSRF,指出默认已启用,无需调用`enable()`,只需移除`disable()`即可恢复。对于`requestMatchers`多路径匹配报错,分析了Spring Security 6.x中方法签名的变化,并提供了三种解决方案:分次调用、自定义匹配器及降级使用`antMatchers()`。最后提醒开发者关注版本兼容性,确保升级平稳过渡。
1696 2
|
XML Java 测试技术
Spring IOC—基于注解配置和管理Bean 万字详解(通俗易懂)
Spring 第三节 IOC——基于注解配置和管理Bean 万字详解!
1103 26
|
11月前
|
前端开发 Java 应用服务中间件
《深入理解Spring》 Spring Boot——约定优于配置的革命者
Spring Boot基于“约定优于配置”理念,通过自动配置、起步依赖、嵌入式容器和Actuator四大特性,简化Spring应用的开发与部署,提升效率,降低门槛,成为现代Java开发的事实标准。
|
Java 关系型数据库 数据库
微服务——SpringBoot使用归纳——Spring Boot事务配置管理——Spring Boot 事务配置
本文介绍了 Spring Boot 中的事务配置与使用方法。首先需要导入 MySQL 依赖,Spring Boot 会自动注入 `DataSourceTransactionManager`,无需额外配置即可通过 `@Transactional` 注解实现事务管理。接着通过创建一个用户插入功能的示例,展示了如何在 Service 层手动抛出异常以测试事务回滚机制。测试结果表明,数据库中未新增记录,证明事务已成功回滚。此过程简单高效,适合日常开发需求。
1966 0
|
Java 测试技术 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——少量配置信息的情形
本课主要讲解Spring Boot项目中的属性配置方法。在实际开发中,测试与生产环境的配置往往不同,因此不应将配置信息硬编码在代码中,而应使用配置文件管理,如`application.yml`。例如,在微服务架构下,可通过配置文件设置调用其他服务的地址(如订单服务端口8002),并利用`@Value`注解在代码中读取这些配置值。这种方式使项目更灵活,便于后续修改和维护。
452 0