美文网首页
JAVA EE 复习笔记

JAVA EE 复习笔记

作者: 大海画家 | 来源:发表于2017-11-22 22:57 被阅读0次

写后记:

2017/11/22

最近因为吉趣项目需要做校园网的课表、成绩查询功能,不得不使用模拟请求,去请求uims教务系统的信息。

获取后需要放在一个连有校园网(外网无法查询)的服务器上,然后我们通过ajax请求服务器,服务器返回它在uims查完的信息。

我们用的是wamp安装的apache服务器,然后我就把.py页面放进去了,结果一直获取不到url请求,

直到安装了flask框架。

然后按照配置了 WSGI

之前一直理解不了原理,现在总算是知其所以然了。

感谢  吉林大学 计算机学院 的 姜老师


JAVA EE:标准开发架构,主要用于企业级应用程序的开发

第一部分 Internet 与 Web 应用

一、web开发简介

发展:静态web->动态web

静态web

动态web实现方式:php/jsp/cgi(公共网关接口)

动态web主要特点

1.交互式;2.数据上传、下载、查询、存储;3.信息实时传送

企业开发架构

二、HTML简介

HTML:一种标记语言,通过嵌入代码或标记来表明文本格式

基本框架

<html>

    <head>

        <meta charset="utf-8">

        <title>your title</title>

    </head>

    <body>

             <--your content -->

    </body>

</html>

表单

< form action="xxx.jsp" method="">                  //递交请求的页面

< input type="submit" name="Submit" >           //递交按钮和按钮的索引

< input type="text" name="password">

< input type="text" name="name">

< /form>

post和get的区别

get:拼接在页面url中,限制255个字符

post:不拼接,不限制

三、Tomcat 服务器

路径

四、简单的程序 html+jsp

<%@  page language="java" import="java.util.*" pageEncoding="utf-8">   //按照学校的尿性肯定考试要默这句

<html>

<body> 

<%

out.println("<h1>并不是很有趣的JavaEE</h1>")

%>

</body>

</html>

第二部分 Servlet

一、Servlet:Java对CGI程序的实现、多线程处理。服务器端程序。

//其实就是负责处理http请求的程序,服务器收到请求后,将请求交给servlet类处理。

//servlet 处理完结果之后会交由服务器返回客户端

二、servlet实现

实现HttpServletResponse

客户端每次访问一个支持HTTP的Servlet程序时,

处理请求:

Servlet引擎都将调用Servlet的service方法来进行处理。

service方法接受两个参数,

一个是用于封装HTTP请求消息的对象,其类型为HttpServletRequest,

另一个是代表HTTP响应消息的对象,其类型为HttpServletResponse。

返回响应:

调用HttpServletResponse对象的getWriter方法可以获得一个文本输出流对象,向这个流对象中写入的数据将作为HTTP响应消息的实体内容部分发送给客户端。

三、创建servlet

1.xxxx extends HttpServlet //集成httpservlet类

2.override [doGet],[doPost] //重写httpservlet类的 处理get、post 请求的方法

3.将这个类的文件拷贝到web-inf/classes

web-inf文件夹只允许服务器访问,放入该文件夹的文件,用户无法通过输入url访问(用户端访问)

4.在web.xml 中配置 servlet路径

直接爬老师的课件了 = =

概括//考试时候这样写

import java.io.*

import javax.servlet.*

public class myServlet extends HttpServlet{

    public void doGet( HttpServletRequest req,HttpServletResponse resp )thirows IOException{

        PrintWriter out = resp.getWriter();

        out.println("<h1>hahaha</h1>")

    }

}

配置

<servlet>

< servlet-name >hello</ servlet-name >

< servlet-class> org.lxh.servletdemo.HelloServlet  < servlet-class>

</servlet>

<servlet-mapping>

< servlet-name >hello< /servlet- name  >   // 映射路径,出现下列路径时跳转到servlet

< url-pattern>/hello.asp<   url-pattern >

</servlet-mapping>

将表单的请求交由servlet类处理

表单

<form action=" myServlet " method="GET">                  //递交请求的页面

< input type="submit" name="Submit" >           //递交按钮和按钮的索引

< input type="text" name="password">

< input type="text" name="Name">

< /form>

public class myServlet extents HttpSetvlet{

    public void doGet(HttpServletRequest rq,HttpServletResponse resp) throw IOException{

        string password= rq.getParameter("password");

        string Name= rq.getParameter("Name");

        PrintWriter out =resp.getWriter();

        out.println("<h1>"+ password +"</h1>")

    }

}

四、Servlet生命周期

servlet容器:tomcat等,控制servlet类的生命周期。

什么时候实例化:第一次使用,或者web容器启动的时候(配置);

初始化:init()方法

销毁:destory()方法 //销毁前调用

servlet的部署:

Cookie: 把用户的数据写给用户的浏览器(客户端)

Session: 用户的数据写到用户独占的session中(服务器端);需要客户端的 cookie 协作;会话,生命周期是一段周期(不访问超过一定市场,服务器将其销毁)

Application:这个就不多谈了,不理解

使用:

get / setAttribute 方法存键值对

五、获取初始化 = =我也不知道怎么用,先记着

//写在 myServlet里面

public void init(ServletConfig config) throws ServletException{

    this.initParam=config.getInitParameter("ref") ;//接收初始化参数

}

六、获取其他初始化对象

//写在 myServlet doGet/doPost里面

(HttpServletRequest req,HttpServletResponse resp)throw IOExceotion

{

//Session

HttpSession ses = req.getSession();

ses.getAttribute("username");//从回话去键值

ses.setAttribute("name","朱陈超");//这个就不多谈了

//获取application

ServletContext application = super.getServletContext();

System.out.println (application.getRealPath("/"));

}

七、Servlet跳转

1.客户端跳转

使用HttpServletResponse接口的sendRedirect()方法;

此跳转只能传递session范围的属性,而无法传递request范围的属性;

resp.sendRedirect();

在页面中接收session属性  //ppt中忽然插入这个,猝不及防= =

<%@ page contentType="text/html" pageEncoding="utf-8">//页面配置

<html>

<body>

<h1><%=session.getAttribute("name") %></h1>

</body>

</html>

2.服务器跳转 //记不住,这几分不要了

RequestDispatcher rd = req.getRequestDispatcher("get_info.jsp");

rd.forward(req,resp) ;//服务器跳转

敲代码的时候百度

八、servlet处理文件的操作

1.文件读取

doGet(HttpServletRequest req,HttpServletResponse resp){

resp.setContentType("text/html");

resp.setCharacterEncoding("utf-8");

PrintWriter out = resp.getWriter();

String filename = "afile.txt";

String realPath = req.getRealPath(filename);

File file = new File(realPath);

if(file.exists()){

    FileReader reader = new FileReader(file);

    BufferedReader br = new  BufferedReader(reader);

    String line = null;

    while(line=br.readline()!=null){

        out.print("<h3>"+line+"</h3>");

    }

}else{

    //文件不存在

}

2.文件写

doGet(HttpServletRequest req,HttpServletResponse resp){

resp.setContentType("text/html");

resp.setCharacterEncoding("utf-8");

PrintWriter out = resp.getWriter();

String filename = "afile.txt";

String realPath = req.getRealPath(filename);

File file = new File(realPath);

FileWriter writer = new FileWriter (file);

BufferedWriter bfw=new BufferedWriter( writer );

bfw,write(" l write");

bfw.flush();

bfw.close();

writer.close

}

3.文件上传 // 真复杂

//表单

<form method="post" action="FileUpload" ENCTYPE="multipart/form-data">

文件:<input type="file" name="file">

<input type="submit" value="上传" name="submit">

</form>

//servlet-doPost

//import java.io.*

//import javax.servlet.*

//import org.apache.commons.fileupload.*

public  void doPost(HttpServletRequest req,HttpServletResponse resp){

boolen isMultipart = ServletFileUpload.isMultipartContent(request);//请求是不是上传文件

if( isMultipart ){

    FileItemFactory factory = new DiskFileItemFactory();

    ServletFileUpload upload = new ServletFileUpload(factory);

    lterator items;

    try{

        items = upload.parseRequest(request).iterator();//用迭代器解析request请求中的信息

        while(item.hashNext()){

            FileItem item=(Fileltem)items.next();

            if(!item.isFormFiels){

            //取出上传文件的文件名

            String name = item.getName();

            String fileName = name.substring(name.lastIndexOf("\\")+1,name.length());

            String path=request.getRealPath("file")+File.separatorChar+fileName;

            //上传

            File uploadFile = new File(Path)

            item.write(uploadedFile);

            }

        }

    }

}

}

第三部分 JSP

JSP:动态网站技术标准,它是在传统的HTML网页文档中加入能够生成动态内容的可执行Java程序片段和JSP标记所构成的代码

!浏览器请求jsp文件时候,先由服务器执行文件的程序段,执行完毕后再发送给浏览器。

一、例子

<%@ page contentType="text/html" ; charset="Utf-8" %>//配置页面

<%@ page language="java" %>

<%! String s1,s2,s3,s4>//定义<%! xxxxx %>

<html>

    <body>

        <h1>JSP<h2>

        <% s1="1";s2="2";s3="3";out.println(s1+s2+s3) %>

    </body>

</html>

二、应用方式

JSP+Servlet+JDBC+JavaBeans

<%

    String name="zhucc"//requset.getParameter("Name");

    if(name! = null)

    {

%>

    //这里面可以些html标签与<%=name%>的赋值、<%%>操作

<%

    }else{

%>

    //这里面可以些html标签与<%=name%>的赋值、<%%>操作

<%

    }

%>

注释

<-- content --> //用户端可以看到(html注释)

<%-- content --%>//用户端看不到(jsp注释)

三、<jsp : forward>

强制调转请求到另外的文件如JSP、Servlet或者是静态页面来处理并将当前页面的执行停止。

1.写法

//不传递参数

<jsp:forward page=" {文件路径}  ">

//传递参数

<jsp:forward page=" {文件路径}  ">

    <jsp:param name="KEY" value="VALUR" />

    ...//多个参数

</jsp:forward>

2.和response.sendRedirect的区别

<jsp : forward>

1.服务器内部转换

2.使用同一个请求//就是说两个页面可以从request.getParameter获取同样的参数

3.跳转后不再执行后面的语句

4.速度快

response.sendRedirect

1.需要在客户端往返

2.不同的请求

3.继续执行后面的语句

4.速度慢

四、包含操作 include

1.<%@include> 静态包含

在JSP中动态地包含入一个静态或动态的页面资源,当JSP执行时,将所包含的资源进行处理,并将这些页面如同在同一个JSP中一样地运行、显示、输出。

<html>

<body>

<h1>Title</h1>

<%@include file="xxxx.jsp"   %>

</body>

</html>

2.<jsp:include> 动态包含

动态包含语句,可以自动区分被包含的页面是静态还是动态。

//先分别处理被包含的页面(jsp 动态页面),再将结果包含进来

不传递参数

<jsp:include page=" { 文件路径 } " flush=“true|fasle”>

传递参数

< jsp:include page=" { 文件路径 } " flush=“true|fasle”>

    <jsp:param name="KEY" value="VALUE">

</jsp:include

五、<jsp:plugin>

在客户端显示和执行Java,Applet或JavaBean,该动作可以自动检测客户端浏览器的类型,当一个plugin不能被加载时该动作还可以自动下载和安装该plugin,并使用动作将文本插入到页面中。该动作还支持很多属性

//不写这个了,暂时没体会到有啥用,需要的时候再查

六、JAVABeam

1.操作

<jsp:params>:为Java applet 或JavaBean 定义一组参数

<jsp:useBean>:定义一个在JSP中使用的JavaBean

<jsp:getProperty>:从指定的JavaBea中获取一个属性值

<jsp:setProperty>:设定一个JavaBean实例的某个属性值

2.示例

<jsp:useBean id = "  formMail " class = " util.formMail " >

    <jsp:setProperty name="formMail" property="*" />

</jsp:useBean>

七、操作错误页面

<%@page errorPage="error.jsp" %> //程序一单出现错误则跳转到该页面

error.jsp

<%@page languag="java" contentType="text/html" pageEncoding="utf-8"  %>

<%@page isErrorPage="true" %>

<h1>程序出现了错误</h1>

八、JSP内置对象的四种属性范围

pageContext: 只在一个页面中保存属性,跳转后无效

request: 只在一次请求中保存,服务器跳转后依然有效

session: 在一次会话范围中无论如何跳转都有效,但是新开浏览器无效

application: 在整个服务器上保存,所有的用户都可以使用

1.操作

public void setAttribute(String keyName,Object keyValue);//添加

public Object getAttribute(String name);//获取

Date aDay=(Date)pageContext.getAttribute("birthday");

public void removeAttribute(String name);//删除

pageContext 使用<jsp:forward page="">是不好使的,因为只能当前页面使用

//不是很理解,那用变量不是都可以解决嘛,有啥作用?????

至于request和session和application,很好理解,就不多谈了。

(href 跳转 属于客户端调准, request 不是同一个)

2.表单传参,request获取

<form action = "xxx.jsp" method = "post">

<input type="text" name="uname">

<input type="submit" value="递交">

</form>

//我的xxx.jsp

<%

request.setCharacterEncoding("utf-8");

var name =request.getParameter("name");

%>

<h1><%=name%></h1>

九、response常用方法

1.设置响应头

response.setHeader("KEY","VALUE");

2.跳转

response.sendRedirect(""hello.html);

3.操作Cookie


//创建cookie

<%

Cookie c1 = new Cookie("Name","ZCC");//创建cookie

c1.setMaxAge(60);//设置cookie保存60秒;

response.addCookie(c1);//向客户端增加cookie

%>

//获取cookie

<%

Cookie c[]=request.getCookie()://获取全部cookie

c[0].getName();

c[0].getValue();

%>

十、Session常用方法

当一个用户连接到服务器之后,服务器会自动为此session自动分配一个不会重复的Session Id,服务器依靠这些不同的Session Id来区分每一个不同的用户。

1.获取session id

string id = session.getId();

2.是否是新的session (新用户)

boolean isNew = session.isNew();

3...取得用户创建时间什么的

就不多谈了,用到baidu

十一、servlet与jsp 的开发模式 // 究极盗图

1.Model 1


2.Model 2


第四部分JDBC

一、JDBC的任务

1.同一个数据库建立连接

2.向数据库发送SQL语句

3.处理数据库返还的结果

二、JDBC的驱动管理器

驱动管理器是【DriverManage类】,它在数据库和用户驱动器间工作,在数据库和适合的驱动器间建立联系。真正进行数据库连接的是【Driver】类中的【connect()】方法。

三、用SQL指令操作数据库

1.载入JDBC驱动程序

Class.forName("com.mysql.jdbc.Driver");//所选定驱动程序的名称

2.连接到DBMS

getConnection();

getConnection(String url);

getConnection(String url,Properties info);

getConnection(String url,String user,String password);

String url="jdbc:mysql:// localhost:3306/graduation_design"

3.创建并执行语句

通过Statement对象发送SQL语句,返回查询结果。

Statement对象用于执行简单的SQL语句,也就是没有参数的SQL语句;

PreparedStatement对象用于执行需要重复执行的预编译过的SQL语句;

CallableStatement对象用于执行一个数据库的存储过程。

//创建Statement

Statement stmt = connect.createStatment();

//

executeQuery( String sql );//执行给定的SQL查询语句,返回ResultSet对象。

executeUpdate( String sql );//执行给定的SQL更新语句,返回INSERT、UPDATE或DELETE语句的行计数,或者返回0表示不返回任何内容。

execute( String sql ); //执行给定的SQL查询语句,该语句可能返回多个结果。

//关闭

stmt.close();

4.处理DBMS返回的数据

JDBC接收查询结果是通过ResultSet对象实现的//结果集

用户可以通过get方法来访问

//元数据:数据信息

DatabaseMetaData dbmd=connection.getMetaData();

5.终止与DBMS的连接

connection.close();

6.DEMO

String diver="com.mysql.jdbc.Driver";

String url="jdbc:mysql://localhost:3306/graduation_design"

String user="root";

String password="";

//第一步:载入JDBC驱动程序

Class.forName(driver);

//第二步:连接到数据库

Connection connect=DriverManage.getConnection(url,user,password);

//第三部:创建Statement对象

Statement stmt = connect.createStatement();

//获取查询结果

String query = “SELECT * FROM namelist”;

ResultSet result =stmt.executeQuery(query);

ResultSetMetaData md=result.getMetaData();

StringBuffer s =new StringBuffer();

for(int i=1;i<=md.getColumnCount;i++){

s.append(md.getColumnName(i));

}

//关闭连接

result.close();

stmt.close();

connect.close();

第五部分 JavaBean概述

javaBean:简单地说JavaBean就是普通的Java类,在遵循JavaBean特定规范下对功能进行封装

一、demo

public class SimpleBean(){

private string name;

public void setName(String name){this.name=name}

public String getName(){return this.name}

}

//每一个属性都要有public 的 setter和getter

web开发标准目录结构

javaBean保存着 classes文件夹里面

二、jsp使用javaBean

1.import

<%@page import="cn.mldn.*" %>

<%

SimpleBean simple = new SimpleBean() ;

simple.setName("李兴华") ;

%>

<%=simple.getName()%>

2.使用<jsp:useBean>

<jsp:useBean id="实例化对象名称" scope="保存范围" class="包.类名" />

<jsp:useBean id="simple" scope="page" class="cn.mldn.lxh.demo.SimpleBean" />

<%

simple.setName("ZCC");

%>

三、javaBean与表单

1.表单

<form action="input_bean.jsp" method="post">

    <input type="text" name="name">

    <input type="submit" value="递交">

</form>

2.jsp接收表单内容

<%@page import="cn.mldx.lxh.demo.*" pageEncoding="utf-8" %>

<% request.setCharacterEncoding("utf-8")%>

<%

SimpleBean simple=new SimpleBean();

simple.setName(request.getParameter("name"));

%>

3.设置属性的参数

<jsp:useBean id="simple" scope="page" class="cn.mldn.lxh.demo.SimpleBean"/>

<jsp:setProperty name="simple" property="name" param="name"/>

4.取得属性

<h1>姓名: < jsp:getProperty name="simple" property="age"/> <h1>

5.删除javaBean

1)删除page范围

pageContext.removeAttribute(JAVABEAN的名称);

2)删除request、session、application范围

request.removeAttribute(JAVABEAN的名称);

session .removeAttribute(JAVABEAN的名称);

application .removeAttribute(JAVABEAN的名称);

—— END ——

相关文章

网友评论

      本文标题:JAVA EE 复习笔记

      本文链接:https://www.haomeiwen.com/subject/ozfovxtx.html