您的位置 首页 java

学习java第二天

1 安装 Tomcat

安装启动Tomcat的学习中,可能会遇到一种情况,即双击bin目录中的startup.bat脚本文件时,命令行窗口一闪而过。在这种情况下,由于无法查看到错误信息,因此,无法对Tomcat进行诊断,分析其出错的原因。这时,可以先启动一个命令行窗口,在这个命令行窗口中进入Tomcat安装目录中的bin目录,然后在该窗口中执行startup.bat命令,就会看到错误信息显示在该窗口中。

2 查看 jdk 路径

cmd:java -verbose

3 修改tomcat端口号

server.xml文件中有一个<Connector>元素,该元素中有一个port属性,这个属性就是用于配置Tomcat服务器监听的端口号。当前port属性的值为8080,表示Tomcat服务器使用的端口号是8080。Tomcat监听的端口号可以是0~65 535的任意一个整数,如果出现端口号被占用的情况,就可以修改这个port属性的值来修改端口号

4 创建tomcat服务器

Eclipse 中创建Tomcat服务器。单击Eclipse下侧窗口的【Servers】选项卡标签(如果没有这个选项卡,则可以通过【Window】→【Show View】打开),在该选项卡中可以看到一个“No servers available.Define a new server from the new server wizard…”的链接,单击这个链接,会弹出一个【New Server】窗口

5 修改tomcat端口

修改HTTP/1.1端口9999,tomcat admin port 为8080

6 tomcat项目要右键设置 classpath 属性

ClassPath —->Add Library —-> Server Runtime —-> Next —-> 选择tomcat —-> Finish

7 javac 编译 servlet
把servlet-api.jar文件复制到该源文件夹下,就用了 javac -classpath servlet-api.jar *.java,果然没出错,发现了 class文件

8 ecliplse 创建web项目

File -New-Dynamic Web Project

9 tomcat配置servet,可配置为多重URL

<servlet>

<servlet-name>TestServlet01</servlet-name>

<servlet-class>cn.itcast. Servlet .TestServlet01</servlet-class>

</servlet>

<servlet-mapping>

<!–映射为Test01–>

<servlet-name>TestServlet01</servlet-name>

<url-pattern>/Test01</url-pattern>

<url-pattern>/Test11</url-pattern>

</servlet-mapping>

<servlet>

<servlet-name>TestServlet2</servlet-name>

<servlet-class>cn.itcast.servlet.TestServlet2</servlet-class>

</servlet>

<servlet-mapping>

<!–映射为Test01–>

<servlet-name>TestServlet2</servlet-name>

<url-pattern>/Test02</url-pattern>

</servlet-mapping>

其中,<url-pattern>/</url-pattern>,可设置为默认servlet,

10 servletconfig 接口获取servlet初始参数

web.xml中配置init-param作为初始参数

<servlet>

<servlet-name>TestServlet2</servlet-name>

<servlet-class>cn.itcast.servlet.TestServlet2</servlet-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

</servlet>

在servlet请求中通过ServletConfig读取

PrintWriter out = response.getWriter();

// 获得ServletConfig对象

ServletConfig config = this.getServletConfig();

// 获得参数名为 encoding 对应的参数值

String param = config.getInitParameter(“encoding”);

out.println(“encoding=”+param);

11 ServletContext接口,该对象不仅封装了当前Web应用的所有信息,而且实现了多个Servlet之间数据的共享

配置如下:

<context-param>

<param-name>companyName</param-name>

<param-value>itcast</param-value>

</context-param>

<context-param>

<param-name>address</param-name>

<param-value>beijing</param-value>

</context-param>

servlet请求中读取context-param

response.setContentType(“text/html; charset =utf-8″);

// 得到 ServletContext 对象

ServletContext context = this.getServletContext();

// 得到包含所有初始化参数名的Enumeration对象

Enumeration<String> paramNames =context.getInitParameterNames();

out.println(“all the paramName and paramValue are following:”);

// 遍历所有的初始化参数名,得到相应的参数值并打印

while (paramNames.hasMoreElements()) {

String name = paramNames.nextElement();

String value = context.getInitParameter(name);

out.println(name + “: ” + value);

out.println(“<br />”);

}

12 ServletContext对象所存储的数据可以被多个Servlet所共享。

设置属性值:

ServletContext context = this.getServletContext();

// 通过setAttribute()方法设置属性值

context.setAttribute(“data”, “this servlet save data”);

读取属性值:

ServletContext context = this.getServletContext();

// 通过getAttribute()方法获取属性值

String data = (String) context.getAttribute(“data”);

13 读取web应用文件下的资源文件

学习java第二天

response.setContentType(“text/html;charset=utf-8”);

ServletContext context = this.getServletContext();

PrintWriter out = response.getWriter();//获取 相对路径 中的输入流对象

InputStream in = context.getResourceAsStream(“/WEB-INF/classes/itcast.properties”);

//获取文件绝对路径12    

//String path = context.getRealPath(“/WEB-INF/classes/itcast.properties”);

// FileInputStream in = new FileInputStream(path);

Properties pros = new Properties();

pros.load(in);

out.println(“Company=” + pros.getProperty(“Company”) +”<br />”);

out.println(“Address=” + pros.getProperty(“Address”) + “<br />”);

14 HttpServletResponse对象发送响应消息体相关的方法

虽然 response 对象的 getOutputStream()和 getWriter()方法都可以发送响应消息体,但是,它们之间互相排斥,不可同时使用

String data = “data”;

//获取字节流输出对象

OutputStream out = response.getOutputStream();

out.write(data.getBytes());

//获取字符流输出对象

PrintWriter print = response.getWriter();

print.write(data);

15 解决中文乱码

第一种方法

response.setContentType(“text/html;charset=utf-8”);

第二种方法

response.setCharacterEncoding(” utf -8″);// 通知浏览器使用utf-8解码

response.set header (“Content-Type”,”text/html;charset=utf-8″);

16 网页跳转和定时刷新

// 2秒后刷新并跳转到 传智播客 官网首页

response.setHeader(“Refresh”,”2;URL=#34;);

// 每隔3秒定时刷新当前页面9     

response.setHeader(“Refresh”, “3”);

response.getWriter().println(new java.util.Date());// 输出当前时间

17 HttpServlet request 对象读取消息头

PrintWriter out = response.getWriter();// 获取请求消息中所有头字段    

Enumeration headerNames = request.getHeaderNames();// 使用循环遍历所有请求头,并通过getHeader()方法获取一个指定名称的头字段    

while (headerNames.hasMoreElements()) {

String headerName = (String)headerNames.nextElement();

out.print(headerName + ” : ” + Request .getHeader(headerName) + ” <br />”);

}

18 HttpServletRequest对象读取消息行

PrintWriter out = response.getWriter();// 获取请求行的相关信息11    

out.println(“getMethod : ” + request.getMethod() + “<br />”);

out.println(“getRequestURI : ” + request.getRequestURI() +”<br />”);

out.println(“getQueryString:”+request.getQueryString() + “<br />”);

out.println(“get Protocol : ” + request.getProtocol() + “<br />”);

out.println(“getContextPath:”+request.getContextPath() + “<br />”);

out.println(“getPathInfo : ” + request.getPathInfo() + “<br />”);

out.println(“getPathTranslated : “+ request.getPathTranslated() + “<br>”);

out.println(“getServletPath:”+request.getServletPath() + “<br />”);

out.println(“getRemoteAddr : ” + request.getRemoteAddr()+ “<br />”);

out.println(“getRemoteHost : ” + request.getRemoteHost()+ “<br />”);

out.println(“getRemotePort : ” + request.getRemotePort() +”<br />”);

out.println(“getLocalAddr : ” + request.getLocalAddr() + “<br />”);

out.println(“getLocalName : ” + request.getLocalName() + “<br />”);

out.println(“getLocalPort : ” + request.getLocalPort() + “<br />”);

out.println(“getServerName : ” + request.getServerName()+ “<br />”);

out.println(“getServerPort : ” + request.getServerPort() + “<br />”);

out.println(“getScheme : ” + request.getScheme() + “<br />”);

out.println(“getRequestURL : ” + request.getRequestURL() +”<br />”);

19 防止盗链

response.setContentType(“text/html;charset=utf-8”);

PrintWriter out = response.getWriter();

// 获取referer头的值    

String referer = request.getHeader(“referer”);

// 获取访问地址13    

String sitePart = “#34; + request.getServerName();

// 判断referer头是否为空,这个头的首地址是否以sitePart开始的

if (referer != null && referer.startsWith(sitePart)) {

// 处理正在下载的请求

out.println(“dealing download …”);

}

else {

// 非法下载请求跳转到download.html页面

RequestDispatcher rd = request.getRequestDispatcher(“/download.html”);

rd.forward(request, response);

}

20 HttpServletRequest获取请求参数

String name = request.getParameter(“username”);

String password = request.getParameter(“password”);

System.out.println(“用户名:” + name);

System.out.println(“密 码:” + password);// 获取参数名为“hobby”的值

String[] hobbys = request.getParameterValues(“hobby”);

System.out.print(“爱好:”);

for (int i = 0; i < hobbys.length; i++) {

System.out.print(hobbys[i] + “, “);

}

21 HttpServletRequest防止请求参数出现乱码

request.setCharacterEncoding(“utf-8”);

22 RequestDispatcher对象请求转发

1.将当前servlet请求中,数据存储到request对象中    

request.setAttribute(“company”, ” 北京传智播客教育科技有限公司 “);

RequestDispatcher dispatcher = request.getRequestDispatcher(“/ResultServlet”);

dispatcher.forward(request, response);

2.转发servlet请求中,读取了请求的属性company并显示,并且页面不需发生跳转。

response.setContentType(“text/html;charset=utf-8”);

// 获取PrintWriter对象用于输出信息    

PrintWriter out = response.getWriter();

// 获取request请求对象中保存的数据

String company = (String)request.getAttribute(“company”);

if (company != null)

{

out.println(“公司名称:” + company + “<br>”);

}

23 请求包含

请求包含指的是使用 include ()方法将Servlet请求转发给其他Web资源进行处理,与请求转发不同的是,在请求包含返回的响应消息中,既包含了当前Servlet的响应消息,也包含了其他Web资源所作出的响应消息。使用include()方法实现请求包含后,浏览器显示的URL地址是不会发生变化的。

当前servlet:

response.setContentType(“text/html;charset=utf-8”);

PrintWriter out = response.getWriter();

RequestDispatcher rd = request.getRequestDispatcher(“/IncludedServlet?p1=abc”);

out.println(“before including” + “<br />”);

rd.include(request, response);

out.println(“after including” + “<br />”);

包含servlet:

response.setContentType(“text/html;charset=utf-8”);

response.setCharacterEncoding(“utf-8”);

PrintWriter out = response.getWriter();

out.println(“中国” + “<br />”);

out.println(“URI:” + request.getRequestURI() + “<br />”);

out.println(” Query String:” + request.getQueryString() + “<br />”);

out.println(“parameter p1:” +request.getParameter(“p1”) + “<br />”);

24 操作 cookie

String lastAccessTime = null;

// 获取所有的cookie,并将这些 Cookie 存放在数组中    

Cookie[] Cookies = request.getCookies();

// 遍历cookies数组    

for (int i = 0; cookies != null && i < cookies.length; i++) {

if (“lastAccess”.equals(cookies[i].getName())) {

// 如果cookie的名称为lastAccess,则获取该cookie的值        

lastAccessTime = cookies[i].getValue();

break;

}

}

// 判断是否存在名称为lastAccess的cookie    

if (lastAccessTime == null) {

response.getWriter().print(“您是首次访问本站!!!”);

}

else {

response.getWriter().print(“您上次的访问时间是: ” + lastAccessTime);

}

// 创建cookie,将当前时间作为cookie的值发送给客户端

String currentTime = new SimpleDateFormat(“yyyy年MM月dd日hh:mm:ss”).format(new Date());

Cookie cookie = new Cookie(“lastAccess”, current Time);

// 发送 cookie

response.addCookie(cookie);

25 操作 session

读取session

//创建或者获取保存用户信息的session对象

HttpSession session = request.getSession();

User user = (User) session.getAttribute(“user”);
存储session

cart = new ArrayList<Book>();

//将购物车存入session对象

session.setAttribute(“cart”, cart);

文章来源:智云一二三科技

文章标题:学习java第二天

文章地址:https://www.zhihuclub.com/185993.shtml

关于作者: 智云科技

热门文章

网站地图