spring web application
尝试使用spring + idea + gradle 做一下web的工程
1.使用jetty_run.sh在linux下启动服务。
2.允许在idea中使用remote调试,调试端口为54001 。
3.本地访问地址根目录为 http://localhost:53001/hang535/ 。
通过:
http://localhost:53001/hang535/servlet 可以访问原生servlet请求
http://localhost:53001/hang535/spring/hi 可以访问spring mvc框架下的请求 (只JSP部分,Velocity还在研究ing)
project
build.gradle
1 //======================================== 2 // 命令 $gradle build 3 //======================================== 4 5 // 插件 6 apply plugin: 'java' 7 apply plugin: 'idea' 8 apply plugin: 'war' 9 apply plugin: 'jetty' 10 11 // 编译java源码的jdk版本 12 sourceCompatibility = 1.6 13 14 // 生成class文件的jdk版本 15 targetCompatibility = 1.6 16 17 // 仓库 18 repositories { 19 mavenRepo urls: ["http://xxx/nexus/content/groups/public/"] 20 // maven { 21 // url "http://xxx/nexus/content/groups/public/" 22 // } 23 } 24 25 // 版本号 26 version = '0.1.0' 27 28 // gradle在编译时支持utf8编码 29 [compileJava, javadoc, compileTestJava]*.options*.encoding = 'UTF-8' 30 31 // 项目依赖 32 dependencies { 33 34 // runtime 配置项中包含的依赖在运行时是必须的 35 // testCompile 配置项中包含的依赖,在编译测试代码时是必须的 36 // testRuntime 配置项中包含的依赖,在运行测试代码时是必须的 37 // archives 配置项中包含项目生成的文件(如jar文件) 38 // default 配置相中包含运行时必须的依赖 39 // providedCompile 编译时不会用到,运行时会用到 40 41 testCompile( 42 [group: 'junit', name: 'junit', version: '4.11'], 43 [group: 'org.unitils', name: 'unitils-dbunit', version: '3.4.2'], 44 [group: 'org.springframework', name: 'spring-test', version: '3.0.5.RELEASE'] 45 ) 46 47 compile( 48 [group: 'javax.servlet', name: 'servlet-api', version: '2.5'], 49 [group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.13'], 50 [group: 'log4j', name: 'log4j', version: '1.2.17'], 51 [group: 'com.ibatis', name: 'ibatis', version: '2.3.4.726'], 52 [group: 'com.oracle', name: 'ojdbc', version: '6.0'], 53 [group: 'org.springframework', name: 'spring-context', version: '3.0.5.RELEASE'], 54 [group: 'org.springframework', name: 'spring-web', version: '3.0.5.RELEASE'], 55 [group: 'org.springframework', name: 'spring-webmvc', version: '3.0.5.RELEASE'], 56 [group: 'org.apache.velocity', name: 'velocity', version: '1.7'], 57 [group: 'org.apache.velocity', name: 'velocity-tools', version: '2.0'] 58 ) 59 60 } 61 62 // web应用中的jetty配置 63 // 使用gradle jettyRun 运行 64 // 使用http://localhost:53001/hang535 访问 65 jettyRun { 66 contextPath = '/hang535' 67 scanIntervalSeconds = 1 68 reload ="automatic" 69 } 70 httpPort = 53001 71 stopPort = 53002 72 stopKey = 'hang535'
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-servlet.xml</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/spring/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>servlet</servlet-name> <servlet-class>com.h.servlet.SampleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>servlet</servlet-name> <url-pattern>/servlet</url-pattern> </servlet-mapping> </web-app>
spring-servlet.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--<mvc:resources mapping="/resources/**" location="/resources/" />--> <context:component-scan base-package="com.h.controller" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/view/"/> <property name="suffix" value=".jsp" /> <property name="contentType" value="text/html; charset=UTF-8" /> </bean> </beans>
hello.jsp & hi.jsp
<!DOCTYPE HTML> <html> <head> <title>Spring Web Test Application</title> </head> <body> <h1>Hello, ${name}</h1> </body> </html>
Controller
package com.h.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; @Controller //@RequestMapping({"/"}) public class SampleController { @RequestMapping(value="/hi", method = RequestMethod.GET) public String loadHiPage(Model m) { m.addAttribute("name", "my friend!"); return "hi"; } @RequestMapping(value="/hello", method = RequestMethod.GET) public String loadHelloPage(Model m, HttpServletRequest request) { String requestURI = request.getRequestURL().toString(); m.addAttribute("name", requestURI); return "hello"; } @RequestMapping(value="/response", method = RequestMethod.GET) public void loadHelloPage(HttpServletRequest request, HttpServletResponse response) { OutputStream stream = null; try { String requestURI = request.getRequestURL().toString(); stream = response.getOutputStream(); stream.write(requestURI.getBytes("UTF-8")); } catch (IOException e) { e.printStackTrace(); if(null != stream){ try { stream.close(); } catch (IOException e1) { e1.printStackTrace(); } } } } }
servlet
1 package com.h.servlet; 2 3 import javax.servlet.http.HttpServlet; 4 import javax.servlet.http.HttpServletRequest; 5 import javax.servlet.http.HttpServletResponse; 6 import java.io.IOException; 7 import java.io.OutputStream; 8 9 /** 10 * Created by yuhang535 on 2016/2/19. 11 */ 12 public class SampleServlet extends HttpServlet { 13 14 @Override 15 protected void service(HttpServletRequest request, HttpServletResponse response) { 16 OutputStream stream = null; 17 try { 18 String requestURI = request.getRequestURL().toString(); 19 stream = response.getOutputStream(); 20 stream.write(requestURI.getBytes("UTF-8")); 21 } catch (IOException e) { 22 e.printStackTrace(); 23 if(null != stream){ 24 try { 25 stream.close(); 26 } catch (IOException e1) { 27 e1.printStackTrace(); 28 } 29 } 30 } 31 32 } 33 }
jetty_run.sh
# !/bin/bash #To remote debug the application with port 54001 export GRADLE_OPTS="-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=54001" gradle clean gradle jettyRun