我做一个二次开发,我在想jsp不是能嵌套java代码吗,所以想在jsp页面写servlet类 但是不知道怎么调用,
(不要告诉我写在java里面,因为不行我才写到jsp页面)
  在web.xml配置 通过 
 <servlet>
    <servlet-name>testServlet</servlet-name>
     <jsp-file>/jsp/test.jsp</jsp-file>
  </servlet> 
确实能访问到test.jsp 但是不会不调用doGet() doPost方法 
--以下是test.jsp 
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.esoon.cisiss.common.BaseServlet" %>
<%@ page import="java.io.IOException" %>
<%@ page import="javax.servlet.ServletException" %>
<%@ page import="javax.servlet.http.HttpServletRequest" %>
<%@ page import="javax.servlet.http.HttpServletResponse" %><%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<script type="text/javascript">
alert("");
</script><%
 class testServlet extends BaseServlet{


public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
System.out.print("----------1-------");
System.out.print("--------2---------");
}

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}

}%>servletjspweb.xmljava

解决方案 »

  1.   


    怎麼寫 你看我寫的 但是訪問了,不會執行doPost()
      

  2.   

    一个jsp写doPost干吗,想做什么直接做,想接值直接写request.getParameter
      

  3.   


    你看我上面寫的是servlet 我想如果能通過ajax(js裏面)調用這個servlet 
      

  4.   

    其实可以在jsp中使用
    <%!
    public void method(){
    }
    %>
    来定义全局方法提供调用就好了,,另外 我尝试了使用楼主的方法,但是好像不行,每次都是执行jsp的_jspService ,,设置了url-pattern 亦如此。
    我看编译文件终于发现了:这个servlet是定义在方法内的,直接调用肯定行不通。。具体我也不会。。
      

  5.   

    同意5楼啊~具体什么原因我也没试过,感觉配置文件这么写可能有问题吧~
    感觉没什么实用价值啊~在jsp里添加java代码本来就很乱,再写servlet恐怕连执行效率都会降低啊~
      

  6.   

    因为我做的是二次开发,只能动jsp页面 我有这样一步需要实现:需要处理两次,点一个删除按钮 然后处理数据后拿到ID,再:根据返回的ID进行删除操作  (这两步需要点一个删除按钮一步做完)
      

  7.   

    jsp最终会编译成一个servlet类,jsp偏向于表示层,servlet注重逻辑,这个你或许试试这个jsp编译成servlet的名字叫啥,在调用。   你这种具体我也没试过! 求楼下大神解释吧!
      

  8.   

    public final class login_jsp extends org.apache.jasper.runtime.HttpJspBase
        implements org.apache.jasper.runtime.JspSourceDependent {  private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();  private static java.util.List _jspx_dependants;  private javax.el.ExpressionFactory _el_expressionfactory;
      private org.apache.AnnotationProcessor _jsp_annotationprocessor;  public Object getDependants() {
        return _jspx_dependants;
      }  public void _jspInit() {
        _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
        _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());
      }  public void _jspDestroy() {
      }  public void _jspService(HttpServletRequest request, HttpServletResponse response)
            throws java.io.IOException, ServletException {    PageContext pageContext = null;
        HttpSession session = null;
        ServletContext application = null;
        ServletConfig config = null;
        JspWriter out = null;
        Object page = this;
        JspWriter _jspx_out = null;
        PageContext _jspx_page_context = null;
        try {
          response.setContentType("text/html;charset=UTF-8");
          pageContext = _jspxFactory.getPageContext(this, request, response,
           null, true, 8192, true);
          _jspx_page_context = pageContext;
          application = pageContext.getServletContext();
          config = pageContext.getServletConfig();
          session = pageContext.getSession();
          out = pageContext.getOut();
          _jspx_out = out;      out.write("\r\n");
          out.write("\r\n");
          out.write("\r\n");String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    basePath = basePath +"";
          out.write("\r\n");
          out.write("<html>\r\n");
          out.write("\t<head>\r\n");
          out.write("\t\t<meta http-equiv=\"pragma\" content=\"no-cache\">\r\n");
          out.write("\t\t<meta http-equiv=\"cache-control\" content=\"no-cache\">\r\n");
          out.write("\t\t<title>欢迎访问");找一个jsp编译的java代码看一下,调用jsp页面后调用的是
     public void _jspService(HttpServletRequest request, HttpServletResponse response)
            throws java.io.IOException, ServletException {
    这个方法,这个方法的方法体就是你卸载jsp页面内部的代码。
    所以dopost doget 的方法体直接写在jsp页面里就可以了
      

  9.   

    我是需要用ajax 直接调用我jsp的servlet? 不执行里面的方法 怎么办 
      

  10.   

    这位小哥,你得先了解servlet和jsp是什么关系哦,简单说js在其实就是servlet,在servlet容器中,比如tomcat,jsp会先解析成.java文件,你在tomcat下的work目录下回找到其名称+“_jsp”.java文件和.calss文件,看.java文件的代码就可以看出你不需要写doPost和doGet方法了,想写java代码就直接写就是了,同时先了解jsp的相关知识啊,比如九大内建对象
      

  11.   

      好像 从来没看到过..........  你Ajax  不能请求一个jsp 页面 里面 写 java 代码?  在jsp中 写 类  思路 问题吧 !!!  
      

  12.   

    jsp其实也是一个servlet。只是它已经隐含了request,response等9大对象。
    <% %>你直接在这个java代码块里面写业务逻辑代码不需要写什么类啊方法什么的。
      

  13.   


    直接把你的操作写在jsp中就可以了,不需要再去写一个servlet
    比如你原本定义servlet会这样
    web.xml<servlet>
        <servlet-name>testServlet</servlet-name>
         <servlet-class>package.BaseServlet</servlet-class>
    </servlet> 
    java 类public class testServlet extends BaseServlet{
        public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            //这里会进行你的删除操作
            System.out.print("--------1-------");
            System.out.print("--------2---------");
        }    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            this.doPost(request, response);
        }
    }以上是servlet的处理方式,现在你改用jsp来完成,首先可以省去web.xml的配置
    假设有jsp文件test.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ page import="com.esoon.cisiss.common.BaseServlet" %>
    <%@ page import="java.io.IOException" %>
    <%@ page import="javax.servlet.ServletException" %>
    <%@ page import="javax.servlet.http.HttpServletRequest" %>
    <%@ page import="javax.servlet.http.HttpServletResponse" %><%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <script type="text/javascript">
    alert("");
    </script>
    <%
    //这里删除做删除操作
    System.out.print("--------1-------");
    System.out.print("--------2---------");
    %>
      

  14.   


    直接把你的操作写在jsp中就可以了,不需要再去写一个servlet
    比如你原本定义servlet会这样
    web.xml<servlet>
        <servlet-name>testServlet</servlet-name>
         <servlet-class>package.BaseServlet</servlet-class>
    </servlet> 
    java 类public class testServlet extends BaseServlet{
        public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            //这里会进行你的删除操作
            System.out.print("--------1-------");
            System.out.print("--------2---------");
        }    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            this.doPost(request, response);
        }
    }以上是servlet的处理方式,现在你改用jsp来完成,首先可以省去web.xml的配置
    假设有jsp文件test.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ page import="com.esoon.cisiss.common.BaseServlet" %>
    <%@ page import="java.io.IOException" %>
    <%@ page import="javax.servlet.ServletException" %>
    <%@ page import="javax.servlet.http.HttpServletRequest" %>
    <%@ page import="javax.servlet.http.HttpServletResponse" %><%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <script type="text/javascript">
    alert("");
    </script>
    <%
    //这里删除做删除操作
    System.out.print("--------1-------");
    System.out.print("--------2---------");
    %>

    我说了 我不能动java代码 二次开发 项目只有war包 
      

  15.   


    不需要写doPost和doGet方法? 那我ajax 怎么调用这个类 怎么返回值
      

  16.   


    直接把你的操作写在jsp中就可以了,不需要再去写一个servlet
    比如你原本定义servlet会这样
    web.xml<servlet>
        <servlet-name>testServlet</servlet-name>
         <servlet-class>package.BaseServlet</servlet-class>
    </servlet> 
    java 类public class testServlet extends BaseServlet{
        public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            //这里会进行你的删除操作
            System.out.print("--------1-------");
            System.out.print("--------2---------");
        }    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            this.doPost(request, response);
        }
    }以上是servlet的处理方式,现在你改用jsp来完成,首先可以省去web.xml的配置
    假设有jsp文件test.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ page import="com.esoon.cisiss.common.BaseServlet" %>
    <%@ page import="java.io.IOException" %>
    <%@ page import="javax.servlet.ServletException" %>
    <%@ page import="javax.servlet.http.HttpServletRequest" %>
    <%@ page import="javax.servlet.http.HttpServletResponse" %><%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <script type="text/javascript">
    alert("");
    </script>
    <%
    //这里删除做删除操作
    System.out.print("--------1-------");
    System.out.print("--------2---------");
    %>

    我说了 我不能动java代码 二次开发 项目只有war包 所以你要仔细看,那个java类是说如果你可以写java类会这样写,但是你不能,就写一个jsp好了
    以上是servlet的处理方式,现在你改用jsp来完成,首先可以省去web.xml的配置
    假设有jsp文件test.jsp 只需要写这个jsp就行了,ajax 请求这个jsp的路径就行了

      

  17.   


    直接把你的操作写在jsp中就可以了,不需要再去写一个servlet
    比如你原本定义servlet会这样
    web.xml<servlet>
        <servlet-name>testServlet</servlet-name>
         <servlet-class>package.BaseServlet</servlet-class>
    </servlet> 
    java 类public class testServlet extends BaseServlet{
        public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            //这里会进行你的删除操作
            System.out.print("--------1-------");
            System.out.print("--------2---------");
        }    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            this.doPost(request, response);
        }
    }以上是servlet的处理方式,现在你改用jsp来完成,首先可以省去web.xml的配置
    假设有jsp文件test.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ page import="com.esoon.cisiss.common.BaseServlet" %>
    <%@ page import="java.io.IOException" %>
    <%@ page import="javax.servlet.ServletException" %>
    <%@ page import="javax.servlet.http.HttpServletRequest" %>
    <%@ page import="javax.servlet.http.HttpServletResponse" %><%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <script type="text/javascript">
    alert("");
    </script>
    <%
    //这里删除做删除操作
    System.out.print("--------1-------");
    System.out.print("--------2---------");
    %>

    我说了 我不能动java代码 二次开发 项目只有war包 所以你要仔细看,那个java类是说如果你可以写java类会这样写,但是你不能,就写一个jsp好了
    以上是servlet的处理方式,现在你改用jsp来完成,首先可以省去web.xml的配置
    假设有jsp文件test.jsp 只需要写这个jsp就行了,ajax 请求这个jsp的路径就行了

    那返回值怎么写 jsp页面的java内容 怎么办返回的ID返回回来?
      

  18.   

    out.print(你要返回的内容)把下面的内容去掉
    <script type="text/javascript">
    alert("");
    </script>
      

  19.   

    大哥啊jsp就是servlet好吗,你可以在jsp里写任何代码啊,也可以用javaBean啊,jsp里的代码最终都是在servlet的service方法里的怎么可能方法里面嵌套类定义
      

  20.   

    LZ新手,连JSP和Servlet的区别和联系还没搞清楚。建议先搜索下JSP和Servlet的区别。或许你的问题就解决了。
      

  21.   

    jsp就是servlet啊
     JSP全称是Java Server Pages,它是servle技术的特殊情况,都是SUN公司定义的一种用于开发动态web资源的技术。
     JSP这门技术的最大的特点在于,写jsp就像在写html,但:
    • 它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。
    • 相比servlet而言,servlet很难对数据进行排版,而jsp除了可以用java代码产生动态数据的同时,也很容易对数据进行排版。
    • Jsp快速入门:在jsp页面中输出当前时间。
      

  22.   

    请不要这样做,jsp里写java代码,可以写。
    jsp里嵌入servlet可以做,你只需去参考下HttpServlet的源码,下个tomcat源码,里面可以找到。但是!!!!jsp里写Java会让人有种想屎的感觉啊!!!!你就算拼着呕吐写完了!!你以后也不远愿意再去看它一眼啊!!!有木有!!!全是<%%>!!真的想屎啊!!!!所以  别想了啊!!!!!楼主!!!!
      

  23.   

    不知道我理解的对不,LZ只是想写一个ajax请求,但是不能写JAVA类,只能修改jsp。$.ajax({
                    url : "/broker/aaa.jsp",
                    type:'post',
                    context : this,
                    data : {"ddd" : "111"},
                    error : function(jqXHR, textStatus, errorThrown) {
                        alert();
                    },
                    success : function(data, textStatus, jqXHR) {
                        alert(data);
                    }
                });JSP中:<%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%
        String ddd = request.getParameter("ddd");
        out.print(ddd+"====");
    %>
      

  24.   

    zxcvbnm11920就是我想要的結果,並且正確理解我意思,不過之前yousteely 就已經說明出來了,只怪了我笨了點,沒明白, 謝謝這兩個人,同時也謝謝大家。