实验一 JavaEE初级编程(2 学时)
1、实验目的
(1)掌握Java程序运行环境的安装与配置。
(2)掌握Tomcat服务器的安装及环境配置方法。
(3)掌握对MyEclipse的集成开发环境的配置,为Java EE程序的实验做好准备工作。
(4)掌握编写与运行JSP程序的方法。
(5)掌握JSP语言的基本编程方法,了解JSP中各种元素及标签的使用。
2、基本要求:
(1)注意自始至终贯彻课程中所介绍程序设计风格,养成良好的编程习惯。
(2)独立完成所布置习题。
(3)为保证尽量在统一安排的上机时间内编译运行通过程序,应事先设计好程序。
(4)认真完成每次实验,并写出实验报告。
3、实验内容和步骤:
(1)安装JDK软件包。
(2)设置环境变量,包括设置Java的运行路径和classpath。
(3) 安装tomcat服务器,并了解服务器的文件结构。
(4)安装MyEclipse,学会在该环境中如何配置Tomcat服务器,完成Java EE项目的部署及运行。
(5)建立一个项目user,在其中首先创建一个注册页面,要求在注册页面中输入用户注册信息,如果注册成功,则给出成功提示,如果注册失败,则将页面返回到注册页面,并给出错误提示。
? 建立一个SQLServer数据库Test,在其中建立数据表user,表中包含用户注册时所需
要的各种信息字段,包括username,password,sex,age,hobby等,并向其中输入几条用户信息。
? 建立一个JSP 注册页面regist.jsp,
? 在其中通过form表单输入注册所需要的用户名称userName,用户密码
userPassword,重复密码RUserPassword,用户性别userSex及年龄userAge还有
用复选框表示的用户爱好hobby等信息,
? 输入信息之后通过点击提交按钮submit,将这些信息提交到另一个
regist_User.jsp页面。
? 在regist_User.jsp页面中完成数据库的验证,根据验证结果给出提示,并转到相应的
处理页面。
? 首先利用jdbc进行SQLServer数据库连接,再调用Statement执行查询语句验证
用户名是否已存在于数据库中,如果已存在,则将页面重定向到regist.jsp进行
重新注册,并给出错误提示;如果用户名不存在则将用户的信息利用Statement
保存到数据库中并返回注册成功的信息。
实验二 基于Java EE架构程序设计(2 学时)
1、实验目的:
(1)理解 Java EE架构,掌握JSP,Servlet和JavaBean的使用。
(2)掌握JSP 隐含对象的使用,尤其是request,session以及Application的使用
(3)理解JavaEE中过滤器的功能及使用方法。
2、基本要求:
(1)注意自始至终贯彻课程中所介绍的Java EE程序设计风格,养成良好的编程习惯。
(2)独立完成所布置习题。
(3)为保证尽量在统一安排的上机时间内编译运行通过程序,应事先设计好程序。
(4)认真完成每次实验,并写出实验报告。
3、实验内容与步骤:
在项目user中建立用户登录页面,login.jsp,实现用户登录操作,然后利用隐含对象将用户的登录参数传递给Servlet程序loginServlet,并同时转到loginServlet上进行登录验证,如果登录成功,转入系统欢迎页面user/welcome.jsp页面,如果登录失败则返回登录页面。
(1) 定义表示用户的JavaBean类User,User的属性包括username,userpassword,sex,
age,hobby;方法包括设置username、设置password、设置sex,设置age,设置hobby,获取username、获取password、获取sex,获取age,获取hobby。
(2) 创建login.jsp页面,在其中建立form表单,添加文本框和密码框控件,分别向其
中输入用户名和密码,然后通过提交按钮,将它提交给后台的servlet程序的url映射名。
(3) 建立工具类jdbcUtil.java,在其中建立getConnection得到数据库连接。
(4) 在创建loginServlet.java,首先从request中提取客户端传递过来的参数,再通
过调用工具类jdbcUtil取得数据库连接,通过查询语句将参数和数据库进行核对,如果用户输入的用户名称和密码不正确,给出错误提示,并将页面重定向到regist.jsp,如果用户输入的用户名和密码正确,进入系统欢迎页面。
(5) 建立loginServlet后再到Web.xml中对servlet进行部署。
(6) 为user文件夹中的所有文件添加过滤器,建立过滤器userfilter.java,在该过滤
器中实现只有登录用户才能访问user文件夹下的页面,如果用户未登录拒绝其访问该文件夹下的所有页面。
(7) 在Web.xml中对userFilter进行部署,设置激活条件。
实验三 IE小型浏览器的设计与实现(2 学时)
1、实验目的:
(1)掌握InetAdress的概念与应用
(2)掌握URL的概念
(3)掌握URL与URL Collection类的应用
2、基本要求:
(1)注意自始至终贯彻课程中所介绍程序设计风格,养成良好的编程习惯。
(2)独立完成所布置习题。
(3)为保证尽量在统一安排的上机时间内编译运行通过程序,应事先设计好程序。
(4)认真完成每次实验,并写出实验报告。
3、实验内容与步骤:
(1)利用Java扩展包java.swing提供的JEditorPane类,来显示指定的网络资源的内容,能生成并响应超链接事件。
public class browser extends JFrame{
JLabel jlabel; JTextField jtf; JEditorPane edpl;
//定义无参构造方法,对程序进行初始化
public browser(){
super("browser"); Container con=getContentPane(); jlabel=new JLabel("请输入要访问的网址:"); jtf=new JTextField(""); jtf.addActionListener(new MyEnter()); JPanel panel=new JPanel(); panel.setLayout(new GridLayout(2,1)); panel.add(jlabel); panel.add(jtf); con.add(panel,BorderLayout.NORTH); edpl=new JEditorPane(); edpl.setEditable(false);
} edpl.addHyperlinkListener(new MyHyperListener()); con.add(new JScrollPane(edpl),BorderLayout.CENTER); setSize(600,800); setVisible(true);
// JEditorPane根据参数调用响应的页面
void getPage(String site){
try{ } catch(IOException e){JOptionPane.showMessageDialog(this,"连接错误","错误提示",JOpti edpl.setPage(site); //在edpl中显示指定网页 onPane.ERROR_MESSAGE);
}
}
//处理输入网址时的回车操作
class MyEnter implements ActionListener {
}
//处理网页中的超链接
class MyHyperListener implements HyperlinkListener{
}
public void actionPerformed(ActionEvent e){ } String string=jtf.getText(); getPage(string); public void hyperlinkUpdate(HyperlinkEvent e){ if(e.getEventType()==HyperlinkEvent.EventType.ACTIVATED){ String string=e.getURL().toString();//获取超链接指向的地址 getPage(string);//显示超链接指向的网页内容 } }
//建立主函数,对该类进行实例化
public static void main(String args[]){
browser mybrowser=new browser();
mybrowser.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
实验四 基于TCP/IP协议的单客户/服务器Socket编程应用
(2 学时)
1、实验目的:
(1)掌握基于TCP/IP协议的流套接字的概念与应用
(2)掌握ServerSocke和Socket的概念与应用
(3) 掌握基于TCP/IP协议的C/S模式的编程应用
2、基本要求:
(1)注意自始至终贯彻课程中所介绍程序设计风格,养成良好的编程习惯。
(2)独立完成所布置习题。
(3)为保证尽量在统一安排的上机时间内编译运行通过程序,应事先设计好程序。
(4)认真完成每次实验,并写出实验报告。
3、实验内容和步骤:
1、建立服务器端程序
(1)talkserver.java,实现与客户的数据通信 :
import java.io.*;
import java.net.*;
public class talkServer {
//主函数
public static void main(String args[]){
ServerSocket server;
Socket socket;
String s;
try{
//建立ServerSocket,针对指定端口进行侦听
server=new ServerSocket(2000);
System.out.println("等待连接……");
socket=server.accept();
//侦听到客户端请求时,则接收请求,建立连接
System.out.println("连接成功"); System.out.println("*******************"); System.out.print(""); //建立和socket绑定的输入输出流,在服务器与客户端之间进行通信 InputStream in=socket.getInputStream(); OutputStream out=socket.getOutputStream(); DataInputStream din=new DataInputStream(in); DataOutputStream dout=new DataOutputStream(out); //建立从键盘进行输入的输入流
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
System.out.println("等待客户发送信息");
//进入死循环,实现客户端与服务器之间的信息交互
while(true){
System.out.println("");
System.out.println("");
s=din.readUTF();
System.out.println("从客户端接收到的信息为"+s);
if(s.trim().equals("BYE")) break;
System.out.print("请输入你要发送的信息");
s=sin.readLine();
dout.writeUTF(s);
if(s.trim().equals("BYE")) break;
}
din.close();
dout.close();
in.close();
out.close();
socket.close();
}catch(IOException e){
System.out.println("Error:"+e);
}
}
}
2.建立客户端程序
(1)talkclient.java,实现与服务器的数据通信
//客户端程序,用来向服务器端发出请求并进行通信
import java.io.*;
import java.net.*;
public class talkclient {
public static void main(String[] args) {
Socket socket;
String s;
try {
//针对服务器指定端口建立socket,同时对服务器指定端口发出连接请求
socket=new Socket("localhost",2000);
System.out.println();
System.out.println();
System.out.println();
//建立和socket绑定的输入输出流,以及从键盘读入数据的输入流 InputStream in=socket.getInputStream();
OutputStream out=socket.getOutputStream();
DataInputStream din=new DataInputStream(in);
DataOutputStream dou=new DataOutputStream(out);
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in)); //进入死循环进行服务器端和客户端的通信
while(true){
System.out.print("请输入您要发送的信息");
s=sin.readLine();
dou.writeUTF(s);
if(s.trim().equals("BYE")) break;
else{
System.out.println("");
System.out.println("");
}
s=din.readUTF();
System.out.println("从服务器接收到的信息为:"+s);
if(s.trim().equals("BYE")) break;
}
din.close();
dou.close();
in.close();
out.close();
socket.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
实验五 基于UDP协议的C/S模式的Socket编程应用
(2 学时)
1、实验目的:
(1)掌握基于UDP协议的数据报套接字的概念与应用
(2)掌握DatagramSocket和DatagramPacket的概念与应用
(3) 掌握基于UDP协议的C/S模式的编程应用
2、基本要求:
(1)注意自始至终贯彻课程中所介绍程序设计风格,养成良好的编程习惯。
(2)独立完成所布置习题。
(3)为保证尽量在统一安排的上机时间内编译运行通过程序,应事先设计好程序。
(4)认真完成每次实验,并写出实验报告。
3、实验内容和步骤:
本实验是基于UDP协议的C/S模式的图形界面通讯程序,以可视化操作模式,实现服务器与客户端之间的通信操作。
1、建立服务器端程序,利用该程序实现在客户端对指定端口进行监听,当有客户端发来连接请求时,向客户端提供服务。
(1)Serverapp_UDP.java,实现与客户的数据通信 :
package talk;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class Serverapp_UDP extends WindowAdapter implements ActionListener,KeyListener{
TextField str_send;
Label label;
TextArea msg;
Button send,exit;
Panel p1;
String hostname;
DatagramSocket receiveSocket,sendSocket;
DatagramPacket receivePacket,sendPacket;
public void display(){
Frame f=new Frame("在线聊天——服务器");
f.setSize(400,350);
f.setLocation(400,400);
f.setBackground(Color.red);
p1=new Panel();
f.add(p1,"South");
msg=new TextArea();
msg.setSize(100,250);
msg.setBackground(Color.white);
msg.setEditable(false);
f.add(msg);
label=new Label("发送消息");
p1.add(label);
str_send=new TextField(20);
p1.add(str_send);
str_send.addKeyListener(this);
send=new Button("发送");
p1.add(send);
send.addActionListener(this);
exit=new Button("退出");
p1.add(exit);
exit.addActionListener(this);
f.addWindowListener(this);
f.setVisible(true);
try{
sendSocket=new DatagramSocket(5000);
}catch(Exception e){
msg.append(e+"\n");
}
}
//接受信息
public void receiveMessage(){
try {
receiveSocket=new DatagramSocket(3333);
while(true){
byte[] buf=new byte[500];
receivePacket=new DatagramPacket(buf,buf.length);
receiveSocket.receive(receivePacket);
if(receivePacket.getLength()==0){
System.out.println("消息为空");
continue;
}
ByteArrayInputStream bin=new ByteArrayInputStream(receivePacket.getData());
BufferedReader reader=new BufferedReader(new InputStreamReader(bin)); msg.append("客户端:"+reader.readLine());
msg.append("\n");
reader.close();
bin.close();
}
} catch (Exception e) {
msg.append(e+"\n");
}
}
//发送信息
public void sendMessage(){
try {
String s=str_send.getText();
str_send.setText("");
msg.append("服务器:"+s+"\n");
ByteArrayOutputStream out=new ByteArrayOutputStream(); PrintStream pout=new PrintStream(out);
pout.print(s);
byte buf[]=out.toByteArray();
sendPacket=new
DatagramPacket(buf,buf.length,InetAddress.getByName(hostname),3001); sendSocket.send(sendPacket);
buf=null;
} catch (Exception err) {
msg.append(err+"\n");
}
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==send){
sendMessage();
}
if(e.getSource()==exit){
System.out.println("聊天程序已经关闭,再见!\n"); System.exit(0);
}
}
public void windowsClosing(WindowEvent e){
System.out.println("聊天程序已经关闭,再见\n");
System.exit(0);
}
public void keyPressed(KeyEvent e) {
if(e.getSource()==str_send){
if(e.getKeyChar()==KeyEvent.VK_ENTER){
sendMessage();
}
}
}
//主函数
public static void main(String args[]){
Serverapp_UDP app=new Serverapp_UDP();
app.display();
app.receiveMessage();
}
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
}
2.建立客户端程序Clientapp_UDP.java,实现客户端与服务之间的通信。
package talk;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class Clientapp_UDP extends WindowAdapter implements ActionListener,KeyListener{ TextField str_send;
Label label;
TextArea msg;
Button send,exit;
Panel p1;
DatagramSocket receiveSocket,sendSocket;
DatagramPacket receivePacket,sendPacket;
public void display(){
Frame f=new Frame("在线聊天——客户端");
f.setSize(400,350);
f.setLocation(100,100);
f.setBackground(Color.red);
p1=new Panel();
f.add(p1,"South");
msg=new TextArea();
msg.setSize(100,250);
msg.setBackground(Color.white);
msg.setEditable(false);
f.add(msg);
label=new Label("发送消息");
p1.add(label);
str_send=new TextField(20);
p1.add(str_send);
str_send.addKeyListener(this);
send=new Button("发送");
p1.add(send);
send.addActionListener(this);
exit=new Button("退出");
p1.add(exit);
exit.addActionListener(this);
f.addWindowListener(this);
f.setVisible(true);
try{
sendSocket=new DatagramSocket(3000);
}catch(IOException e){
msg.append(e+"\n");
}
}
public void receiveMessage(){
try {
receiveSocket=new DatagramSocket(3001);
while(true){
byte[] buf=new byte[500];
receivePacket=new DatagramPacket(buf,buf.length);
receiveSocket.receive(receivePacket);
ByteArrayInputStream bin=new ByteArrayInputStream(receivePacket.getData());
BufferedReader reader=new BufferedReader(new InputStreamReader(bin)); msg.append("服务器:"+reader.readLine());
msg.append("\n");
}
} catch (Exception e) {
msg.append(e+"\n");
}
}
public void sendMessage(){
try {
ByteArrayOutputStream bout=new ByteArrayOutputStream();
PrintStream pout=new PrintStream(bout);
pout.print(str_send.getText());
byte buf[]=bout.toByteArray();
sendPacket=new
DatagramPacket(buf,buf.length,InetAddress.getByName("localhost"),3333); sendSocket.send(sendPacket);
msg.append("客户端:"+str_send.getText()+"\n"); str_send.setText("");
} catch (Exception err) {
msg.append(err+"\n");
}
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==send){
sendMessage();
}
if(e.getSource()==exit){
System.out.println("聊天程序已经关闭,再见!\n"); System.exit(0);
}
}
public void windowsClosing(WindowEvent e){
System.out.println("聊天程序已经关闭,再见\n");
System.exit(0);
}
public void keyPressed(KeyEvent e) {
if(e.getSource()==str_send){
if(e.getKeyChar()==KeyEvent.VK_ENTER){
sendMessage();
}
}
}
public static void main(String[] args) {
Clientapp_UDP client=new Clientapp_UDP();
client.display();
client.receiveMessage();
}
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
} public void keyTyped(KeyEvent arg0) { // TODO Auto-generated method stub }
实验六 利用JavaMail收发电子邮件(2学时)
1、实验目的:
(1)掌握基于UDP协议的数据报套接字的概念与应用
(2)掌握DatagramSocket和DatagramPacket的概念与应用
(3) 掌握基于UDP协议的C/S模式的编程应用
2、基本要求:
(1)注意自始至终贯彻课程中所介绍程序设计风格,养成良好的编程习惯。
(2)独立完成所布置习题。
(3)为保证尽量在统一安排的上机时间内编译运行通过程序,应事先设计好程序。
(4)认真完成每次实验,并写出实验报告。
3、实验内容和步骤:
本实验分成两部分,一部分是利用JavaMail实现发送带SMTP身份认证的E-mail电子邮件,一部分利用JavaMail接收电子邮件。
1) 建立JAVA项目javamail,在该项目新建类Au_SendMail.java,利用该类实现从,该邮箱密码为pm123456,向自己的个人邮箱发送一封邮
件,sohu的smtp服务器地址为:,端口为25;登录sohu的smtp
服务器时必须采用带身份验证的方式进行登陆。
import java.util.Properties;
import java.util.*;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.*;import javax.activation.*;
public class Au_SendMail {
public static void main(String[] args) throws Exception{
String from="wlbcmail@sohu.com";
String to="wlbcmail@sina.com";//该变量定义电子邮件接收者,如果要将邮件发送到自己的账户,就必须将此处修改为用于接收的电子邮件地址
EmailAuthenticator auth=new EmailAuthenticator("wlbcmail@sohu.com" ,"pm123456"); Properties props =System.getProperties();
props.put("mail.smtp.host", "");
props.put("mail.smtp.auth", "true");
Session session = Session.getInstance(props,(Authenticator)auth);
//session.setDebug(true);
MimeMessage msg=new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); msg.setSubject("我是主题Subject");
String s="我是邮件发送正文 email content";
msg.setText(s);
Transport transport = session.getTransport("smtp");
transport.connect("",25,"wlbcmail@sohu.com", "pm123456"); transport.sendMessage(msg,msg.getAllRecipients());
transport.close();
System.out.print("ok");
}
}
class EmailAuthenticator extends Authenticator{
private String m_username;
private String m_userpass;
EmailAuthenticator(String username,String userpass){
super();
m_username=username;
m_userpass=userpass;
}
public PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(m_username,m_userpass);
}
}
2) 在JAVA项目中建立类ReceivedMail.java,利用该类实现读取邮箱中的邮件,该邮箱密码为pm123456,pop3服务器地址
为,pop3端口号为110。
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.*;
public class ReceivedMail {
public static void main(String[] args) {
String pop3="";
String user="wlbcmail@sina.com";
String pass="pm123456";
try {
Properties props=System.getProperties();
Session session=Session.getInstance(props,null);
Store store=session.getStore("pop3");
store.connect(pop3, user, pass);
Folder folder=store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
Message msg[]=folder.getMessages();
for(int i=0;i<msg.length;i++){
System.out.println("From:"+msg[i].getFrom()[0]);
System.out.println("Subject:"+msg[i].getSubject()); if(((msg[i].getFrom()[0]).toString()).equalsIgnoreCase("wlbcmail@sina.com")){
String s;
BufferedReader in=new BufferedReader(new InputStreamReader(msg[i].getInpu tStream()));
System.out.println("-------Mail Text---------");
while((s=in.readLine())!=null){
System.out.println(s);
}
in.close();
}
}
folder.close(true);
store.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
网络编程课程设计报告题目姓名学院专业班级学号指导教师基于Linux网络聊天室的设计陈佳悦陈雄兰信息科学技术学院网络工程网络工程10…
目录1需求分析211电子商城网站的目的和意义212网站功能分析22电子商城网站的设计221功能模块设计222数据库设计43电子商城…
实验报告课程名称指导教师实验日期院系专业班级实验地点学生姓名学号同组人实验项目名称一实验目的和要求一实验目的自写二实验要求自写1按…
Java网络程序设计实验五JDBC班级姓名学号日期20xx68实验五JDBC一实验目的1掌握SQL语句和MYSQL数据库操作命令2…
20xx年秋季学期计算机网络编程实验报告班级计121班学号12101020xx8姓名刘杰总成绩评语指导教师签字日期实验一登陆页面及…
嵌入式实验报告题目linux串口和网络编程一实验目的1强化本学期所学的相关的内容2掌握串口相关设置3强化基于TCP网络传输的三次握…
实验3计算机网络实验网络编程1一实验目的1熟悉和掌握网络编程的基本方法和步骤2进一步理解clientserver交互模式3加深学生…
河南师范大学设计性实验报告Linux网络编程实验河南师范大学综合性、设计性实验项目简介学院名称(公章):软件学院20##-20##…
网络编程实验报告指导老师姓名学号班级实验题目网络文件传输实验目的了解网络文件传输的方法了解FTP协议基础学习使用WinSock实现…
实验3计算机网络实验网络编程1一实验目的1熟悉和掌握网络编程的基本方法和步骤2进一步理解clientserver交互模式3加深学生…
华北科技学院计算机系综合性实验实验报告课程名称网络编程实验学期20xx至20xx学年第1学期学生所在系部计算机系年级09级专业班级…