精华内容
下载资源
问答
  • startup 类的configservice方法有什么作用? 在这个方法里我们可以添加一些service进入依赖注入容器。

    startup 类的configservice方法有什么作用?

    在这个方法里我们可以添加一些service进入依赖注入容器。

    展开全文
  • Servlet中的service方法

    千次阅读 2017-09-21 13:19:47
    Servlet中的service方法用于应答浏览器请求,每次请求都会调用该方法。 @Override public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { // ...

      Servlet中的service方法用于应答浏览器请求,每次请求都会调用该方法。

    	@Override
    	public void service(ServletRequest request, ServletResponse response)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
            }
    
    	}
    ServletRequest:封装了请求信息,可以从中获取到任何的请求信息。

    ServletResponse:封装了响应信息,用于响应用户请求。

    这两个接口都是服务器给予实现的,并在服务器调用service方法时传入。

    1.ServletRequest:

      1.1  获取请求参数:

           1.1.1  String getParameter(String name); 根据名字获取值

    html:

    <!DOCTYPE html>
    <html>
      <head>
        <title>login.html</title>
    	
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        <form name="f1" id="f1" action="login" method="post">
          <table>
            <tr>
              <td>Login:</td>
              <td><input type="text" name="login" id="login"></td>
            </tr>
            <tr>
              <td>Password:</td>
              <td><input type="password" name="password" id="password"></td>
            </tr> 
            <tr>
              <td colspan="2"><input type="submit"></td>
            </tr>
          </table>
        </form>
      </body>
    </html>
    
    xml:

      <!-- 配置和映射servlet -->
      <servlet>
      <!-- servlet注册的名字 -->
        <servlet-name>loginServlet</servlet-name>
        <!-- servlet的全类名-->
        <servlet-class>com.sa.servlet.LoginServlet</servlet-class>
      </servlet>
      
      <servlet-mapping>
      <!-- 需要和某一个servlet节点的servlet子节点的文本节点一致 -->
        <servlet-name>loginServlet</servlet-name>
        <!-- 映射具体 的访问路径: /  代表当前web应用的根目录 -->
        <url-pattern>/login</url-pattern>
      </servlet-mapping> 
    LoginServlet:

    	@Override
    	public void service(ServletRequest request, ServletResponse response)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
            String login=request.getParameter("login");
            String password=request.getParameter("password");
            System.out.println("login:"+login);
            System.out.println("password:"+password);
    
    	}
    	
    输出结果:

    login:admin
    password:123

           1.1.2  Map<String, String>  getParameterMap();返回请求参数的键值对。

                    key:参数名,value:参数值,String[] 类型

    	@Override
    	public void service(ServletRequest request, ServletResponse response)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		Map<String, String[]> map=request.getParameterMap();
    		for (String key : map.keySet()) {
    			   System.out.println("key= "+ key + " and value= " + Arrays.toString(map.get(key)));
    			  }
    
    	}
    	
    输出结果:

    key= login and value= [admin]
    key= password and value= [123]
    key= interesting and value= [Party, Shopping]

           1.1.3  Enumeration<String>  getParameterNames();返回参数名对应的Enumeration对象。

    	@Override
    	public void service(ServletRequest request, ServletResponse response)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		//Map<String, String> request.getParameterMap();
    		//Enumeration<String> request.getParameterNames();
    		//String[] request.getParameterValues(arg0);
    		Enumeration<String> enums=request.getParameterNames();
    		while(enums.hasMoreElements()){
    			String name=enums.nextElement();
    			String[] value=request.getParameterValues(name);
    			System.out.println("name:"+name+",value:"+Arrays.toString(value));
    		}
    查看结果:

    name:login,value:[admin]
    name:password,value:[123]
    name:interesting,value:[Playing, Party]

           1.1.4  String[] getParameterValues(String name);根据名字获取值数组,例如checkbox

    html:

    <!DOCTYPE html>
    <html>
      <head>
        <title>login.html</title>
    	
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        <form name="f1" id="f1" action="login" method="post">
          <table>
            <tr>
              <td>Login:</td>
              <td><input type="text" name="login" id="login"></td>
            </tr>
            <tr>
              <td>Password:</td>
              <td><input type="password" name="password" id="password"></td>
            </tr> 
            <tr>
              <td>interesting:</td>
              <td>
              <input type="checkbox" name="interesting" value="Playing"/>Playing
              <input type="checkbox" name="interesting" value="TV"/>TV
              <input type="checkbox" name="interesting" value="Party"/>Party
              <input type="checkbox" name="interesting" value="Sport"/>Sport
              <input type="checkbox" name="interesting" value="Shopping"/>Shopping
              </td>
            </tr>
            <tr>
              <td colspan="2"><input type="submit"></td>
            </tr>
    
          </table>
        </form>
      </body>
    </html>
    
    LoginServlet:

    	@Override
    	public void service(ServletRequest request, ServletResponse response)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
            String login=request.getParameter("login");
            String password=request.getParameter("password");
            String[] interesting=request.getParameterValues("interesting");
            System.out.println("login:"+login);
            System.out.println("password:"+password);
            System.out.println("interesting:"+Arrays.toString(interesting));
    
    	}
    输出结果:



      1.2   获取请求的URI:

              HttpServletRequest是ServletRequest的子接口,针对于HTTP请求所定义,里面有

    大量获取HTTP信息的方法。

    	@Override
    	public void service(ServletRequest request, ServletResponse response)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		HttpServletRequest httpServletRequest=(HttpServletRequest) request;
    		String uri=httpServletRequest.getRequestURI();
    		System.out.println("uri:"+uri);
    
    	}
    	
    输出结果:
    uri:/MyLab2/login

      1.3   获取请求方式:

    	@Override
    	public void service(ServletRequest request, ServletResponse response)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		HttpServletRequest httpServletRequest=(HttpServletRequest) request;
    		String method=httpServletRequest.getMethod();
    		System.out.println("method:"+method);
    
    	}
    输出结果:

    method:POST

    2. ServletReponse:

       2.1   getWriter():

              返回PrintWriter对象,调用该对象的print()方法,把print()中参数打印在网页上。

    	@Override
    	public void service(ServletRequest request, ServletResponse response)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
            PrintWriter writer=response.getWriter();
            writer.println("hello world");
    
    	}
    查看页面:


      2.2  setContentType():

    	@Override
    	public void service(ServletRequest request, ServletResponse response)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		response.setContentType("application/msword");
            PrintWriter writer=response.getWriter();
            writer.println("hello world");
    
    	}
    设置为内容类型为“application/msword”,这样返回的内容下载下来:



          2.3 void sendRedirect(String location):

         请求的重定向。(此方法为HttpServletResponse中定义)


      
     在web.xml文件中设置两个WEB应用的初始化参数:user,password.

    定义一个login.html,里边定义两个请求字段:user,password,发送请求到loginServlet.

    loginServlet中,获取请求的user,password,比较其和web.xml文件中的初始化参数是否一致,

    若一致,则响应: hello,xxx;若不一致,则响应: sorry ,xxx;

      html:

    <!DOCTYPE html>
    <html>
      <head>
        <title>login.html</title>
    	
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        <form name="f1" id="f1" action="login" method="post">
          <table>
            <tr>
              <td>Login:</td>
              <td><input type="text" name="login" id="login"></td>
            </tr>
            <tr>
              <td>Password:</td>
              <td><input type="password" name="password" id="password"></td>
            </tr> 
            <tr>
              <td colspan="2"><input type="submit"></td>
            </tr>
    
          </table>
        </form>
      </body>
    </html>
    
    web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://java.sun.com/xml/ns/javaee" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
        <!-- 配置当前WEB应用的参数 -->
      <context-param>
          <param-name>user</param-name>
          <param-value>sasa</param-value>
       </context-param>
          <context-param>
          <param-name>password</param-name>
          <param-value>123</param-value>
       </context-param> 
      <!-- 配置和映射servlet -->
      <servlet>
      <!-- servlet注册的名字 -->
        <servlet-name>loginServlet</servlet-name>
        <!-- servlet的全类名-->
        <servlet-class>com.sa.servlet.LoginServlet</servlet-class>
      </servlet>
      
      <servlet-mapping>
      <!-- 需要和某一个servlet节点的servlet子节点的文本节点一致 -->
        <servlet-name>loginServlet</servlet-name>
        <!-- 映射具体 的访问路径: /  代表当前web应用的根目录 -->
        <url-pattern>/login</url-pattern>
      </servlet-mapping> 
     
    </web-app>
    LoginServlet:

    package com.sa.servlet;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.PrintWriter;
    import java.util.Arrays;
    import java.util.Enumeration;
    import java.util.Map;
    
    import javax.servlet.Servlet;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class LoginServlet implements Servlet {
         
    	public LoginServlet(){
    
    	}
    	@Override
    	public void destroy() {
    		// TODO Auto-generated method stub
    
    	}
    
    	@Override
    	public ServletConfig getServletConfig() {
    		// TODO Auto-generated method stub
    
    		return null;
    	}
    
    	@Override
    	public String getServletInfo() {
    		// TODO Auto-generated method stub
    
    		return null;
    	}
    
    	@Override
    	public void init(ServletConfig arg0) throws ServletException {
    		// TODO Auto-generated method stub
    
    	}
    
    	@Override
    	public void service(ServletRequest request, ServletResponse response)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
            String user=request.getParameter("login");
            String password=request.getParameter("password");
            ServletContext servletContext=request.getServletContext();
            String user2=servletContext.getInitParameter("user");
            String password2=servletContext.getInitParameter("password");
            //HttpServletResponse httpServletResponse=(HttpServletResponse) response;
            PrintWriter writer=response.getWriter();
            if(user.equals(user2)&&password.equals(password2)){       	       	
            	writer.println("hello,"+user);
            }else{
            	writer.println("sorry,"+user);
            }
    
    	}
    	
    
    }
    
    测试:











    展开全文
  • servlet中的service方法

    千次阅读 热门讨论 2014-08-31 18:35:17
    Servlet中service方法—模板方法 Servlet中,service方法是一直存在的, 最高层的接口Servlet(像HttpServlet等具体的servlet都是直接或者间接实现了这个接口)里面就有这个方法,所以不管是怎样的servlet类,都有...

    1. service方法在servlet中的地位

             Servlet中的service方法是servlet模板方法的体现,它里面定义了servlet访问的一个骨架;之前在一篇博客中讲到过:http://blog.csdn.net/y_love_f/article/details/38302413

             最高层的接口Servlet(像HttpServlet等具体的servlet都是直接或者间接实现了这个接口)里面就有这个方法,所以不管是怎样的servlet类,都有service方法。

     

    2. Service方法特点:

            特点:service方法,一般来说这个方法是不需要重写的,

          默认的实现:根据请求的方式,调用doGetdoPost以及其他的doXXX方法。

                       也就是说service是用来转向的,所以我们一般写一个servlet,只需要重写doGet或者doPost就可以了。

           如果重写了service方法,那么servlet容器就会把请求交给这个方法来处理,倘若你重写的service方法没有调用doXXX,即使你在Servlet中又重写了其他doGet doPost等也是不回被调用的因为Servletservice被自动调用(就像init destory一样)。下面的一段代码就是这种情况:

    public class BaseServlet extends HttpServlet {
    	private String command;
    	private User user;
    	private BeanFactory beanFactory;
    	
    	@Override
    	protected final void service(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    <span style="white-space:pre">		</span><pre name="code" class="java" style="color: rgb(68, 68, 68);"><span style="white-space:pre">		</span>System.out.println("子类的实现");
    super.service(req, resp);}

     
    
    }

    public class FlowCardServlet extends BaseServlet {
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    	throws ServletException, IOException  {
    <span style="white-space:pre">		</span>System.out.println("重写doGet方法");
    	}
    	
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		doGet(req, resp);
    	}

    他们之间的继承结构如下图:



             其实从图中可以看出来,造成这种情况的原因就会因为子类重写了父类的方法,导致父类中默认的实现没有执行,解决方案就是在子类的方法实现末尾再调用一下父类的默认实现。即需要重写service方法,并且更具不同的method调用doPost doGet等时,就要在末尾加上一句super.service(),这样就可以解决问题了。


    3.总结:

          总结servlet中的service方法,从中得到的知识有两个:模板方法的应用,java中的继承。我们不懂的很多知识其实都是我们已经知道的知识联系起来的结果。在学习的过程中分解这些知识,那么我们就能够很快的掌握他们了。

     

    展开全文
  • 静态方法中调用service方法,以及获取request对象 //普通service方法,重点:ApplicationContextRegister对象 DictionaryService dictionaryService = ApplicationContextRegister.getBean(DictionaryService.class)...

    静态方法中调用service方法,以及获取request对象

    //普通service方法,重点:ApplicationContextRegister对象
    DictionaryService dictionaryService = ApplicationContextRegister.getBean(DictionaryService.class);
    
    //request对象获取
    HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
    
    展开全文
  • Servlet - service 方法重写问题

    千次阅读 2018-10-11 15:54:33
    在学习Servlet的过程中,我们大多时候编码都是直接继承HttpServlet这个类,并且重写doGet ,doPost,但是查看Api时我们会发现Servlet接口 ,GenericSevlet抽象类 以及HttpServlet类中都有service方法,那么为什么...
  • Spring事务控制放在service层,在service方法中一个方法调用service中的另一个方法,默认开启几个事务? 只开启了一个事务,Spring默认的传播行为是PROPAGATION_REQUIRED,即如果当前存在事务,即加入该事务;如果...
  • 目的:根据用户请求的url利用反射动态调用service方法,避免繁琐的if/else判断servletPath public class UrlparttenUtil {  /**  * 通过urlpartten中最后一个'/'的索引 取出service方法名调用该方法  ...
  • 3)HttpServlet的Service方法到底是怎么回事? 马克-to-win:谈到doGet,很多同学心中可能有疑问,为什么html的用户的GET的请求,会被Servlet的doGet方法处理呢?这就谈到了HttpServlet的Service方法。它的功能就是...
  • spring 工具类注入Service方法

    千次阅读 2017-04-05 16:03:42
    spring 工具类注入Service方法 转载2016-08-26 13:51:41 标签:it 系统为SpringMVC框架,在开发的过程中有一些工具类需要调用下由spring管理的service层,下面是解决方法,亲测可用: @Component...
  • 一般service方法是有事务的,把所有操作封装在一个service方法中是比较安全的。 如果在controller中调用多个service方法,只有查询的情况下是可以这样的。 转载于:...
  • 在Android开发中,开发人员可能都知道Service的两种使用方式,即分别是调用Context的startService方法和bindService方法,但绝大部分开发人员,肯定对这两种方法具体的使用都有各种各样的疑问,今天小编就和大家一起...
  • Service方法可能是同一个Service里的 也可能是不同Service里头的方法
  • 一般controller层调用service方法我们会将业务写在一个方法里面并加上@Transactional这样就能确保事务: @Transactional(rollbackFor = Exception.class) public void insert() { insertMethod1(); insertMethod...
  • 加入了事物控制的service方法: ``` public void savePayMentBillCode(List<PaymentExt> paymentExtList) throws ServiceException { try { for(PaymentExt paymentExt:paymentExtList) { paymentExt....
  • 调用多个的话不能控制事务,那是不是得把这几个service方法写在一个service里 然后再用Controller调用?
  • 今天在使用spring-mvc框架的时候需要在servlet中调用service方法,但是service类使用的是注解,new一个service时在执行过程中会报空指针错误,经过网上查找发现应该先得到spring容器,然后从容器里面取service: ...
  • 现状:在项目中,我们需要的工具类普通类,常因为业务需要,需要调用service方法来完成对数据的输出或提取,但因为spring项目在加载对象的时候,是单例模式创建,所以该对象不允许外部的类调用,而报错误:空指针 ...
  • springMVC中普通类调用注解service方法

    万次阅读 2015-10-21 15:45:35
    在springMVC中的普通类中调用注册service方法
  • Service方法中,如果我们通过抛出异常来进行事务处理(其实有更好的办法:Spring事务配置),那么我们的Service方法需要抛出异常,但这里有一个问题,之前都没有考虑到,今天测试接口的时候发现的,问题:当发现...
  • httpservlet 中的两个service方法

    千次阅读 2017-09-18 21:56:11
    1.public void service(ServletRequest req, ServletResponse res) 2.protected void service(HttpServletRequest req, ...void service这个方法 是tomcat 中请求调用 在这个方法内部在调用 protected void se
  • spring基于注解的普通类怎么调用@Services注解的service方法,需要一些先决条件: 1、如果你想用@autowired,那么这个类本身也应该是在spring的管理下的,即你的UserLogUtil也要标注为一个component(或Service),...
  • Android 调用Remote Service方法

    千次阅读 2012-06-16 22:37:26
    《Android开发入门与实践》上的ex_...这是一个远程方法,是无法直接从Activity调用Service中的方法的。 根据网上的资料写了一个AIDL文件,实现了远程调用。在这里记录备忘。 package com.iceskysl.Tes
  • 在学习Servlet的过程中,我们大多时候编码都是直接继承HttpServlet这个类,并且重写doGet ,doPost,但是查看Api时我们会发现Servlet接口 ,GenericSevlet抽象类 以及HttpServlet类中都有service方法,那么为什么...
  • Filter里面注入Service方法

    万次阅读 2015-09-17 08:57:24
    假如你是一位javaweb开发人员,Filter这个词是不陌生的,废话不多说,我就说我的问题和解决方法。 问题:我建立一个全局拦截器,当然,这是测试的时候建立的,我把它命名为RequestFilter,它继承了Filter,web应用...
  • service 方法一直报空指针

    千次阅读 2018-10-17 19:49:33
    result = jPositionProviceMapper.searchAll(); 一直运行报这空指针异常 @Resource private JPositionProviceMapper jPositionProviceMapper; 原因是没有加@Resource
  • 一般controller层调用service方法我们会将业务写在一个方法里面并加上@Transactional这样就能确保事务: @Transactional(rollbackFor = Exception.class) public void insert() { insertMethod1(); insertMethod...
  • 与调用哪个方法。但是利用传统的反射机制会 脱离spring容器,dao层并没有实例化,dao操作完全 执行不了 利用先获取spring容器,再从spring中获取bean的实例为正解: 代码: //获取当前上下文环境,spring容器...
  • 只需要像这样将commonDao的两个save方法service方法中调用即可,已经通过测试验证。因为spring 事务是对savePayRecord方法进行的事务管理 public void savePayRecord(PayInfoVO payInfo) { // T

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,300,133
精华内容 520,053
关键字:

service方法