问题集

本文介绍了Eclipse中Ctrl+Shift+O快捷键失效的解决方案,涉及输入法冲突及Eclipse设置调整。同时,讨论了如何关闭或启动MySQL服务,以及在Java Web开发中相对路径和绝对路径的应用。还讲解了Statement接口的executeQuery、executeUpdate方法,以及servlet中的doGet和doPost方法的区别和使用场景。
摘要由CSDN通过智能技术生成

1.在Eclipse下,快捷键Ctrl+Shift+O,不能快速导包
1,是否导入API包
2,是否和Eclipse中自定义的快捷键发生冲突
3,是否和输入法发生冲突
对于以上三种情况,解决办法如下:
1,找到对应的API包导入即可。
2,在eclipse中点击Window,选择Preferences——General——Key,输入Ctrl+Shift+O,将自定义的快捷键进行修改,并Apply——OK即可。
3,输入法一般为搜狗输入法,选择设置,将对应的快捷键进行修改即可。
我遇到的情况是,输入法与输入法之间进行切换时的快捷键是Ctrl+Shift,所以每当试图导包时,就会转到输入法之间的切换,无法进行导包。
解决方法:选择Window——控制面板——时钟、语言和区域——区域和语言——键盘和语言——更改键盘——高级键设置——在输入语言之间——切换键盘布局——不要选中Ctrl+Shift——点击确定即可。
原文链接:https://blog.csdn.net/u012702708/article/details/44057875

2.如何关闭或启动mysql服务

https://jingyan.baidu.com/article/870c6fc37ca6feb03fe4beac.html

3.相对路径和绝对路径

(1)学生信息管理

request.getContextPath()拿到的是你的web项目的根路径,就是webContent(MyEclipse中是webRoot)

(2)实例测试:

web.xml配置(注意此处的url-pattern项)

<?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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>aab</display-name>
  <welcome-file-list>
    <welcome-file>a.jsp</welcome-file>
  </welcome-file-list>
    <servlet>
        <servlet-name>test</servlet-name>
        <servlet-class>com.java.test.TestServlet</servlet-class>

    </servlet>
    <servlet-mapping>
        <servlet-name>test</servlet-name>
        <url-pattern>/*</url-pattern><!-- 注意此处 -->
    </servlet-mapping>

</web-app>

TestServlet.java文件:

package test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("servletPath:"+req.getServletPath());
        System.out.println("contextPath:"+req.getContextPath());
        System.out.println("contextPath2:"+req.getServletContext().getContextPath());
        System.out.println("pageInfo:"+req.getPathInfo());
        System.out.println("uri:"+req.getRequestURI());
        System.out.println("url:"+req.getRequestURL());
        System.out.println("realPath:"+req.getServletContext().getRealPath("/"));

    }

}

此时请求http://localhost:8080/testweb (url-pattern=/*)
打印出来的值为:

servletPath:
contextPath:/testweb
contextPath2:/testweb
pageInfo:null
uri:/testweb
url:http://localhost:8080/testweb

请求http://localhost:8080/testweb/abc 打印的值为:

servletPath:
contextPath:/testweb
contextPath2:/testweb
pageInfo:/abc
uri:/testweb/abc
url:http://localhost:8080/testweb/abc
realPath:G:\java\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\testweb\

当我们修改web.xml为如下时(注意url-pattern的改变):

<?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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>aab</display-name>
  <welcome-file-list>
    <welcome-file>a.jsp</welcome-file>
  </welcome-file-list>


    <servlet>
        <servlet-name>test</servlet-name>
        <servlet-class>com.java.test.TestServlet</servlet-class>

    </servlet>

    <servlet-mapping>
        <servlet-name>test</servlet-name>
        <url-pattern>/abc/def/*</url-pattern><!-- 注意此处 -->
    </servlet-mapping>

</web-app>

请求http://localhost:8080/testweb/abc/def/ghi/test.html (url-pattern=/abc/def/*)
打印的值为:

servletPath:/abc/def
contextPath:/testweb
contextPath2:/testweb
pageInfo:/ghi/test.html
uri:/testweb/abc/def/ghi/test.html
url:http://localhost:8080/testweb/abc/def/ghi/test.html
realPath:G:\java\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\testweb\

通过观察打印结果,我们可以总结:

  1. getServletPath():获取能够与“url-pattern”中匹配的路径,注意是完全匹配的部分,*的部分不包括。
  2. getPageInfo():与getServletPath()获取的路径互补,能够得到的是“url-pattern”中*d的路径部分
  3. getContextPath():获取项目的根路径
  4. getRequestURI:获取根路径到地址结尾
  5. getRequestURL:获取请求的地址链接(浏览器中输入的地址)
  6. getServletContext().getRealPath(“/”):获取“/”在机器中的实际地址
  7. getScheme():获取的是使用的协议(http 或https)
  8. getProtocol():获取的是协议的名称(HTTP/1.11)
  9. getServerName():获取的是域名(xxx.com)
  10. getLocalName:获取到的是IP

4.executeQuery、executeUpdate 和 execute

Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。

方法executeQuery
用于产生单个结果集的语句,例如 SELECT 语句。 被使用最多的执行 SQL 语句的方法是 executeQuery。这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。

方法executeUpdate
用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。

用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。返回值为-1代表更新不成功。

Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
            sql = "update ad_list set name = '小红' where id=1";
            //sql = "select * from mysql.user";
            int result = stmt.executeUpdate(sql);
            if(result != -1){
                System.out.println("更新 ok");
                }

使用executeUpdate方法是因为在 createTableCoffees 中的 SQL 语句是 DDL (数据定义语言)语句。创建表,改变表,删除表都是 DDL 语句的例子,要用 executeUpdate 方法来执行。你也可以从它的名字里看出,方法 executeUpdate 也被用于执行更新表 SQL 语句。

5.servlet中的doGet与doPost

一般来说我们是用不到doGet方法的,doGet方法提交表单的时候会在url后边显示提交的内容,所以不安全。而且doGet方法只能提交256个字符(1024字节),而doPost没有限制,因为get方式数据的传输载体是URL(提交方式能form,也能任意的URL链接),而POST是HTTP头键值对(只能以form方式提交)。通常我们使用的都是doPost方法,你只要在servlet中让这两个方法互相调用就行了,例如在doGet方法中这样写
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doPost(request,response);
}

再把业务逻辑直接写在doPost方法中。servlet碰到doGet方法调用直接就会去调用doPost因为他们的参数都一样。而且doGet方法处理中文问题很困难,要写过滤器之类的。

以上from 百度知道 @權寶兒

6.<a href="<%=request.getContextPath() %>/deleteStu.action?stuNo=<%=stu.getStuNo()%>">删除</a></td>
?在这里是路径和参数的分隔符

7.request.setattribute("","");是什么意思??

request.setattribute("","") 是放在JSP的内置对象的request里值 由于你的两个参数都为空字符串没有什么意义, 你可以这样
request.setAttribute(“result”,username);
在request对象中加入名为result的属性并附值为username,因为request对象是可以更改的,你可以在同一个请求中象这样访问这个属性。
虽然类似session,但与session是有所区别的,request.setAttribute设置的属性只能在当前request只使用,比如你在Action中设置result属性,需要到jsp页面中读取:
request.setAttribute(“result”,username);
requests.getRequestDispatcher(“result.jsp”).forward(request, response);
jsp页面获取该值:
request.getAttribute( “result”);
return super.execute();是返回父类调用execute()方法的值
8.
request.getRequestDispatcher()与request的setAttribute()

关于request.getRequestDispatcher()的两个方法以及request域
https://blog.csdn.net/h2503652646/article/details/83661347

request的setAttribute()怎么用的?
https://blog.csdn.net/qq_41084324/article/details/82856391

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值