java用return编写阶乘的加法_Jsp实现简单登录、注册、以及简单计算等功能

Jsp老师布置的一个作业,提供了几个题目,让我们用Jsp实现一些简单的功能,新手上路,做的比较菜,如果大家有需要的欢迎大家浏览,如果觉得我的代码里面有什么错误清大家指正,感谢!

目录

一、登录界面

1c15c2777131fb073c17327010189dbc.png

主要是三块:1、登录界面;2、验证码部分;3、LoginServlet判断用户名密码是否正确。

完整代码如下:

login.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

登录界面

if(session.getAttribute("count")==null) {

session.setAttribute("count", 0);

application.setAttribute("flag", 0);

}

Cookie[] cookies = request.getCookies();

int flag;

try {

flag = (int)application.getAttribute("flag");

}catch(Exception e) {

flag = 0;

}

if(flag == 1)

{

String cookieName = (String)session.getAttribute("cookieName");

for(Cookie user :cookies) {

if(user.getName().equals(cookieName)) {

response.sendRedirect(request.getContextPath()+"/sucLogin.jsp?userName="+cookieName);

}

}

}

else {

%>

欢迎使用

用户名:
密     码:
验证码:

validateCode.jsp

if(request.getAttribute("message")!= null){

out.print(request.getAttribute("message"));

}

%>

validateCode.jsp

int width = 60;

int height = 20;

BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);//创建图片

Graphics grap = image.getGraphics();

Random random = new Random();

// 创建背景颜色

grap.setColor(new Color(random.nextInt(50)+200,random.nextInt(50)+200,random.nextInt(50)+200));

grap.fillRect(0, 0, width, height);

// 画出边界

grap.setColor(Color.black);

grap.drawRect(0, 0, width-1, height-1);

String key = "";// 存放生成随机4位验证码

for(int i=0;i<4;i++)

key = key + random.nextInt(10);

//制作干扰

for (int i=0; i<5; i++) {

int x1 = random.nextInt(width);

int x2 = random.nextInt(width);

int y1 = random.nextInt(height);

int y2 = random.nextInt(height);

grap.drawLine(x1, y1, x2, y2);

}

session.setAttribute("key", key);//将验证码存储到session中

grap.setColor(new Color(0, 100, 0));

grap.setFont(new Font("Candara", Font.BOLD, 24));

grap.drawString(key, 8, 16);

grap.dispose();

response.setContentType("image/jpeg");

out.clear();

out = pageContext.pushBody();

OutputStream strm = response.getOutputStream();

ImageIO.write(image, "jpeg", strm);

strm.close();

%>

LoginServlet.java(包:Servlet)

package Servlet;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.Cookie;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

this.doPost(req, resp);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String userName = request.getParameter("userName");//接收用户名

String passWord = request.getParameter("passWord");//接收密码

String validateCode = request.getParameter("validateCode");//接收验证码

//默认的初始账号

String myUser1 = "admin";

String myPassword1 = "123abc";

//判断账号密码是否正确

if((userName.equals(myUser1)&&passWord.equals(myPassword1)) ) {//判断默认账号

if(validateCode.equals((String)request.getSession().getAttribute("key"))) {

Cookie cookie = new Cookie(userName, passWord);

response.addCookie(cookie);

response.sendRedirect(request.getContextPath()+"/sucLogin.jsp?userName="+userName);

return;

}

else {

request.setAttribute("message", "验证码输入错误,请重新输入
");

request.getRequestDispatcher("/login.jsp").forward(request, response);

return;

}

}

else {

int count = (int)request.getSession().getAttribute("count");//接收注册的用户数量

String[][] user = null;

if(count!=0) {//接收所有注册的用户的账号和密码

user = new String[count][2];

for(int i=0;i

user[i][0] = (String)request.getSession().getAttribute("registerUserName"+i);

user[i][1] = (String)request.getSession().getAttribute("registerPassword"+i);

}

}

if(count!=0) {//判断注册账号

for(int i=0;i

if(userName.equals(user[i][0])&&passWord.equals(user[i][1])) {

if(validateCode.equals((String)request.getSession().getAttribute("key"))) {

Cookie cookie = new Cookie(userName, passWord);

response.addCookie(cookie);

response.sendRedirect(request.getContextPath()+"/sucLogin.jsp?userName="+userName);

return;

}

else {

request.setAttribute("message", "验证码输入错误,请重新输入
");

request.getRequestDispatcher("/login.jsp").forward(request, response);

return;

}

}

}

}

request.setAttribute("message", "账号或密码错误,请重新输入
");

request.getRequestDispatcher("/login.jsp").forward(request, response);

}

}

}

LoginServlet的web.xml配置

LoginServlet

Servlet.LoginServlet

LoginServlet

/LoginServlet

二、用户注册

11889464c7bab422ed755616529faaa2.png

这一部分类似于登录页面的设计主要的是两块:1、注册界面;2、注册信息是否正确的判断。

register.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

注册

注册

用户名:
设置密码:
再次输入密码:
验证码:

validateCode.jsp

if(request.getAttribute("message")!= null){

out.print(request.getAttribute("message"));

}

%>

返回登录界面

registerLoading.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

加载中

正在加载中,请耐心等待......

String userName = request.getParameter("regUserName");//接收注册的用户名

String passWord = request.getParameter("passWord");//接收输入的密码

String rePassWord = request.getParameter("rePassWord");//接收再次输入的密码

String validateCode = request.getParameter("validateCode");//接收输入的验证码

String key = (String)request.getSession().getAttribute("key");//接收正确的验证码输入

if(validateCode.equals(key)) {

if(!rePassWord.equals(passWord)) {

request.setAttribute("message", "两遍密码不一致,请重新输入
");

request.getRequestDispatcher("/register.jsp").forward(request, response);

}

else if(userName.equals("admin")) {

request.setAttribute("message", "该用户名已被注册,请重新输入
");

request.getRequestDispatcher("/register.jsp").forward(request, response);

}

else {

int count = (int)request.getSession().getAttribute("count");//接收注册的用户数量

String[] user = null;

if(count!=0) {//接收所有注册的用户的账号和密码

user = new String[count];

for(int i=0;i

user[i] = (String)request.getSession().getAttribute("registerUserName"+i);

}

}

for(int i=0;i

if(userName.equals(user[i])) {

request.setAttribute("message", "该用户名已被注册,请重新输入
");

request.getRequestDispatcher("/register.jsp").forward(request, response);

}

}

request.setAttribute("message", "恭喜您注册成功!
");

session.setAttribute("registerUserName"+count, userName);//上传账号

session.setAttribute("registerPassword"+count, passWord);//上传密码

session.setAttribute("count", count+1);//注册用户数+1

request.getRequestDispatcher("/login.jsp").forward(request, response);

}

}

else {

request.setAttribute("message", "验证码输入错误,请重新输入
");

request.getRequestDispatcher("/register.jsp").forward(request, response);

}

%>

三、主要可进行的操作

1、操作选择界面

做了一个操作选择界面,总共实现了如下的几个操作:

37ac9da0e1561bd7d0176d8c5590c01a.png

sucLogin.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

功能选择

尊敬的

String userName = request.getParameter("userName");

if(userName==null) {

userName = (String)session.getAttribute("cookieName");

}

out.print(userName);

%>

,您好!

if((int)application.getAttribute("flag") == 0){

session.setAttribute("cookieName", userName);

application.setAttribute("flag", 1);

}

%>

请选择要进行的操作:
查看账号密码(Cookie)
选择选修的课程
计算n的阶乘
计算器(加减乘除)
计算x的y次方


退出登录

2、查看账号密码(Cookie)

f6e5e12dec68aaeee67e632a60a9e6ff.png

getCookies.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

Cookies表单

Cookie[] cookies = request.getCookies();

String userName = (String)session.getAttribute("cookieName");

for(Cookie user :cookies) {

if(user.getName()!=null && user.getValue()!=null && user.getName().equals(userName))

out.println("
用户名:"+user.getName()+",密码:"+user.getValue()+"
");

}

%>

返  回

3、选择选修课程

共两块:1、输入和选择;2、显示

a4e98cff9b41e09fdb20588f5257c17c.png

courseSelection.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

Course Selection
真实姓名:
性     别:

所在系部:

信息系经管系

文法系资土系

机电系

所选课程:

高等数学

大学英语

JSP程序设计

Java程序设计

计算机网络

918aa5ca7e0a3c155f53e3aed3d26c71.png

showCourses.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

选课信息
真实姓名:
性     别:
所在系部:
所选课程:

if(courses!=null) {

for(int i=0, length=courses.length;i

if(courses[i]!=null) {

out.print(courses[i]+"
");

}

}

}

%>

返  回

4、计算n的阶乘

两部分:1、输入;2、显示

9102d7e12255de71ecbe68ea5f8d18ad.png

factorialInput.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

计算阶乘
请输入要计算的数:

8b414d4067bd9c79b5c85ecfa6f74dbe.png

FactorialServlet.java(包:Servlet)

package Servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns="/FactorialServlet")

public class FactorialServlet extends HttpServlet{

private static final long serialVersionUID = 1L;

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// TODO Auto-generated method stub

doPost(req, resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

String num = req.getParameter("num");

int number = Integer.parseInt(num);

int factorial = 1;

for(int i=2;i<=number;i++)

factorial*=i;

resp.setContentType("text/html;charset=utf-8");

req.setCharacterEncoding("utf-8");

PrintWriter out = resp.getWriter();

out.println("");

out.println("

");

out.print("

阶乘结果");

out.println("");

out.println("

");

out.println("

");

out.println("

");

out.println("
"+number+"的阶乘为:"+factorial+"
");

out.println("");

out.println("
返   回
");

out.println("

");

out.println("");

out.println("");

out.flush();

}

}

5、计算器(加减乘除)

两部分:1、输入;2、显示

f863cfc45244b34a5a1a17355cc96dfe.png

calculatorInput.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

计算器
请输入要计算的式子:

注:仅能运算加(+)、减(-)、乘(*)、除(/),且不能有括号。

975bc21fb0446f56c24b49be55132ead.png

CalculateServlet.java(包:Servlet)

package Servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class CalculateServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

this.doPost(req, resp);

}

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

String formula = req.getParameter("formula");//接收需要计算的公式

int j = 0;

while(formula.indexOf("/")!=-1 || formula.indexOf("*")!=-1) {//因为乘除优先级高,所以首先对所有的'*'和'/'进行处理

if(formula.indexOf("/")!=-1 && formula.indexOf("*")!=-1)

j = Math.min(formula.indexOf("/"),formula.indexOf("*"));//乘除同级别,从左到右顺序计算,谁在前先算谁

else if(formula.indexOf("/")!=-1 && formula.indexOf("*")==-1)

j = formula.indexOf("/");

else if(formula.indexOf("/")==-1 && formula.indexOf("*")!=-1)

j = formula.indexOf("*");

if(j!=-1) {//在找到一个乘号或者一个除号的时候

String tmp1 = "";

int k = 1;

while(j-k>=0 && formula.charAt(j-k)>='0' && formula.charAt(j-k)<='9') {//找到符号前面的数,j-k是为防止检索到-1越界

tmp1 = formula.charAt(j-k)+tmp1;

k++;

}

String tmp2 = "";

k = 1;

while(j+k='0' && formula.charAt(j+k)<='9') {//找到符号后面的数,j+k是为防止检索到str.length()越界

tmp2 += formula.charAt(j+k);

k++;

}

//用计算的结果替换原来乘法或者除法的运算

if(formula.charAt(j)=='/') {

String restr = (Integer.parseInt(tmp1) / Integer.parseInt(tmp2))+"";

formula = formula.replaceAll(tmp1+formula.charAt(j)+tmp2, restr);

}

else if(formula.charAt(j)=='*') {

String newFormula = (Integer.parseInt(tmp1) * Integer.parseInt(tmp2))+"";

String oldFormula = tmp1+formula.charAt(j)+tmp2;

formula = formula.replace(oldFormula, newFormula);

}

}

}

//在上面的操作完成后剩下得只有加减法运算,优先级同级顺序运算即可。

int tmp = 0;

int Sum = 0;

char f = '+';//因为Sum=0,第一个操作是Sum一定是加第一个数,所以设符号f为'+'

for(j=0;j

if(formula.charAt(j)>='0' && formula.charAt(j)<='9') {

tmp = tmp*10 + (formula.charAt(j)-'0');

}

else {//在找到下一个符号的时候完成上一个符号的加减操作然后用新找到符号替换原符号

if(f == '+')

Sum += tmp;

else

Sum -= tmp;

f = formula.charAt(j);

tmp = 0;

}

if(j==formula.length()-1) {//Sum +或-最后一个数

if(f == '+')

Sum += tmp;

else

Sum -= tmp;

}

}

//输出结果

resp.setContentType("text/html;charset=utf-8");

req.setCharacterEncoding("utf-8");

PrintWriter out = resp.getWriter();

out.println("");

out.println("

");

out.println("

计算器");

out.println("");

out.println("

");

out.println("

");

out.println("

");

out.println("
"+req.getParameter("formula")+"的结果为:"+Sum+"
");

out.println("");

out.println("
返   回
");

out.println("

");

out.println("");

out.println("");

out.flush();

}

}

CalculateServlet的web.xml配置

CalculateServlet

Servlet.CalculateServlet

CalculateServlet

/CalculateServlet

6、计算x的y次方

两部分:1、输入;2、显示

c8bd850cc5b35d05ec4044e9d53c0197.png

powerInput.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

幂运算
请输入x:请输入y:

9d279d636d1a5b8f1c4f9e1c0adc6791.png

PowerServlet.java(包:Servlet)

package Servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns="/PowerServlet")

public class PowerServlet extends HttpServlet{

private static final long serialVersionUID = 1L;

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

// TODO Auto-generated method stub

doPost(req, resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

String X = req.getParameter("x");

String Y = req.getParameter("y");

int x = Integer.parseInt(X);

int y = Integer.parseInt(Y);

int result = (int)Math.pow(x, y);

resp.setContentType("text/html;charset=utf-8");

req.setCharacterEncoding("utf-8");

PrintWriter out = resp.getWriter();

out.println("");

out.println("

");

out.print("

幂运算结果");

out.println("");

out.println("

");

out.println("

");

out.println("

");

out.println("
"+x+""+y+"的结果为:"+result+"
");

out.println("");

out.println("
返   回
");

out.println("

");

out.println("");

out.println("");

out.flush();

}

}

四、结语

刚学了Jsp大概一个月的时间,上课有些时候听不太懂,其实还是有很多的东西不太明白。总的来说这是一次不错的经历吧,刚刚开始的时候的确有很多的东西不会写,页面跳转也一直出问题,整个项目完整做完大概用了接近5天的时间,主要大多数的时间都花在了怎么写cookie,就是实现如果前面登陆过,并未在操作选择界面点击退出登录,那么在浏览器中再次打开登录界面时会实现自动的登录。可能写的很多东西并不符合现在真正Jsp开发的习惯写法,说实在的没有什么做项目的经验,有机会的话还是希望再有这样的机会吧。

五、参考文章

b739ec46bb5c46d9c0aa4ce35ba1ea56.png

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[Jsp实现简单登录、注册、以及简单计算等功能]http://www.zyiz.net/tech/detail-93432.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值